| Autor |
Beitrag |
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Mo 25.05.09 21:54
Hallo
ich habe einen Typ definiert:
Delphi-Quelltext 1: 2: 3: 4:
| type TTest=record feld:array of Byte; a,b:Integer; end; |
Was passiert wenn ich jetzt das hier habe:
Delphi-Quelltext 1: 2: 3: 4: 5:
| t1,t2:TTest; t1.t2:=t1; |
Wird bei der Zuweisung lediglich der Pointer kopiert und alle Modifikationen auf t2 wirken sich unmittelbar auf t1 aus oder wird die komplette Struktur kopiert.
Falls ja, ich möchte nur den Pointer kopieren und nicht die ganze struktur, da t1 im original ein array of TTest ist und ich t2 nur als abkürzung verwenden möchte
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Mo 25.05.09 21:59
Soweit ich weiß wird bei nem record der Inhalt kopiert, und bei ner Klasse nur der Pointer.
Du kannst jedoch einen weiteren Typ, PTest = ^TTest definieren, und mit diesem dann hantieren.
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
Flamefire 
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Mo 25.05.09 22:05
hatte ich auch erst gedacht...dann muss ich aber immer das "^" mitschleppen
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mo 25.05.09 22:46
Entweder ^ benutzen oder TTest als Klasse implementieren, einen Tod musst du sterben  .
Wobei du auch erst t2 bearbeiten und am Schluss wieder ins Array übertragen könntest.
_________________ >λ=
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Mo 25.05.09 23:09
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Mo 25.05.09 23:12
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Flamefire 
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Di 26.05.09 07:12
ok also könnte ich:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| var List: array of TMyRec; Single: PMyRec; begin Single:= @List[0] Single.liste[5]:= 42; |
machen?
BTW: was ist wenn ich ein Fuktion mit referenzparameter habe?
wie übergebe ich das?
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Di 26.05.09 12:42
Flamefire hat folgendes geschrieben : | | ok also könnte ich: [...] machen? |
Ja.
Flamefire hat folgendes geschrieben : | | was ist wenn ich ein Fuktion mit referenzparameter habe? wie übergebe ich das? |
Wenn du eine solche Prozedur hast:
Delphi-Quelltext 1: 2: 3: 4:
| procedure Foo(var Rec: TMyRec); begin Rec.b := 7; end; |
Dann kannst du IMHO den Aufruf so gestalten:
Delphi-Quelltext 1: 2: 3: 4: 5:
| var Single: PMyRec; begin Single := New(PMyRec); Foo(Single^); end; |
Das gleiche gilt selbstverständlich auch für const- und out-Parameter (vorausgesetzt, es geht mit var  ).
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Di 26.05.09 16:02
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Di 26.05.09 17:36
|
|