Es gibt mehrere Möglichkeiten: Eine davon
Mehrere Values:
FORMPOS=264=128,...
Sowas schreiben:
Code:
RnCsvWrSep(csvref, "FORMPOS")
RnCsvWrVal(csvref, "264")
RnCsvWrVal(csvref, "128")
Sowas Lesen
Code:
RnCsvRdSep(csvref, Key)
if Key = "FORMPOS" then
RnCsvRdVal(csvref, X_VAL) ("264")
RnCsvRdVal(csvref, Y_VAL) ("128")
Da mach ich es aber immer so, daß die Routine ihre Values selber liest oder schreibt, d.h. ich drück' ihn einfach den CSVREF Handle in die Hand
Code:
RnCsvRdSep(csvref, Key)
if Key = "FORMPOS" then
sub_routine (CsvRef as Integer)
Elseif Key = "SAUBACKE" then
sub2_routine (CsvRef as Integer)
public sub_routine (CsvRef as Integer)
RnCsvRdVal(csvref, X_VAL) ("264")
RnCsvRdVal(csvref, Y_VAL) ("128")
public sub2_routine (CsvRef as Integer)
RnCsvRdVal(csvref, SAU_VAL) ("???")
Da kann sich die Routine selber drum kümmern, da sie ja am besten weiss, was sie braucht.
Da das "RdVal" niemals über das konkrete Element hinauskommt, kann da nix passieren, Also wenn nur ein Value da ist, kann die Sub auch zwanzigmal RdVal sagen, ohne was durcheinander zu bringen.
Andere Variante, auch gern genommen:
In einem solchen String stehen nur Keys und werte für EINE Funktion
Die Funktion als Key ohne value vorne.
"FORMPOS,X=100,Y=20,TOPX=233,TOPY=200"
Dann würde die Hauptroutine nur einen RdKey machen und dann die Funktionen mit dem CsvRef aufrufen, dann soll die selber lesen, was sie braucht.
Dritte Variante, etwas aufwendiger:
Irgendein Value ist selbst ein Key-Value string (Das geht beliebig rekursiv). Das erklär' ich noch, wie das geht
Lesezeichen