Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Records (https://www.delphipraxis.net/41697-records.html)

mumu 7. Mär 2005 12:34


Records
 
Delphi-Quellcode:
type
  PData = ^TData;
  TData = record
    test1 : string;
    test2 : integer;
  end;
wie kann ich ein record mit bestimmten werden vorbelegen? ist das möglich?
folgendes funktioniert ja nicht...
Delphi-Quellcode:
type
  PData = ^TData;
  TData = record
    test1 : string='Test';
    test2 : integer=10;
  end;

sniper_w 7. Mär 2005 12:38

Re: Records
 
Eine Variable kannst du mit bestimmten Werten vorlegen. So in etwa:
Delphi-Quellcode:
type
  PData = ^TData;
  TData = record
    test1 : string;
    test2 : integer;
  end;

var MyVar : TData = (test1: 'Halo';test2:5);

opfer.der.genauigkeit 7. Mär 2005 12:39

Re: Records
 
Oder so..

Delphi-Quellcode:
type
  PData = ^TData;
  TData = record
    test1 : string;
    test2 : integer;
  end;
Delphi-Quellcode:
var
  pDataRec: PData;
begin
  New(pDataRec); // oder GetMem(pDataRec, SizeOf(PData));
 
  pDataRec^.test1 := 'Hallo'; // ^ dient zur Abwärtskompatibilität wäre auch pDataRec.test1 möglich seit D5 oder so..
  pDataRec^.text2 := 1;

  Dispose(pDataRec); // oder FreeMem(pDataRec, SizeOf(PData));
end;

sniper_w 7. Mär 2005 12:41

Re: Records
 
Zitat:

// ^ dient zur Abwärtskompatibilität wäre auch pDataRec.test1 möglich seit D5 oder so..
Das ist aber neu für mich. :shock:

opfer.der.genauigkeit 7. Mär 2005 12:49

Re: Records
 
Zitat:

var MyVar : TData = (test1: 'Halo';test2:5);
Diese Schreibweise hab ich auch grad erst von dir gelernt. :mrgreen:

Aber das mit dem ^ gilt bei Records auf jeden Fall.
Wo es noch gilt weiß ich nicht mehr.. der Compiler erkennt das in bestimmten Fällen.
Bin zumindest der Meinung gelesen zu haben, daß das früher nicht möglich war und
heute nur noch der Abwärtskompatibilität dient.

Vielleicht hat das jemand genauer im Kopf und möge sein Wissen mal zum Besten geben. :-D

Oxmyx 7. Mär 2005 12:50

Re: Records
 
Zitat:

Zitat von sniper_w
Zitat:

// ^ dient zur Abwärtskompatibilität wäre auch pDataRec.test1 möglich seit D5 oder so..
Das ist aber neu für mich. :shock:

Delphi erkennt automatisch, was du eigentlich willst. Sonst müsstest du ja theoretisch auch bei dynamisch instantiierten Objekten ständig dereferenzieren...

Binärbaum 7. Mär 2005 12:56

Re: Records
 
Zitat:

Zitat von mumu
wie kann ich ein record mit bestimmten werden vorbelegen? ist das möglich?
folgendes funktioniert ja nicht...
Delphi-Quellcode:
type
  PData = ^TData;
  TData = record
    test1 : string='Test';
    test2 : integer=10;
  end;

Das kann auch nicht funktionerern, weil hier nur der Datentyp deklariert wird (Schlüsselwort type). Werte kann man aber nur an Variablen zuweisen.
Delphi-Quellcode:
var sowas: TData =( test1: 'Text'; test2: 12345);
MfG
Binärbaum

opfer.der.genauigkeit 7. Mär 2005 13:00

Re: Records
 
Zitat:

Zitat von Oxmyx
Delphi erkennt automatisch, was du eigentlich willst. Sonst müsstest du ja theoretisch auch bei dynamisch instantiierten Objekten ständig dereferenzieren...

Jap, das ist korrekt.
IMHO gilt das wie gesagt bei Records. Früher wurde wohl immer so auf die Elemente derefferenziert, wenn das nicht der Fall
ist, dann habe ich mal wieder was dazu gelernt. :wink:

//Edit: Pointer Derefferenzierung

mumu 7. Mär 2005 16:22

Re: Records
 
var sowas: TData =( test1: 'Text'; test2: 12345);

ok, also das funktioniert zwar, aber nur für globale variablen, gibt es auch ne möglichkeit für lokale?

Luckie 7. Mär 2005 16:28

Re: Records
 
Zitat:

Zitat von mumu
gibt es auch ne möglichkeit für lokale?

Nein lokale Variablen können nicht vorbelegt werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:58 Uhr.
Seite 1 von 2  1 2      

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