Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi variablenzuweisung record (https://www.delphipraxis.net/74050-variablenzuweisung-record.html)

ksh 27. Jul 2006 12:35


variablenzuweisung record
 
Hallöchen!

habe folgendes Problemchen:

ich habe einen Record, in dem auch andere Records vorhanden sind. z.B.:
Delphi-Quellcode:
type TAngDaten = record
       EinDaten    : TEinDaten;     //Objekt Eingabe-Daten
       ...
   end;
wenn ich jetzt innerhalb von EinDaten auf die Variablen zugreife und ihnen einen neuen Wert zuweise, läuft das nicht immer alles nach Plan. Soll heißen:

AngDaten.EinDaten.Variable stimmt nicht mit EinDaten.Variable überein!

kennt jemand das Problem oder hat einen Tipp, wie ich das umgehen kann?

himitsu 27. Jul 2006 12:38

Re: variablenzuweisung record
 
Wie weißt du den den Neuen Wert zu?
Beziehungweis wie und wo verwendest du den den Record?


Wenn man z.B. auf den Record über ein Property 'ner Klasse zugreift, dann wird vorher eine Kopie angelegt und man ändert daher nur die Kopie, aber nicht das Original...

shmia 27. Jul 2006 12:56

Re: variablenzuweisung record
 
Zitat:

Zitat von ksh
ich habe einen Record, in dem auch andere Records vorhanden sind. z.B.:

Ein Tipp aus langjähriger Erfahrung:
sobald ein Record etwas umfangreicher wird, lohnt es sich, den Record in eine Klasse umzuwandeln.
Man fängt ganz gemütlich mit einem Record an und kommt irgendwann an den Punkt, an dem man
z.B. die Daten löschen, kopieren oder speichern möchte.
Mit einer Klasse (abgeleitet von TPersistent) kommt man jetzt viel besser zurecht.

ksh 27. Jul 2006 12:59

Re: variablenzuweisung record
 
geht ja auf zwei arten:
Delphi-Quellcode:
with AngDaten.Eindaten do
    Variable := 63;
oder:
Delphi-Quellcode:
AngDaten.EinDaten.Variable := 63;
ich greife eigentlich von anderen Units auf die Records zu. also definiere z.B. EinDaten in der Unit ObjEin und greife von UnitXY darauf zu.
also verändere ich das nur bei der Kopie?! und wie kann ich dem entgehen? oder kann man das nicht verhindern?

@shmia:
ab wann ist das denn ratsam bzw. wozu dienen dann die records?

himitsu 27. Jul 2006 13:15

Re: variablenzuweisung record
 
hier vermutlich nicht (war nur als Beispiel dafür, daß man halt manchmal nicht damit arbeitet, womit man denkt zu arbeiten) ^^

bei mußt du z.B. auch aufpassen, daß da, wo du Variable := 63; nurtzt nicht eine andere Variable Namens Variable den "Vorrang" hat.
Delphi-Quellcode:
with AngDaten.Eindaten do
    Variable := 63;

ksh 27. Jul 2006 13:21

Re: variablenzuweisung record
 
falls du meinst, dass meine Variablen doppelt belegt sein können: sind alle einmal definiert und ich weise die Werte nur zu.

ich weise einmal in der Unit main Standardwerte zu, die ich dann gegebenenfalls in den anderen Units überschreibe - und eben das klappt nicht. ich weise es aber genau gleich zu!


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:50 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