Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mehrere Records verschachteln (https://www.delphipraxis.net/2045-mehrere-records-verschachteln.html)

Bee 4. Jan 2003 21:52


Mehrere Records verschachteln
 
Und zwar habe ich eine Frage, was ist am untenstehenden Code flasch?
Die Arrays sollen Dynamisch werden, zum anderen bekomme ich eine Meldung Das ich die 2GB grenze überschritten habe, kann man das auch anders lösen.
Code:
 type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
  TPreset = record
   Name: String;
   Choice: char;
   Value: array [] of Byte;
  end;
  TChannel = record
   Name: String;
   Choice: char;
   Min: Byte;
   Max: Byte;
   Is16Bit: Boolean;
  end;
  TFixture = record
   Name: String;
   IsHead: Boolean;
   ChCount: Byte;
   Channel: array [] of TChannel;
   Preset: array [] of TPreset;
  end;
  TManufacturer = record
   Name: String;
   FixCount: Byte;
   Fixture: array [] of TFixture
  end;
var
  Form1: TForm1;
  Fixlib: array [] of TManufacturer;
Danke!
Bee

Christian Seehase 4. Jan 2003 21:54

Moin Bee,

wenn Du mal die [] weglässt, sollte das funktionieren.

Bee 4. Jan 2003 22:12

Fehlanzeige
 
Auch das löschen der eckigen Klammer ergibt eine Menge an Fehlermeldungen
[ erwartet bzw. ordinaltyp erwartet, irgendwo muss noch der Wurm sein.

Bee

sakura 4. Jan 2003 22:17

Innerhalb von Records musst Du Typen nutzen, um dyn. Arrays einzusetzen.
Delphi-Quellcode:

// aus
  TPreset = record
    Name: String;
    Choice: char;
    Value: array [] of Byte;
  end;

// wird
  TByteArray = array of Byte;
  TPreset = record
    Name: String;
    Choice: char;
    Value: TByteArray
  end;

jbg 4. Jan 2003 23:54

Zitat:

Zitat von sakura
Innerhalb von Records musst Du Typen nutzen, um dyn. Arrays einzusetzen.

Wo hast du denn den Blödsinn her?


@Bee: Hast du auch wirklich alle [] entfernt? Auch die bei
Zitat:

Fixlib: array [] of TManufacturer;

Christian Seehase 5. Jan 2003 00:00

Moin Bee,

nachdem ich mal die [] entfernt hatte ging's bei mir.

In VB(A) werden dynamische Arrays wohl mit () deklariert in Pascal in dem man die Angabe der Dimensionen weglässt.

Bee 5. Jan 2003 14:40

Hallo Christian, Hallo jbg!

ich habe meinen Code folgendermaßen abgeändert und erhalte bei der Syntaxprüfung trozdem Fehlermeldungen, ich habe sie mal als Kommentar dazu geschrieben
Code:
type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
  TPreset = record
   Name : String;
   Choice : char;
   Value : array of Byte; { [ erwartet of gefunden.}
  end;                    { of erwartet end gefunden.}
  TChannel = record
   Name : String;
   Choice : char;
   Min : Byte;
   Max : Byte;
   Is16Bit : Boolean;
  end;
  TFixture = record
   Name : String;
   IsHead : Boolean;
   ChCount : Byte;
   Channel : array of TChannle;  { [ erwartet of gefunden, ] erwartet aber ; gefunden}
   Preset : array of TPreset;    { of erwartet aber Bezeichner Preset gefunden}
  end;                           { zu oben , oder : erwartet aber ; gefunden, Typ erwartet aber END gefunden}
  TManufacturer = record
   Name : String;
   FixCount : Byte;
   Fixture : array of TFixture;   { [ erwartet aber of gefunden, Ordinaltyp erforderlich}
  end;                            { of erwartet aber End gefunden}
var
  Form1: TForm1;
  Fixlib: array of TManufacturer; { [ erwartet aber of gefunden, Ordinaltyp erforderlich}
implementation                    { of erwartet aber IMPLEMENTATION gefunden}
irgendwas passt noch nicht so ganz.
Gruß Bee

Christian Seehase 5. Jan 2003 14:59

Moin Bee,

da es bei mir wieder einwandfrei funktioniert (nachdem ich auch TChannle TChannel gemacht habe), kommt mir ein unangenehmer Verdacht:

D3 verwendet entweder eine andere Syntax, oder aber kann nicht mit dynamischen Arrays umgehen (was mich allerdings wundern würde)

Ich tippe mal auf andere Syntax, oder Einstellung in den Optionen.

Hansa 5. Jan 2003 15:27

Hi,

Zitat:

Channel : array of TChannle
Ist das hier nicht schon alles ? TChannleund Tchannel ?

Gruß
Hansa

jbg 5. Jan 2003 15:43

Zitat:

Zitat von Christian Seehase
oder aber kann nicht mit dynamischen Arrays umgehen (was mich allerdings wundern würde)

Da ich in meinen D3 Codes keine dyn. Array verwendet habe, liegt der Verdacht, dass D3 keine unterstützt sehr nahe. In der OH von D3 konnte ich auch nichts über dynamische Arrays finden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 Uhr.
Seite 1 von 2  1 2      

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