| |
|
|
- Seite 1 - |
|
| Die Datei text.txt möchte ich byteweise auslesen und dann sollen die Daten wie unten als Textdatei hergestellt bzw gesetzt werden. Ich möchte aus der Bytedatei Datazeilen erstellen. Als erstes die Länge und dann die Werte.
Mit Input möchte ich als erstes abfragen : 1. Name der Datei die eingelesen wird 2. Datazeilenanfang
1000 DATA 22 1010 DATA 169,32,133,250,169,3,133,251,160,0, 1020 DATA 177,250,168,177,250,32,237,253,136,208, 1030 DATA 248,96,
|
|
|
| |
|
|
|
| |
|
- Seite 1 - |
|
| Wie erfrage ich LOF, welches ja in Profan nicht gibt?
mfg |
|
|
| |
|
|
|
| |
|
| |
|
|
|
| Wenn ich einen Namen eingebe der Falsch ist als Input zum Einlesen, müsste das Programm eigentlich beendet werden bzw nach waitkey springen. Tut es aber nicht, sondern geht weiter, wo ich den Ausgabenamen eingeben kann.
Woran liegt das?
mfg KompilierenMarkierenSeparierendeclare a%, data_laenge%, data_anfang%,datei_laenge%,name_in$,name_out$
Window 20,20-400,400
Print Dateiname_in : ;
input name_in$
Assign #1,name_in$
OpenRW #1
If %IOResult
Print Datei kann nicht geöffnet werden.
else
Print Dateiname_out: ;
input name_out$
datei_laenge% = GetFileSize(#1)
Assign #2,name_out$
Rewrite #2
data_anfang%=1000
print #2,str$(data_anfang%); DATA ;datei_laenge%
data_laenge%=0
data_anfang%=data_anfang%+10
print #2,str$(data_anfang%); DATA ;
WhileLoop datei_laenge%
if data_laenge% < 10
a%=GetByte(#1)
print #2,str$(a%);,;
else
data_laenge%=0
data_anfang%=data_anfang%+10
print #2
print #2,str$(data_anfang%); DATA ;
a%=GetByte(#1)
print #2,str$(a%);,;
endif
data_laenge%=data_laenge%+1
EndWhile
Close #1
Close #2
endif
waitkey
end
|
|
|
| |
|
|
|
Paul Glatz | Du musst dem Programm auch sagen dass es Beenden soll! |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
| If %IOResult Print Datei kann nicht geöffnet werden. else ..... ..... endif waitkey
Wenn die Datei nicht da ist müsste es eigentlich nach Waitkey springen und nicht hinter Else den 2. Namen einlesen. |
|
|
| |
|
|
|
E.T. | Lt. Quelltext 2 Posts vorher:
... INPUT ... Fragt den Namen der Datei ab (z.B. xyz.ab) APPEND #1,... Weist Datei xyz.ab die Dateinummer 1 zu OPENRW #1 ... Öffnet oder erzeugt bei nicht vorhandensein Datei Nummer 1 (xyz.ab) siehe Hilfe ...
Ist m.E. korrekt, %ioresult wird nicht gesetzt (wenn Datei geöffnet oder erzeugt werden kann), und folglich wird zu ...else gesprungen .
Wenn du eine bereits existierende Datei verwenden willst, empfehle ich @LoadFile$(S1,S2) , oder mittels @FileExists(S) überprüfen, ob die Datei da ist |
|
|
| Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 09.05.2009 ▲ |
|
|
|
|
| Jup, eindeutige Aussage. Haut wunderbar hin.
Die Textverarbeitung in Profan ist allererst gewöhnungsbedürftig gegenüber dem Standart.
mfg |
|
|
| |
|
|
|
RGH | 2peter Bierbach, Beitrag=52245, Zeitpunkt=09.05.2009
Jup, eindeutige Aussage. Haut wunderbar hin.
Die Textverarbeitung in Profan ist allererst gewöhnungsbedürftig gegenüber dem Standart.
mfg
Gegenüber welchem Standard? Was die Dateibearbeitung betrifft, lehnt sich XProfan sehr eng an den Pascal-Standard (TurboPascal, ObjectPascal, Delphi, etc.) an.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 09.05.2009 ▲ |
|
|
|
|
| TurboPascal, ObjectPascal
Darum ja.
Wenn du eof drin hast, warum nimmst du nicht lof mit rein....usw.
mfg |
|
|
| |
|
|
|
E.T. | ...wenn ich jetzt so drüber nachdenke... ??? Was hat Bytes einlesen mit Textverarbeiung zu tun ??? Wenn ich eine reine Text-Datei einlesen will (z.B. so eine Art .ini, Deine .txt ist ja nix anderes), dann mach ich das immer zeilenweise, nicht Byte für Byte ... |
|
|
| Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 10.05.2009 ▲ |
|
|
|
|
Dietmar Horn | Das hatte ich mich auch gleich gefragt. Aber weil Jemand offensichtlich noch nicht mal mit dem xprofanen Assign, Rewrite, Append, usw. umzugehen vermag, hatte ich mir ein Antwort-Posting bisher verkniffen ...
Gruß Dietmar |
|
|
| Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 10.05.2009 ▲ |
|
|
|
|
| Dietmar ich merk du hast den Sachverstand nicht dazu , 40 jahre prägen ein.
Ich habe Apple IIe und Plus4 ,die ich in Basic programmiere. Weiterhin habe ich einen guten Assembler (6502) mit dem ich kleine Asm-Routinen schreibe und die möchte ich als Datazeilen einlesen und dann von Basic des Apple IIe oder Plus4 mit Call aufrufen.
Was macht nun mein Programm Dietmar, es macht folgendes : Ich schreibe das ASM-Programm : KompilierenMarkierenSeparieren Dann wird es compiliert und es entsteht eine Bin-Datei. Diese Bin-Datei wandle ich jetzt mit dem Programm um in eine Textdatei, die dann so aussieht : KompilierenMarkierenSeparieren1000 DATA 38
1010 DATA 76,3,96,169,0,133,216,169,32,133,
1020 DATA 217,169,0,133,218,169,64,133,219,162,
1030 DATA 32,160,0,177,216,145,218,200,208,249,
1040 DATA 230,217,230,219,202,208,242,96,
Und oh wunder, jetzt hänge ich die Datei an das Basic, lese die 1. Zahl ein, die die länge vorgibt und dann die anderen Werte. Und schwupps habe ich meine Daten für einen Basicprogrammierer aufbereitet.
Hast du das verstanden als Leerer oder nicht, Dietmar?
Das ist übrigens das Profanprogram: KompilierenMarkierenSeparierendeclare a%, data_laenge%, data_anfang%,datei_laenge%,name_in$,name_out$
Window 20,20-400,400
Print Dateiname_in : ;
input name_in$
if FileExists(name_in$)=0
Print geht nisch...
else
Assign #1,name_in$
OpenRW #1
datei_laenge% = GetFileSize(#1)
Print Dateiname_out: ;
input name_out$
Assign #2,name_out$
Rewrite #2
data_anfang%=1000
print #2,str$(data_anfang%); DATA ;datei_laenge%
data_laenge%=0
data_anfang%=data_anfang%+10
print #2,str$(data_anfang%); DATA ;
WhileLoop datei_laenge%
if data_laenge% < 10
a%=GetByte(#1)
print #2,str$(a%);,;
else
data_laenge%=0
data_anfang%=data_anfang%+10
print #2
print #2,str$(data_anfang%); DATA ;
a%=GetByte(#1)
print #2,str$(a%);,;
endif
data_laenge%=data_laenge%+1
EndWhile
Close #1
Close #2
print fertisch...
endif
waitkey
end
mfg |
|
|
| |
|
|