Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fehler im Record schreiben (https://www.delphipraxis.net/1283-fehler-im-record-schreiben.html)

Daniel B 9. Nov 2002 23:10


Fehler im Record schreiben
 
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. :roll:
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 :hi:

jbg 10. Nov 2002 07:22

Damit das funktioniert müsstest du einen weiteren Parameter übbergeben, der den Index des Mtr Records angibt. Mit diesem kannst du dann entscheiden, ob es der 1. Record ist oder eben nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz