Hallo, ich verzweifle gerade, weil ein dynamisches Array bei mir immer mit 1, statt 0 beginnt:
Delphi-Quellcode:
[..]
interface
type
T_DataBase_AddTerminArray = record
cFieldNames: String;
aFieldValues: String;
end;
type
T_DataBase_AddTermin = record
aID: Integer;
aDateTime: TDateTime;
aFields: array of T_DataBase_AddTerminArray;
end;
type
TDBClassAddTermin = class
private
public
aDataBaseAddTermin: T_DataBase_AddTermin;
end;
var
{ Termin hinzufügen Struktur }
GDBClassAddTermin: TDBClassAddTermin;
Jetzt versuche ich die Klasse zu initialisieren:
Delphi-Quellcode:
GDBClassAddTermin := TDBClassAddTermin.Create;
GDBClassAddTermin.aDataBaseAddTermin.aDateTime := Dummy_DateTime;
SetLength(GDBClassAddTermin.aDataBaseAddTermin.aFields, 6); // HIER beginnt nun zu meiner Verwunderung der Index bei 1
Eine Zuweisung mittels GDBClassAddTermin.aDataBaseAddTermin.aFields[0].cFieldNames := 'Test'; ergibt eine Fehlermeldung.
Auf der anderen Seite will aber eine Schleife wiederum beim Index 0 beginnen:
Delphi-Quellcode:
var
DummyX: Integer;
begin
for low(GDBClassAddTermin.aDataBaseAddTermin.aFields) to pred(high(GDBClassAddTermin.aDataBaseAddTermin.aFields)) do //pred müsste eigentlich korrekt sein, wenn von 0 gezählt wird
begin
GDBClassAddTermin.aDataBaseAddTermin.aFields[DummyX].cFieldNames := DummyX.ToString; // ergibt auch eine Fehlermeldung beim Index 0
end;
Kann mir bitte jemand auf die Sprünge helfen, warum das so ist oder, was mir wichtiger ist, wo mein Denkfehler liegt?
LG Mathias
Edit: hat sich erledigt, auf einmal klappt es doch. Ich weiß aber nicht, warum.