if not ReadString(...) = '' then Break;
if not ValueExists(...) then Break;
if not not SectionExists(...) then Break;
...
such dir was aus
Zitat:
Format('vorname%.0n',[_counter+ 0.0])
Ähhhh
Format('vorname%d',[_counter])
?
Bzw.
'vorname' + IntToStr(_counter)
oder ganz modern
'vorname' + _counter.ToString
.
Warum eine WHILE-Schleife, anstatt einem REPEAT-UNTIL, wo doch Prüfung erst am Ende kommt.
Wobei die Abbruchbedingung ja eigentlich besser mal vor dem _object.Items.Add stehen sollte, oder nicht?
Warum die Prüfung überhaupt am Ende, wo du doch bestimmt vor dem Auslesen prüfen möchtest, ob es das überhaupt gibt.
OK, hier kann man ganz am Anfang prüfen, oder erstmal lesen (wenn was nicht da ist, dann wirft das TIniFile zum Glück keine
Exception),
also wäre es schon OK, erstmal in die Variablen zu lesen und dann den Inhalt einer Variable zu prüfen.
if Vorname = '' then Break;
Warum überhaupt eine WHILE-Schleife, anstatt einem FOR?
Wenn die Prpfung in der Mitte ist, dann kann man mit BREAK aus jeder Schleife raus, und dann ist das manuelle Setzen/Hochzählen der Variable und noch eine zusätzliche Variable bissl unnötig.
PS: ich empfinde den Aufbau der Inni ein bissl suboptimal.
Code:
[Vorname] // das müsste auch Vornamen heißen, weil ja Mehrere drin sind ;)
vorname0=aaa
vorname1=bbb
...
[Nachame] // das müsste auch Nachnamen heißen
nachname0=ccc
nachname1=ddd
...
[Alter]
...
so wirkt es doch übersichtlicher und die Daten "einer" Person stehen dann auch zusammen
Code:
[Person0]
vorname=aaa
nachname=ccc
...
[Person1]
vorname=bbb
nachname=ddd
...
[Person2]
...
und das Auslesen wird sogar übersichtlicher
Delphi-Quellcode:
Sektion := Format('Person%d', [_counter]);
Vorname := ini.ReadString(Sektion, 'Vorname', '');
Nachname := ini.ReadString(Sektion, 'Nachname', '');