Seite 1 von 6

ASCII-dateiinhalt in verschiedene strings einlesen

Verfasst: 16.06.2009 13:26
von PureBasic09
hi leute

hab mal ne ganz knifflige frage, mit der ich mich schon ne zeitlang befasse:
ich möchte den inhalt einer ascii datei in verschiedene strings einlesen.
diese strings sollen dann in einer odbc-datenbank verwendet werden

ich hoffe ihr könnt mir ein bisschen helfen


mfg PureBasic09

Verfasst: 16.06.2009 13:30
von STARGÅTE
solange die Datei keine echt NULL enthält, kannst du doch diese Datei einfach mit ReadString einlesen.
Und wenn sie Nullen drin halt, kannst du sie eh nicht in Strings lesen, da diese dann abgeschnitten werden.
Um Strings zu Teilen kannst du zB: Mid() oder StringField() nutzen

Willst du sofort alles einlesen, verwende ReadData() und erzeuge vorher einen String mit der länge der Datei, in dessen Pointer du dann einliest

Verfasst: 16.06.2009 13:32
von Kaeru Gaman
per ReadString() in eine LinkedList einlesen, und dann in die Datenbank, oder direkt in die Datenbank, je nachdem.

Verfasst: 16.06.2009 13:35
von PureBasic09
wenn ich wüsste, wie ich das umsetzen kann.....

bin ja auch erst seit 2 wochen an PB dran

Verfasst: 16.06.2009 13:43
von PureBasic09
gut, ich habe nen quellcode gefunden, indem ich mir einen teil der ascii datei im debugger anschauen kann

aber wie bringe ich jetzt teile dieser datei, in von mir bestimmte strings?

Code: Alles auswählen

If ReadFile(0, "Text.txt")   ; wenn die Datei geöffnet werden konnte, setzen wir fort...
  While Eof(0) = 0           ; sich wiederholende Schleife bis das Ende der Datei ("end of file") erreicht ist
    Debug ReadString(0)      ; Zeile für Zeile im Debugger-Fenster anzeigen
  Wend
  CloseFile(0)               ; schließen der zuvor geöffneten Datei
Else
  MessageRequester("Information","Konnte Datei nicht öffnen!")
EndIf

Verfasst: 16.06.2009 14:17
von sibru
Hallo PureBasic09,
Mir ist nicht ganz klar, was Du mit "DateiTeilen" meinst, ich geh´ jetzt einfach mal von Textzeilen aus...
Du bist schon auf dem richtigen Weg:

Code: Alles auswählen

If ReadFile(0, "Text.txt")   ; wenn die Datei geöffnet werden konnte, setzen wir fort...
  While Eof(0) = 0           ; sich wiederholende Schleife bis das Ende der Datei ("end of file") erreicht ist
    Zeile$ = ReadString(0)   ; <-- Datei-Zeile in String-Variable übertragen
    Debug Zeile$                 ; Zeile im Debugger-Fenster anzeigen

    ;wenn´s in ´ne LL soll:
   AddElement(FileLine$())  ; neues LL-Element anlegen...
   FileLine$() = Zeile$        ; ...und belegen

  Wend
  CloseFile(0)               ; schließen der zuvor geöffneten Datei
Else
  MessageRequester("Information","Konnte Datei nicht öffnen!")
EndIf
Viel Erfolg !!!

Verfasst: 18.06.2009 11:32
von PureBasic09
ich glaube ich hab mich falsch ausgedrückt

ich möchte von mir bestimmte zeilen aus einer *.PAU datei (ascii) in strings reinladen, um diese dann später in meine schon fertige DB-reinladen
(ODBC Datenbank)

aber ich hab keinen blassen schimmer wie das gehen soll

in der hilfe gibt es ja folgenden quellcode:

Code: Alles auswählen

Ergebnis$ = StringField(String$, Index, Trennzeichen$)
aber damit weiß ich net viel anzufangen.
was ich aber davon weiß, ist, das bei String$ mein gewünschter string reinkommt und bei Trennzeichen$ das typische ascii-trennzeichen "|" reinkommt

Verfasst: 18.06.2009 11:39
von sibru
Sieh´ dir das mal an:

Code: Alles auswählen

String$="eins|zwei|drei|vier|fünf"
For Teil = 1 To 5
  Debug StringField(String$,Teil,"|")
Next

Verfasst: 18.06.2009 11:41
von PureBasic09
wo einbinden?

Verfasst: 18.06.2009 11:47
von PureBasic09
ich werde es mal konkretisieren:

hier ein auszug aus der *.PAU-datei
PAU
aes-k070136-a20
PM500_Z00....
04.06.2009
1|aes-pm500_z005|Kubus|1|98
2|aes-pm500_z006|Platte|1|96
PAU-END
aes-k070136-a20 = 1.String
PM500_Z00.... = 2.String
04.06.2009 = 3. String
1,2 = 4. String
aes-pm500_z005, aes-pm500_z006 = 5. String
Kubus, Platte = 6. String
1 = 7. String
98, 96 = 8. String


so meinte ich es.
hoffentlich versteht man mich nu, was ich meine *hope*