Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Array mit verschiedenen Records

  Alt 4. Jul 2007, 16:28
Hallo Scrutor,

bei Textdateien gibt es zwei Basis-Formate: Fixed-Field und Comma-Separated. Die Bezeichnungen sagen aus, dass im ersten Fall die einzelnen Felder über ihren Offset und im letzteren Fall durch Abzählen der Trennzeichen lokalisiert werden. Deine Textdaten gehören in die erste Kategorie.

Für deine beiden Datensatztypen kommt man leicht zu folgenden Strukturen:

Delphi-Quellcode:
type
  TAuftragDaten = record
    Dum1 : array[0..7]of char; //Dummy
    ProgNr : array[0..7]of char; //Programmnummer
    ZeichNr : array[0..7]of char; //Zeichnungsnummer
    LineNr : array[0..7]of char; //Lineelement
    IdBohr : array[0..7]of char; //Ident Bohren
    IdVorr : array[0..7]of char; //Ident Vorrichtung
    Dum2 : array[0..7]of char; //Dummy
    AVO : array[0..7]of char; //AVO
    Mach : array[0..7]of char; //Maschine
    Durchm : array[0..7]of char; //Raddurchmesser
    AusWink : array[0..7]of char; //Austrittswinkel
    AnzScha : array[0..7]of char; //Anzahl Schaufeln
    SchaHohe: array[0..7]of char; //Schaufelhöhe
  end;

  TAuftrag2002 = record
    Nr : array[0..8]of char; //Auftragsnummer
    Spec: TAuftragDaten;
  end;

  TAuftrag2004 = record
    Nr : array[0..9]of char; //Auftragsnummer
    Spec: TAuftragDaten;
  end;
Einlesen kannst du diese Daten wahlweise über die alten Pascal Standardroutinen ReadLn (ohne vorherige Kenntnis der Satzlänge) und BlockRead (mit vorheriger Kenntnis der Satzlänge) oder über einen FileStream.

Wenn nur diese beiden Datensatztypen existieren, dann kannst du auch einfach den größeren Typ verwenden und beim Einlesen die erste Stelle mit einem Leerzeichen oder einer Null initialisieren, wenn die kurzen Sätze verarbeitet werden.

Grüße vom marabu
  Mit Zitat antworten Zitat