Turbo-Pascal 3.01A - Kann eine Datei nicht lesen

  • Hallo zusammen,


    ich bin mir nicht sicher, ob ich mit meinem Anliege hier richtig bin.

    Ich versuch's einfach mal.


    Probleme habe ich mit einem recht einfachen Turbo-Pascal-Programm unter CP/M 2.2 (auf RunCPM) in der Turbo-Pascal Version 3.01A.

    Der Code schaut wie folgt aus.


    Es soll also die Datei 'text.txt' gelesen werden, die sich im selben Verzeichnis wie auch der Quellcode befindet.

    Es erscheint jedoch immer die folgende Fehlermeldung:


    Running

    I/O error 90, PC=0034

    Program aborted

    Searching

    6 lines

    Run-time error position found. Press <ESC>


    Natürlich habe ich das mal unter Turbo-Pascal 7 getestet und es hat funktioniert.

    Ich vermute, dass die Datei nicht gefunden wird.


    Herzlichen Gruß


    Erik

  • Schon mal TEST.TXT anstatt test.txt versucht? - denn MBASIC laedt "intern" auch nur den Filenamen, wenn er casesensitiv passt.

    Evtl. macht dies Turbo-Pascal auch?

    So kann man von der Commandline

    mbasic fractal.bas

    starten, muss aber in MBASIC dann per

    load "FRACTAL.BAS"

    laden.

  • Pascal ist zu strukturiert...


    Ein File of Char ist eine strukturierte Datei, d.h. keine reine ASCII Datei sondern hat zusätzliche Blockmarkierungen um einzelne Daten zu lesen. Meistens verwendet man so etwas um komplexere Datenstrukturen zu schreiben bzw. zu lesen. Pascal erwartet dann diese Markierungen und findet sie nicht.


    Eine reine ASCII Date kann man mit dem Typ Text lesen,

    also die Deklaration ändern in

    f: Text;

    Dann sollte es gehen.


    Zum Verständnis einfach mal ein File of Char mit einem kleinen Programm erstellen und dann mit einem Hex Editor (oder DDT) ansehen.

  • Wie ist CPM 2.2 einzordnen hinsichtlich CPM80/CPM86?

    CP/M80 bzw. CP/M86 ist nur der Hinweis auf die Prozessorarchitektur also ursprünglich auf die Intel 8080 oder 8086.

    CP/M 2.2 ist eine Version der CP/M80 Varianten.

    Guckst Du auch >Hier!<

    Viele Grüße,

    Knut

    :cat2:

  • CP/M 2.2 ist die am häufigsten verwendete CP/M80 Version.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Das passt leider auch nicht. Selber Fehler!

  • Ich habe es jetzt wie folgt abgeändert und file of char durch text ersetzt.

    Der Fehler ist der Gleiche.

  • hi,


    90 - record length mismatch ...

    Was steht denn in der txt file drin? Gibts hier EOL Zeichen? 0x0d oder 0x0d0a ?


    Die Datei wird schon gefunden denke ich, da hier der Error Code 01 wäre ?

    Vielleicht kitzelt das hier...


    von : http://computer-programming-fo…scal/cb72317ba1fa691d.htm

    achso .... und dieses assign statement ... kommt das auch mit file handle klar? wäre es vielleicht gar ein assignFile (f, .... ?

    ... immer locker bleiben ...

  • Hi,

    ich habe aus meinen alten TP3 Archiven etwas in der Art rekonstruiert:

    eventuell läßt sich das ja mit Buffergröße=1 eindampfen

    Code
    var   i:integer;
          a:file;
    
    begin      
     assign(a,'TEXT.TXT');
     reset(a);
     for i:=1 to filesize(a) do
       write(blockread(a,c,1));
     writeln
    end.
  • Es soll also die Datei 'text.txt' gelesen werden, die sich im selben Verzeichnis wie auch der Quellcode befindet.

    Es erscheint jedoch immer die folgende Fehlermeldung:

    Könntest Du bite die Datei "text.txt" hochladen, damit ich das auch ausprobieren kann.


    Danke!


    PAW

  • Hier ist die Textdatei, die ich mit dem Text-Editor TE unter CP/M erstellt habe. Es befinden sich schon merkwürdig viele Steuerzeichen drin.

  • Hier ist die Textdatei, die ich mit dem Text-Editor TE unter CP/M erstellt habe. Es befinden sich schon merkwürdig viele Steuerzeichen drin.

    Danke!


    Zu den "vielen Steuerzeichen" in der Textdatei wäre zu sagen, dass sich bei CP/M keine exakte Längenangabe im Verzeichnis befindet. Es wird nur auf Anzahl der Sektoren eingegrenzt. Aus diesem Grund wird der Rest eines angefangenen Sektors mit dem Steuerzeichen Control-Z (hex 1A) aufgefüllt.


    Habe mit der Datei getestet und bin zu folgendem Ergebnis gekommen:


    Die Version vom Thread #1 mit "var f : file of char;" bringt den angegebenen Fehler. Dieser bezieht sich auf die Quellcodezeile mit "reset(f);".


    Die Version vom Thread #8 mit "var f : text;" funktioniert bei mir einwandfrei, obwohl diese angeblich den gleichen Fehler bringen soll. Sie unterscheidet sich nicht von der Version von retro aus Thread #12, die ja dann funktionierte.


    Das Problem lag offenbar an der Zeile mit der Filedeklaration und möglicherweise an einem fehlerhaften Versuch im Thread #8.


    Grüße


    PAW

  • Ich hab' zu danken!!!

  • Achtung 13MB! :D

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Jetzt habe ich ein vergleichbares Problem mit dem Lesen von Binärdateien, was auch nicht funktioniert. Ich möchte also eine .COM-Datei lesen und ähnlich wie beim Programm DUMP anzeigen lassen.

    Ich würde es mal mit dem BlockRead-Befehl versuchen. Beispiele gibt es im Turbo-Pascal-Handbuch.


    PAW