Hallöchen,
hier mal ein Auszug der Daten die ich in mein Array einlese:
Code:
MTrakStamm(
MTrak(
ID: 30
Name: DT
Aktiv: 1
Erste: 2
Lok(
ID: 31
Richtung: 0
)
Lok(
ID: 32
Richtung: 0
)
Lok(
ID: 30
Richtung: 0
)
)
)
Es geht um das "Erste"!
Die 2 sagt aus, das die zweite Lok die erste ist.
Ich muss also nur im ersten Record im Array, Erste diese Zahl einlesen. Das passiert aber in allen. Diese Zahl soll also nur im Mtr[0].Erste sein, in allen anderen auf nichts, bzw. -1? Oder 0?
Der Record:
Code:
TMtr = Record //Multitraktion Daten
MtrID: Integer; //ID -> Nummerisch Max. 5-Stellig 0-99999
MtrName: String[10]; //Name -> AlphaNummerisch Max. 10-stellig
Aktiv: Byte; //Aktiv(Multitraktion Aktiv?); Kann nur 1=Ja oder 0=Nein sein
Erste: Byte; //Erste(Lok in einer Multitraktion); Kann nur 1 oder 0 sein
//Kann auch nur EINER Lok in einer Multitraktion zugewiesen werden
MtrLok: Array [0..MaxMtrLoks -1] of TMtrLok;
MtrLoksAnzahl: Integer;
end;
Hoffentlich versteht Ihr was ich meine, wenn nicht, nachfragen.
Einlesen erfolgt dann hiermit:
Code:
function GetMTrak(ts: TStrings; var i: integer; var Mtr: TMtr): Boolean;
//Werte unter MTrak( auslesen
var
Item, Value: string;
begin
Mtr.MtrLoksAnzahl := 0;
while i < ts.Count do
begin
GetItem(ts.Strings[i], Item, Value);
Inc(i);
if Item = 'ID:' then
begin
Mtr.MtrID := StrToInt(Value);
end
else if Item = 'Name:' then
begin
Mtr.MtrName := Value;
end
else if Item = 'Aktiv:' then
begin
Mtr.Aktiv := StrToInt(Value);
end
else if Item = 'Erste:' then
begin
Mtr.Erste := StrToInt(Value);
end
else if Item = 'Lok(' then
begin
GetTrakLok(ts, i, Mtr.MtrLok[Mtr.MtrLoksAnzahl]);
Inc(Mtr.MtrLoksAnzahl);
end
else if Item = ')' then
begin
Break;
end
else
begin //Tolerantes Lesen
;
end;
end;
result := True;
end;
Grüsse, Daniel