Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi array als Wert-Parameter (https://www.delphipraxis.net/80566-array-als-wert-parameter.html)

Cöster 11. Nov 2006 09:05


array als Wert-Parameter
 
Hi!

Wenn man array-Paramter als Wert-Parameter übergibt, werden sie ja trotzdem immer wie var-Parameter behandelt, oder? Wo liegt da der Sinn? Wie kann man umgehen, dass das als Parameter übergebene Array in der aufrufenden procedure geändert wird? Muss ich dann in der aufgerufenen einen array als lokalen Parameter haben und da alle Werte einzeln reinkopieren? Denn wenn ich das gesamte Array auf einmal kopiere, führt jede Änderung an dem einen Array auch zur Änderung des anderen.

Gibt es da noch andere Möglichkeiten oder ist das die einzige?

malo 11. Nov 2006 09:10

Re: array als Wert-Parameter
 
AFAIK erhälst du nur einen Pointer, wenn du das durch das Schlüsselwort var oder const deutlich machst. Wenn du keines dieser Schlüsselworte angibst wird AFAIK kein Pointer übergeben, sondern die Variable im Parameter wird kopiert ;)

Khabarakh 11. Nov 2006 09:17

Re: array als Wert-Parameter
 
Und da eine Dynamisches-Array-Variable nur einen Pointer enthält, wird eben doch wieder einer übergeben ;) .

@Cöster: Delphi-Referenz durchsuchenCopy?

Cöster 11. Nov 2006 09:38

Re: array als Wert-Parameter
 
Ok, danke erstmal.
Nun habe ich einen Record:
Delphi-Quellcode:
TRecord = record
  Int: Integer;
  Arr: array of Integer;
end;
Dieser Record wird an eine Funktion übergeben.
So:
Delphi-Quellcode:
<Funktionsname>(Copy(<Recordname>));
oder so:
Delphi-Quellcode:
<Funktionsname>((Int: <Recordname>.Int; Arr: Copy(<Recordname>.Arr)));
geht das leider nicht. Wie dann?

mkinzler 11. Nov 2006 09:46

Re: array als Wert-Parameter
 
...

Cöster 11. Nov 2006 09:54

Re: array als Wert-Parameter
 
Zitat:

Zitat von mkinzler
@Cöster: Du scheinst wohl auch zu den Unglücklichen ohne Delphi Hilfe zu gehören

Ich hab im Abschnitt Parameter nichts darüber gefunden. Bei der Suche nach "Record Parameter" wurde nix gefunden.

Thorben_K 11. Nov 2006 09:56

Re: array als Wert-Parameter
 
FunktionsName ( MyRecord : TRecord):boolean;

das ding TRecord zu nennen halte ich allerdings für nicht so pralle^^

oder halt#

FunktionsName (var MyRecord : TRecord):boolean; oder

FunktionsName (const MyRecord : TRecord):boolean;

mkinzler 11. Nov 2006 09:58

Re: array als Wert-Parameter
 
...

Cöster 11. Nov 2006 10:13

Re: array als Wert-Parameter
 
Zitat:

Zitat von Thorben_K
das ding TRecord zu nennen halte ich allerdings für nicht so pralle^^

Ich weiß, war auch nur ein Beispiel.

@ mkinzler: In der Delphi-Hilfe steht:

Zitat:

Delphi-Quellcode:
function Copy(S: string; Index: Integer; Count: Integer): string;
...
Hinweis:
Wenn S ein dynamisches Array ist, brauchen Sie die Parameter Index und Count nicht anzugeben. Copy kopiert dann das gesamte Array.
Daraus schloss ich, dass S auch ein Array sein kann und die anderen beiden Parameter dann wegfallen. Liege ich da falsch?

Aber wie übergebe ich denn jetzt einen Record, wobei durch die Änderung des Arrays des Records in der aufgerufenen Funktion nicht auch der Record in der aufrufenden Funktion geändert wird? Ein Record kann der Funktion Copy ja nicht als Parameter übergeben werden, wie ich oben auch schon geschrieben hab.
Muss ich dafür vor dem Aufruf die Record-Eigenschaften einzeln unter einer lok. Variablen speichern und diese dann übergeben?

mkinzler 11. Nov 2006 10:21

Re: array als Wert-Parameter
 
Dann nehm ich alles zurück :oops:


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