AGB  ·  Datenschutz  ·  Impressum  







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

Startwerte bei Records einstellen.

Ein Thema von snow · begonnen am 27. Dez 2007 · letzter Beitrag vom 28. Dez 2007
Antwort Antwort
Seite 1 von 2  1 2      
snow

Registriert seit: 28. Jun 2007
277 Beiträge
 
#1

Startwerte bei Records einstellen.

  Alt 27. Dez 2007, 23:29
hallo ich hab folgendes....

Delphi-Quellcode:
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;
nun will ich den variablen in dem record einen startwert geben.

normalerweise geht das ja so

Delphi-Quellcode:
var
  i: Integer = 42;
aber leider nicht bei mir. Geht das bei records nicht oder bei typisierten variablen.

gruß snow
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Startwerte bei Records einstellen.

  Alt 27. Dez 2007, 23:40
Hi,

nei Records geht das imo nicht, aber du könntest stattdessen eine Klasse deklarieren und die Initialisierung im Construktor übernehmen.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Startwerte bei Records einstellen.

  Alt 27. Dez 2007, 23:54
Hallo,

initialisierte Records lassen sich durchaus verinbaren:

Delphi-Quellcode:
var
  Element : TGleisElement = (
    GleisElement : 42;
    Ausrichtung : grad90;
    Gleisstellung : gerade
  );
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.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von PaddyL
PaddyL

Registriert seit: 23. Nov 2007
Ort: Lautertal
34 Beiträge
 
#4

Re: Startwerte bei Records einstellen.

  Alt 27. Dez 2007, 23:58
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);
Patrick
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#5

Re: Startwerte bei Records einstellen.

  Alt 28. Dez 2007, 00:08
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;
  Mit Zitat antworten Zitat
fLaSh11
(Gast)

n/a Beiträge
 
#6

Re: Startwerte bei Records einstellen.

  Alt 28. Dez 2007, 00:17
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));
  Mit Zitat antworten Zitat
snow

Registriert seit: 28. Jun 2007
277 Beiträge
 
#7

Re: Startwerte bei Records einstellen.

  Alt 28. Dez 2007, 00:22
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
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Startwerte bei Records einstellen.

  Alt 28. Dez 2007, 00:40
Immerhin kannst du ja zum Initialisieren einen konstanten Record benutzen:

Delphi-Quellcode:
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;
Die lokale Array-Variable ist hier natürlich nur ein (sinnloses) Beispiel, du wirst stattdessen deine private Variable verwenden.

Gruß Hawkeye
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Startwerte bei Records einstellen.

  Alt 28. Dez 2007, 07:18
Zitat von snow:
Die variable ist private deklariert
Also ist sie ein Feld einer Klasse -> damit nur in einer Instanz gültig die durch einen Constructor erzeugt wurde...
Also kannst du im Constructor die initialisierung selbst übernehmen. Entweder benutzt du das entsprechende Ereignis (onFormCreate) oder du überschreibst den bisherigen.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
snow

Registriert seit: 28. Jun 2007
277 Beiträge
 
#10

Re: Startwerte bei Records einstellen.

  Alt 28. Dez 2007, 12:15
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:34 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