Seite 1 von 1
Zu blöd eine Datasection zu parsen
Verfasst: 23.11.2009 00:15
von alen
Hallo Zusammen,
ich stell mich mit dem Parsen von Daten aus einer DataSection ein wenig dumm an.
Ich habe hier sowas:
Code: Alles auswählen
DataSection
DBData:
Data.S "Peter","Pan"
Data.S "Alfred","E.Neumann"
Data.S "Willibald","Müller"
Data.S "Egon","Anfänger"
EndDataSection
Nun möchte ich diese Daten in einer Schleife auslesen aber kriege nix brauchbares auf die Reihe.
Habe es so versucht:
Code: Alles auswählen
Restore DBData
repeat
read.s vorname
read.s nachnahme
until vorname.s <> ""
Wenn ich das ganze mit einer for .. next schleife mit festen Länge durchlaufe klappt es.
Aber ich kenne die Anzahl der Zeilen nicht im Voraus. Daher der andere Ansatz.
Bekomme aus der PB Hilfe aber keinen Hinweis und im Forum sind meine Suchversuche auch nicht erfolgreich. Ich will aber nicht ausschliessen das ich nach den falschen Begriffen gesucht habe.
Hat hier jemand mal einen Tipp oder einen Ansatz.
Bin dankbar für jegliche Hilfe.
Vielen Dank im Voraus.
Grüße
alen
Re: Zu blöd eine Datasection zu parsen
Verfasst: 23.11.2009 00:18
von Kaeru Gaman
dein until ist falsch, weil der vorname immer nicht leer ist.
und du brauchst eine ende-markierung, damit der Read-Vorgang nicht ins Leere greift.
Code: Alles auswählen
Define vorname.s
Define nachnahme.s
Restore DBData
Repeat
Read.s vorname
Read.s nachnahme
Debug nachnahme + ", " + vorname
Until vorname = "#"
DataSection
DBData:
Data.S "Peter","Pan"
Data.S "Alfred","E.Neumann"
Data.S "Willibald","Müller"
Data.S "Egon","Anfänger"
Data.s "#", "#"
EndDataSection
Re: Zu blöd eine Datasection zu parsen
Verfasst: 23.11.2009 00:38
von ts-soft
Statt der Raute gehts natürlich auch mit einem leerem string:
Code: Alles auswählen
EnableExplicit
DataSection
DBData:
Data.s "Peter", "Pan"
Data.s "Alfred", "E.Neumann"
Data.s "Willibald", "Müller"
Data.s "Egon", "Anfänger"
Data.s "", ""
EndDataSection
Define.s vorname, nachnahme
Restore DBData
Repeat
Read.s vorname
Read.s nachnahme
Until vorname = ""
Re: Zu blöd eine Datasection zu parsen
Verfasst: 23.11.2009 01:52
von Kaeru Gaman
wobei natürlich anzumerken ist, dass dort dann trotzdem bei beiden #NULL markierungen für die beiden String-Enden in die DataSection geschrieben werden und nicht ganix...
Re: Zu blöd eine Datasection zu parsen
Verfasst: 23.11.2009 14:54
von alen
Hallo Zusammen,
auch wenn ich PHP und Python versaut bin, oder auch eben deswegen, muss ich PB erstmal immerwieder neu lernen. Vor allem nach langen Pausen.
Danke für Eure Hilfe
Es hat funktioniert.
Grüße
alen
Re: Zu blöd eine Datasection zu parsen
Verfasst: 23.11.2009 20:58
von Josef Sniatecki
Kaeru Gaman hat geschrieben:wobei natürlich anzumerken ist, dass dort dann trotzdem bei beiden #NULL markierungen für die beiden String-Enden in die DataSection geschrieben werden und nicht ganix...
Und deswegen nutze ich mein Zeigerverfahren

:
Code: Alles auswählen
Global *Pointer.Character, *First.Character
Global Vorname.s, Nachname.s
*Pointer = ?Start
Repeat
; Startposition des ersten Zeichens merken:
*First = *Pointer
; Alle Zeichen bis zur terminierenden Null überspringen:
While *Pointer\c
*Pointer + SizeOf(Character)
Wend
; Zeichen von "First" bis "Pointer" in "Vorname" einlesen:
Vorname = PeekS(*First, *Pointer - *Start)
*Pointer + SizeOf(Character)
; Startposition des ersten Zeichens merken:
*First = *Pointer
; Alle Zeichen bis zur terminierenden Null überspringen:
While *Pointer\c
*Pointer + SizeOf(Character)
Wend
; Zeichen von "First" bis "Pointer" in "Nachname" einlesen:
Nachname = PeekS(*First, *Pointer - *Start)
*Pointer + SizeOf(Character)
Debug Vorname + " " + Nachname
Until *Pointer = ?Finish
DataSection
Start:
Data.s "Josef" , "Sniatecki"
Data.s "Leif" , "Paulus"
Data.s "Maximilian", "Roth"
Finish:
EndDataSection