AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler im Record schreiben

Ein Thema von Daniel B · begonnen am 9. Nov 2002 · letzter Beitrag vom 10. Nov 2002
Antwort Antwort
Daniel B
(Gast)

n/a Beiträge
 
#1

Fehler im Record schreiben

  Alt 9. Nov 2002, 23:10
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
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2
  Alt 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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:25 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