BASIC; STRING speichern
von dl7ukk » Mo 25. Nov 2019, 00:24Hallo Basic-Programmierer,
mir ist beim Speichern von String's aufgefallen, dass beim Benutzen von
LIST #1,X$
der String auf der Disk/ ATR 10 Zeichen länger ist, als der String im Speicher vom Atari.
Die Ausgabe auf dem Bildschirm war ok. Es werden offenbar bei der Ausgabe mit LIST genau 10 Leerzeichen davor gesetzt.
Zur Veranschaulichung ein kleines Programm.
Man sieht beim Wiedereinlesen der gerade gespeicherten Strings deutlich, daß nunmehr die Zeilen/ Daten -> Strings jeweils 10 Zeichen länger sind. Aber warum und wofür?
Oder mein Fehler?? Falscher Befehl??
Ich habe Alles mehrfach geprüft. Atari-Basic, Turbo-Basic, Basic++, Atari-OS, SPOS, Atari800-Emu, Atari800XL
Workarounds zur Problemlösung habe ich.
* Mit Get & Put die Datei bearbeiten und überflüssige Zeichen rausnehmen
* Vor dem "Benutzen" der Zeilen/ Strings mit A$=A$(10-LEN(A$)) korrigieren
* Alles am PC erledigen.
Vielleicht hat Jemand Lust es auszuprobieren oder kennt eine Lösung.
Bin gespannt wo der Fehler liegt.
Ich habe ein STRING.ATR mit dem PROGRAMM.BAS und den DATEN.LST angehängt
Hintergrund war/ ist die Konvertierung/ Korrektur von Listings.
Gruß
mir ist beim Speichern von String's aufgefallen, dass beim Benutzen von
LIST #1,X$
der String auf der Disk/ ATR 10 Zeichen länger ist, als der String im Speicher vom Atari.
Die Ausgabe auf dem Bildschirm war ok. Es werden offenbar bei der Ausgabe mit LIST genau 10 Leerzeichen davor gesetzt.
Zur Veranschaulichung ein kleines Programm.
- Code: Alles auswählen
5 TRAP 80 Abfangen von EOF
10 DIM A$(20),B$(20) Länge der Strings bestimmen
20 OPEN #1,4,0,"D:DATEN.LST" Öffnen der Daten Eingabe
30 OPEN #2,8,0,"D:OUTPUT.LST" Öffnen der Daten Ausgabe
40 INPUT #1,A$ Einlesen einer Zeile in den A$
50 PRINT A$ Print/ Ausgabe von A$ auf dem Bildschirm
60 PRINT #2,A$ Print/ Ausgabe von A$ auf der Disk/ Atr
70 GOTO 40 Wiederholung bis EOF
80 CLOSE #1 Kanal schließen
90 CLOSE #2 Kanal schließen
100 REM
105 TRAP 199 Abfangen von EOF
110 OPEN #1,4,0,"D:DATEN.LST" Öffnen Original-Daten
120 OPEN #2,4,0,"D:OUTPUT.LST" Öffnen von OUTPUT zum Lesen
130 INPUT #1,A$ Einlesen einer Zeile in den A$
140 PRINT A$;" ";LEN(A$) Ausgabe auf dem Bildschirm von A$ und seiner Länge
150 INPUT #2,B$ Einlesen einer Zeile in den B$
160 PRINT B$;" ";LEN(B$) Ausgabe auf dem Bildschirm von B$ und seiner Länge
170 GOTO 130 Wiederholung bis EOF
199 END Fertig
Man sieht beim Wiedereinlesen der gerade gespeicherten Strings deutlich, daß nunmehr die Zeilen/ Daten -> Strings jeweils 10 Zeichen länger sind. Aber warum und wofür?
Oder mein Fehler?? Falscher Befehl??
Ich habe Alles mehrfach geprüft. Atari-Basic, Turbo-Basic, Basic++, Atari-OS, SPOS, Atari800-Emu, Atari800XL
Workarounds zur Problemlösung habe ich.
* Mit Get & Put die Datei bearbeiten und überflüssige Zeichen rausnehmen
* Vor dem "Benutzen" der Zeilen/ Strings mit A$=A$(10-LEN(A$)) korrigieren
* Alles am PC erledigen.
Vielleicht hat Jemand Lust es auszuprobieren oder kennt eine Lösung.
Bin gespannt wo der Fehler liegt.
Ich habe ein STRING.ATR mit dem PROGRAMM.BAS und den DATEN.LST angehängt
Hintergrund war/ ist die Konvertierung/ Korrektur von Listings.
Gruß