Textfile *.txt Bearbeiten
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Textfile *.txt Bearbeiten
Auf http://www.purearea.net/pb/german/index.htm auf Tutorials klicken, sind aber teilweise veraltet, ansonsten
die Beispiele im Examples-Ordner von PB sollten eigentlich für einen Einstieg reichen, wenn man sich da durcharbeitet und probiert, ändert, hilfe guckt usw.
Gruß
Thomas
die Beispiele im Examples-Ordner von PB sollten eigentlich für einen Einstieg reichen, wenn man sich da durcharbeitet und probiert, ändert, hilfe guckt usw.
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Textfile *.txt Bearbeiten
Hallo Thomas,
danke für deinen Tip, werde mich mal reinknien!!!
Muss leider weg, ansonsten besten Dank für eure Tips.
Gruss .............. Velindos
danke für deinen Tip, werde mich mal reinknien!!!
Muss leider weg, ansonsten besten Dank für eure Tips.
Gruss .............. Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Textfile *.txt Bearbeiten
Hallo Leute,
habe ein Problem beim Speichern. Möchte die Daten wieder im UTF-16LE mit Signatur (BOM) speichern. Funktioniert aber nicht richtig.
Gruss ................... Velindos
habe ein Problem beim Speichern. Möchte die Daten wieder im UTF-16LE mit Signatur (BOM) speichern. Funktioniert aber nicht richtig.
Code: Alles auswählen
;Laden
Procedure Laden()
; Datei UTF-16LE mit Signatur (BOM) gespeichert.
Define Zeile.s
Define FF
Define Quit
Define WWE
Dim Ausgabe.s(999)
FF = ReadFile(#PB_Any, "c:\install.txt") ; Pfad anpassen!
a=0
If FF
While Not Eof(FF) ; Wir öffnen die Datei pbtutorial.txt zum Lesen
Zeile=Str(a):Zeile = Zeile+" "
text$(a) = ReadString(FF, #PB_Unicode); Wir lesen die Zeichen auf Zeile
Software$(a)= StringField(text$(a), 1, #TAB$) ;Software
Hersteller$(a)= StringField(text$(a), 2, #TAB$) ;Hersteller
Datum$(a)= StringField(text$(a), 3, #TAB$) ;Datum
Umfang$(a)= StringField(text$(a), 4, #TAB$) ;Umfang
Version$(a)= StringField(text$(a), 5, #TAB$) ;Version
text$(a) = ReplaceString(text$(a), #TAB$, #LF$) ; Vorkommen des 'SuchString$'zu finden
Debug StringField(text$(a), 1, " ") ;Zeigen uns Debuger an
;[1]Ausgabe(1) = AddGadgetItem(#myListIconGadget, 0, Text$ [, ImageID [, Flags]])
;AddGadgetItem(4,-1,text$(a))
AddGadgetItem(4,-1,Zeile+Software$(a))
anzahl = a
a=a+1;zähler erhöhen
Wend
;MessageRequester("Text","Text: "+Ausgabe(1),0) ; Nun zeigen wir die Zeichen an
CloseFile(FF)
; Wir schließen die Datei. Was jedoch nicht unbedingt
Else ; Wenn die Datei nicht gefunden wurde
MessageRequester("Fehler","Konnte die Datei nicht öffnen.",0) ; Fehlermeldung
EndIf
EndProcedure
;Speichern
Procedure Speichern()
;UTF-16LE mit Signatur (BOM) gespeichert.
If OpenFile(1,"C:\Daten1.txt")
;WriteStringN(1,Str(anzahl))
For a=0 To anzahl
WriteStringN(1,text$(a))
Next
CloseFile(1)
StatusBarText(0,0,"Daten erfolgreich gespeichert "+FormatDate("%hh:%ii:%ss", Date()),#PB_StatusBar_Center )
EndIf
EndProcedure
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Textfile *.txt Bearbeiten
es ist immer hilfreich, wenn Du in Zukunft beschreibst,Velindos hat geschrieben:Funktioniert aber nicht richtig.
was nicht richtig funktioniert.
ToDo für Dich: WriteStringFormat() und WriteStringN() in
der Hilfe nachschauen. Da steht ziemlich genau, was zu tun ist.
Noch ein kleiner Tipp: Nimm anstelle von OpenFile() lieber CreateFile(),
um im Vorfeld potentielle Probleme zu vermeiden.
Grüße ... Kiffi
a²+b²=mc²
Re: Textfile *.txt Bearbeiten
Hallo Kiffi,
danke für die Hilfe, wollte nur meine potentielle Schwäche darstellen. Werde mich ranmachen!
Gruss
Velindos
danke für die Hilfe, wollte nur meine potentielle Schwäche darstellen. Werde mich ranmachen!
Gruss

Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Textfile *.txt Bearbeiten
Hallo Kiffi,
ist mir gerade noch eingefallen, was meine Thomas mit:
Leider hat Kiffi vergessen das "ReadStringFormat()" mit einzubauen, auch wenn das Format bereits bekannt ist,
und sei es nur, das der Dateizeiger sich hinter den BOM bewegt.
Keine Ahnung wie ich das einbaue????????
Gruss
Veldindos
ist mir gerade noch eingefallen, was meine Thomas mit:
Leider hat Kiffi vergessen das "ReadStringFormat()" mit einzubauen, auch wenn das Format bereits bekannt ist,
und sei es nur, das der Dateizeiger sich hinter den BOM bewegt.
Keine Ahnung wie ich das einbaue????????
Gruss

Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Textfile *.txt Bearbeiten
Hallo,
habe Procedure für Speichern fertig. Sie speichert auch, wenn ich aber die gespeicherte Datei mit meiner Prozedur einlesen will kommt die Meldung "Konnte Datei nicht öffnen", obwohl ich Sie im Notpad ohne Probleme öffnen kann????
Kann mir wer helfen!!!!!
Gruss
Velindos
habe Procedure für Speichern fertig. Sie speichert auch, wenn ich aber die gespeicherte Datei mit meiner Prozedur einlesen will kommt die Meldung "Konnte Datei nicht öffnen", obwohl ich Sie im Notpad ohne Probleme öffnen kann????
Kann mir wer helfen!!!!!
Code: Alles auswählen
Procedure Laden()
; Datei UTF-16LE mit Signatur (BOM) gespeichert.
Define Zeile.s
Define FF
Define Quit
Define WWE
Dim Ausgabe.s(999)
;FF = ReadFile(#PB_Any, "c:\install.txt") ; Pfad anpassen!
FF = ReadFile(#PB_Any, "c:\Datei0.txt") ; Pfad anpassen!
a=0
If FF
While Not Eof(FF) ; Wir öffnen die Datei pbtutorial.txt zum Lesen
Zeile=Str(a):Zeile = Zeile+" "
text$(a) = ReadString(FF, #PB_Unicode); Wir lesen die Zeichen auf Zeile
Software$(a)= StringField(text$(a), 1, #TAB$) ;Software
Hersteller$(a)= StringField(text$(a), 2, #TAB$) ;Hersteller
Datum$(a)= StringField(text$(a), 3, #TAB$) ;Datum
Umfang$(a)= StringField(text$(a), 4, #TAB$) ;Umfang
Version$(a)= StringField(text$(a), 5, #TAB$) ;Version
text$(a) = ReplaceString(text$(a), #TAB$, #LF$) ; Vorkommen des 'SuchString$'zu finden
Debug StringField(text$(a), 1, " ") ;Zeigen uns Debuger an
;[1]Ausgabe(1) = AddGadgetItem(#myListIconGadget, 0, Text$ [, ImageID [, Flags]])
;AddGadgetItem(4,-1,text$(a))
AddGadgetItem(4,-1,Zeile+Software$(a))
anzahl = a
a=a+1;zähler erhöhen
Wend
;MessageRequester("Text","Text: "+Ausgabe(1),0) ; Nun zeigen wir die Zeichen an
CloseFile(FF)
; Wir schließen die Datei. Was jedoch nicht unbedingt
Else ; Wenn die Datei nicht gefunden wurde
MessageRequester("Fehler","Konnte die Datei nicht öffnen.",0) ; Fehlermeldung
EndIf
EndProcedure
;Speichern
Procedure Speichern()
;UTF-16LE mit Signatur (BOM) gespeichert.
If CreateFile(1,"C:\Daten0.txt") ;[1]OpenFile(#PB_Any,"Daten.txt")
;WriteStringN(1 ,Str(anzahl), #PB_Unicode) ;[1]WriteStringN(1,Str(anzahl))
For a=0 To anzahl
speicher$=Software$(a)+#TAB$+Hersteller$(a)+#TAB$+Datum$(a)+#TAB$+Umfang$(a)+#TAB$+Version$+#TAB$+#LF$
WriteStringN(1,speicher$, #PB_Unicode)
WriteStringFormat(1, #PB_Unicode)
Next
CloseFile(1)
StatusBarText(0,0,"Daten erfolgreich gespeichert "+FormatDate("%hh:%ii:%ss", Date()),#PB_StatusBar_Center )
EndIf
EndProcedure

Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Textfile *.txt Bearbeiten
Du speicherst Daten0.txt und versuchst Datei0.txt zu lesen
Den Fehler darfst Du jetzt selber suchen.
Grüße ... Kiffi
Den Fehler darfst Du jetzt selber suchen.

Grüße ... Kiffi
a²+b²=mc²
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Textfile *.txt Bearbeiten
Der BOM steht immer nur einmal am Anfang der Datei! ReadStringFormat
oder WriteStringFormat werden also nur einmal, gleich nach dem Öffnen/Erstellen
ausgeführt. Hier noch ein paar Infos für die Allgemeinbildung:
http://de.wikipedia.org/wiki/Byte_Order_Mark
Gruß
Thomas
oder WriteStringFormat werden also nur einmal, gleich nach dem Öffnen/Erstellen
ausgeführt. Hier noch ein paar Infos für die Allgemeinbildung:
http://de.wikipedia.org/wiki/Byte_Order_Mark
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Textfile *.txt Bearbeiten
Ich empfehle nebenbei:
- "EnableExplicit" direkt an den Anfang zu schreiben
- Den ganzen Code richtig formatieren (Strg+A -> Rechtsklick -> "Einrückung formatieren")
- Bessere Variablennamen nutzen: FF, a, WWE ??
- Konsequent Konstanten oder besser nur #PB_Any nutzen
- Entscheiden ob du in Zukunft "a = b + c" oder "a=b+c" schreiben willst. Es sollte jedoch durchgehalten werden, um den Code leserlicher zu machen
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld