AGB  ·  Datenschutz  ·  Impressum  







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

Array mit verschiedenen Records

Ein Thema von Scrutor · begonnen am 4. Jul 2007 · letzter Beitrag vom 6. Jul 2007
Antwort Antwort
Seite 4 von 4   « Erste     234   
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#31

Re: Array mit verschiedenen Records

  Alt 6. Jul 2007, 11:28
Mein Vorschlag wäre:
Delphi-Quellcode:
Type
  TRecordKind=(rkGanzAlt, rkNichtsoAlt, rkNeu, ...);
  TMyRecord= Record
   Kind: TRecordKind;
   case TRecordKind of
     rkGanzAlt:
     // hier alle Member vom alten typ
     rkNichtsoAlt:
     // hier alle Member vom alten typ
     rkNeu:
     // hier alle Member vom alten typ
     ..:
     // hier alle Member vom alten typ
   end;
  end;
Jetzt kannst Du Dir ein Array von diesen Records erstellen und abhängig vom Dateidatum den RecordKind ermitteln. Diesen schreibst Du mit in den Record und kannst dann überall im Programm wissen, welcher art dieser Record ist und dementsprechend zugreifen.
Zu dem Stream lesen: Erstelle Dir für jeden RecordKind eine Konstante, die die jeweilige Gesaamtlänge beinhaltet, dann kannst Du immer soviele Bytes einlesen.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#32

Re: Array mit verschiedenen Records

  Alt 6. Jul 2007, 11:39
Dann aber im richtigen Stil für variante records (kein end nach dem case!):
Delphi-Quellcode:
TMyRecord= Record
   case Kind:TRecordKind of
     rkGanzAlt:
     // hier alle Member vom alten typ
     rkNichtsoAlt:
     // hier alle Member vom alten typ
     rkNeu:
     // hier alle Member vom alten typ
     ..:
     // hier alle Member vom alten typ
   end;
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Scrutor

Registriert seit: 23. Sep 2006
Ort: Moers
37 Beiträge
 
Turbo Delphi für Win32
 
#33

Re: Array mit verschiedenen Records

  Alt 6. Jul 2007, 11:39
Das einlesen ist nicht das Problem.
das erstellen des richtigen records nun auch nicht mehr.

nur wie sag ich der Variablen Data, dass sie mal der eine record ist und mal der andere ?

Prinzip:
Delphi-Quellcode:
var
   Data : ???;
begin
  case Format of
   0: Data:=TDaten_0;
   1: Data:=TDaten_1;
  end;
end;
edit: ich find es leichter und einfacher 6 records zu erstellen, als mit den variant recordds rumzukaspern.
die 6 records sind ja schon erstellt und fertig, nur die zuweisuzng und auslesen und einem editfeld zuweisen klappt nicht
90% aller Computerprobleme sitzen vor dem Bildschirm !
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#34

Re: Array mit verschiedenen Records

  Alt 6. Jul 2007, 12:00
Hallo,

so wie du das schreiben willst, musst du für jede der 6 Versionen
eine eigene Variable mitführen.

Die 6 Records unterscheiden sich noch mal wodurch ?
Durch bestimmte String-Längen ?

Wenn ja, benutze für das Lesen/Schreiben deine 6 verschiedenen Records,
aber in allen anderen Routionen genau einen Record
(nur String als Type, nicht array[0..] of Char).

Wenn du unbedingt eine 6 records haben willst,
dann könntest du auch so vorgehen
Delphi-Quellcode:
type
  TRec1 = record
    // Daten
  end;
type
  TRec2 = record
    // Daten
  end;

..
type
  TRec6 = record
    // Daten
  end;

type
  TRecAllData : record
    iVersion: Integer; //1-6
    Rec1: TRec1;
    Rec2: TRec2;
    ..
    Rec6: TRec6;
  end;
Sie umständlich aus, ist es auch ...


Heiko
Heiko
  Mit Zitat antworten Zitat
Scrutor

Registriert seit: 23. Sep 2006
Ort: Moers
37 Beiträge
 
Turbo Delphi für Win32
 
#35

Re: Array mit verschiedenen Records

  Alt 6. Jul 2007, 12:04
naja, ich mache dann jetzt zu den 6 verschiedenen records noch 6 proceduren, die die datei dann mit dem richtigen record auslesen.
find ich zwar unschön und irgendwie umständlich, aber es geht wohl nicht anders, bzw. ich bekomme es nicht anders hin.

vielen dank trotzdem an alle hier für ihre bemühungen


Edit: so, mit den 6 records und 6 proceduren funktioniert es nun einwandfrei.


mfg
Scrutor
90% aller Computerprobleme sitzen vor dem Bildschirm !
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#36

Re: Array mit verschiedenen Records

  Alt 6. Jul 2007, 16:08
Es reicht eigentlich 1 Routine zum lesen:

Delphi-Quellcode:
   procedure ReadFromStream(Data:Pointer;Datasize:Integer);
   begin
     Stream.Read(data^,datasize);
   end;

Je nach Typ mußt du natürlich entsprechend die Daten übergeben.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 17:49 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