Zitat:
wie wenn man CTRL-R drücken würde (ich weiß nicht welcher Befehl das in Delphi ist).
hmmmmm.
Ctrl+R ist dort Suchen+Ersetzen. (
Replease)
Meinst du sowas wie
Reset? (Programm abbrechen)
Lokale Variable "Index" in InfoLesen
und nochmal ein gleichnamiges Feld "Index" in der Klasse?
Oder ist das "Index" der Crate.Methode was Anderes?
Auf was steht Infoarray, wenn mit Exit das InfoLesen verlassen wird?
- Array immer leer, wenn nichts gelesen wurde
- Read verschiebt die Position zum nächsten Eintrag, also braucht man es auch nur einmal am Anfang zu positionieren
- eine kopfseitig geprüfte Schleife funktioniert auch mit leeren Mengen
Delphi-Quellcode:
SetLength(InfoArray, 0);
seek(InfoDatei, 0);
DatIndex := 0;
while not eof(InfoDatei) do begin
read(InfoDatei, InfoDatensatz);
SetLength(InfoArray, DatIndex+1);
//infos werden ausgelesen
InfoArray[DatIndex].Var1:=InfoDatensatz.Var1;
{usw}
Steuerungsklasse:= TSteuerungsklasse.Create(DatIndex, StrToInt(InfoArray[DatIndex].Var1));//Zwei Parameter werden übergeben
SteuerungsObjektList.Add(Steuerungsklasse);
Inc(DatIndex);
end;
- Arraygröße vorher bestimmen
Delphi-Quellcode:
SetLength(InfoArray, System.FileSize(InfoDatei));
seek(InfoDatei, 0);
DatIndex := 0;
while not eof(InfoDatei) do begin
read(InfoDatei, InfoDatensatz);
//infos werden ausgelesen
InfoArray[DatIndex].Var1:=InfoDatensatz.Var1;
{usw}
Steuerungsklasse:= TSteuerungsklasse.Create(DatIndex, StrToInt(InfoArray[DatIndex].Var1));//Zwei Parameter werden übergeben
SteuerungsObjektList.Add(Steuerungsklasse);
Inc(DatIndex);
end;
Und ich hoffe mal, InfoArray enthält keine bösen Zeigertypen oder kompilerabhängige Typen, welche sich gern mal verändern, z.B. bei Umstellung auf
Unicode oder 64 Bit.