![]() |
Startwerte bei Records einstellen.
hallo ich hab folgendes....
Delphi-Quellcode:
nun will ich den variablen in dem record einen startwert geben.
type TGAusrichtung = (normal,grad90,grad180,grad270);
type TGGleisstellung = (gerade, abzweig1, abzweig2, abzweig3); {eigenes record deklaieren} type TGleisElement = record Gleiselement: -1..254; Ausrichtung : TGAusrichtung; Gleisstellung : TGGleisstellung; end; normalerweise geht das ja so
Delphi-Quellcode:
aber leider nicht bei mir. Geht das bei records nicht oder bei typisierten variablen.
var
i: Integer = 42; gruß snow |
Re: Startwerte bei Records einstellen.
Hi,
nei Records geht das imo nicht, aber du könntest stattdessen eine Klasse deklarieren und die Initialisierung im Construktor übernehmen. |
Re: Startwerte bei Records einstellen.
Hallo,
initialisierte Records lassen sich durchaus verinbaren:
Delphi-Quellcode:
Diese Art der Initialisierung ist bei Variablen nur möglich, wenn sie global vereinbart werden. Konstanten lassen sich auch initialisieren, wenn sie lokal vereinbart werden. In beiden Fällen findet die Initialisierung nur einmal statt, nämlich beim Start der Anwendung.
var
Element : TGleisElement = ( GleisElement : 42; Ausrichtung : grad90; Gleisstellung : gerade ); Gruß Hawkeye |
Re: Startwerte bei Records einstellen.
Dürfte sicher auch irgendwo ind er Hilfe/im Netz stehen, aber hier:
Delphi-Quellcode:
type
TMyRecord = record Int: Integer; Bool: Boolean; end; var Test: TMyRecord = (Int: 0; Bool: True); |
Re: Startwerte bei Records einstellen.
Sowas wie das folgende, bei dem jede Variable/Konstante des Typs TGleisElement die angegebenen Werte hat, geht nicht, nur die Hawkeye gezeigt Variante funktioniert.
Delphi-Quellcode:
type TGAusrichtung = (normal,grad90,grad180,grad270);
type TGGleisstellung = (gerade, abzweig1, abzweig2, abzweig3); {eigenes record deklaieren} type TGleisElement = record Gleiselement: -1..254 = -1; Ausrichtung : TGAusrichtung = normal; Gleisstellung : TGGleisstellung = gerade; end; |
Re: Startwerte bei Records einstellen.
Ich finde es witzig, dass der Compiler hierbei meckert:
Delphi-Quellcode:
type
TRec = record a: integer; b: string; c: boolean; end; procedure Blah(Rec1: TRec = (a: 1; b: 'huhu'; c: true)); |
Re: Startwerte bei Records einstellen.
hilft mir leider kaum.
Die variable ist private deklariert, und muss es auch bleiben. Außerdem ist es ein Array of TGleiselement.(dynamisch,2D). muss ich es also beim start und bei veränderungen der größe überschreiben bzw die neuen einträge auf den startwert setzen. gruß snow |
Re: Startwerte bei Records einstellen.
Immerhin kannst du ja zum Initialisieren einen konstanten Record benutzen:
Delphi-Quellcode:
Die lokale Array-Variable ist hier natürlich nur ein (sinnloses) Beispiel, du wirst stattdessen deine private Variable verwenden.
procedure Setup;
const Startwert : TGleisElement = ( GleisElement : -1; Ausrichtung : normal; Gleisstellung : gerade ); var Gleise : array of TGleisElement; Index : Integer; begin SetLength (Gleise, 100); for Index := Low(Gleise) to High(Gleise) do Gleise[Index] := Startwert; end; Gruß Hawkeye |
Re: Startwerte bei Records einstellen.
Zitat:
Also kannst du im Constructor die initialisierung selbst übernehmen. Entweder benutzt du das entsprechende Ereignis (onFormCreate) oder du überschreibst den bisherigen. |
Re: Startwerte bei Records einstellen.
und genau da liegt das problem....
Die Records befinden sich in einem Dynamischen 2 dimensionalen Array, dessen größe erst zur laufzeit feststeht. Somit kann ich nicht auf die records zugreifen, weil sie noch gar nicht exestieren. ich muss also die records mit der vergrößern-procedure verknüpfen. Gruß snow |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz