Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Problem mit input Argument
buSC - Di 09.02.10 12:07
Titel: Problem mit input Argument
Hallo
ich habe ein Procedure wie folgend:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| Procedure Pro(arr:array of double); var... begin quicksort(arr); verbrauch von sortierte "arr" ; end; |
das Problem ist ,wenn der "Pro"-Aufruf schon fertig ist, ist die Array "arr" sortiert,wobei ich erwarte,dass die Array "arr" unsortiert bleibt,angesicht dessen ,dass der Argumant von "Pro" ein "value"-Argumant ist und kein "var"-Argumant ist.
warum passiert so ..? vielen Dank im Voraus.
:)
Moderiert von
Gausi: Delphi-Tags hinzugefügt
Moderiert von
Narses: Titel korrigiert.
martin300 - Di 09.02.10 13:13
Hallo,
es war sehr schwierig den Inhalt zu verstehen. Dazu steht in der Hilfe folgendes:
Da in Delphi keine Wertesemantik für dynamische Arrays implementiert ist, stellen "Wert"-Parameter in Routinen keine vollständige Kopie des dynamischen Arrays dar. Beispiel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| type TDynamicArray = array of Integer; procedure p(Value: TDynamicArray); begin Value[0] := 1; end; procedure Run; var a: TDynamicArray; begin SetLength(a, 1); a[0] := 0; p(a); Writeln(a[0]); end; |
Beachten Sie, dass die Zuweisung zu Value[0] in Routine p den Inhalt des dynamischen Arrays der aufrufenden Routine ändert, obwohl Value ein Wertparameter ist. Falls eine vollständige Kopie des dynamischen Arrays erforderlich ist, verwenden Sie die Standardprozedur Array.Copy, um eine Wertekopie des dynamischen Arrays zu erstellen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!