AGB  ·  Datenschutz  ·  Impressum  







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

array als Wert-Parameter

Ein Thema von Cöster · begonnen am 11. Nov 2006 · letzter Beitrag vom 11. Nov 2006
Antwort Antwort
Seite 1 von 2  1 2      
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#1

array als Wert-Parameter

  Alt 11. Nov 2006, 09:05
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?
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#2

Re: array als Wert-Parameter

  Alt 11. Nov 2006, 09:10
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
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: array als Wert-Parameter

  Alt 11. Nov 2006, 09:17
Und da eine Dynamisches-Array-Variable nur einen Pointer enthält, wird eben doch wieder einer übergeben .

@Cöster: Delphi-Referenz durchsuchenCopy?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: array als Wert-Parameter

  Alt 11. Nov 2006, 09:38
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:
<Funktionsname>(Copy(<Recordname>)); oder so:
<Funktionsname>((Int: <Recordname>.Int; Arr: Copy(<Recordname>.Arr))); geht das leider nicht. Wie dann?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: array als Wert-Parameter

  Alt 11. Nov 2006, 09:46
...
Markus Kinzler
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: array als Wert-Parameter

  Alt 11. Nov 2006, 09:54
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.
  Mit Zitat antworten Zitat
Thorben_K

Registriert seit: 22. Okt 2006
Ort: Darmstadt
105 Beiträge
 
Delphi 2006 Professional
 
#7

Re: array als Wert-Parameter

  Alt 11. Nov 2006, 09:56
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;
Thorben
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: array als Wert-Parameter

  Alt 11. Nov 2006, 09:58
...
Markus Kinzler
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: array als Wert-Parameter

  Alt 11. Nov 2006, 10:13
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:
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?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: array als Wert-Parameter

  Alt 11. Nov 2006, 10:21
Dann nehm ich alles zurück
Markus Kinzler
  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 21:47 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