Hallo, ich habe zu folgendem Vorgang einmal eine Frage:
Ich habe zunächst folgende globale Deklarationen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| Unit...
. . .
POptions = ^.AOptions;
AOptions = record Pos: string; Beschr: String; opt_nummer: array of single; opt_anzahl: array of integer; opt_menge: array of single; opt_text: tstringlist; opt_einheit: tstringlist; end;
var artikelliste array of POptions; |
nun folgt innerhalb einer Prozedur folgende lokale Deklaration:
Delphi-Quelltext
und es findet folgender Vorgang innerhalb einer Schleife dieser Prozedur statt:
Delphi-Quelltext
1: 2: 3: 4:
| ARec := artikelliste[i] |
Ich habe dazu nun folgende Fragen:
1. erhält ARec nur die Adresse des Records auf das artikelliste[i] zeigt, oder wird in
ARec eine Kopie des Records angelegt?
2. für den Fall, das ARec (zum Teil) eine Kopie des Records erhält:
was passiert mit den dynamischen Arrays innerhalb des Records? Werden an ARec Kopien
der Arrays von artikelliste[i] übergeben (und für diese Kopien Speicher reserviert) oder enthalten
die dyn. Arrays von ARec nur die Adressen der dyn. Arrays von artikelliste[i]?
Werden an die Strings und TStringLists von ARec Kopien der jeweiligen Elemente
von artikelliste[i] übergeben oder auch nur die Adressen der "Originale"?
3. Die Zuweisung an ARec findet innerhalb der Schleife mehrmals statt. Was passiert, wenn die dyn.
Arrays von artikelliste[i] einmal weniger Elemente haben als die jeweiligen von ARec zu diesem
Zeitpunkt? (Für den Fall, das die Arrays von ARec nicht nur Adressen erhalten).
Werden die Arrays von ARec in diesem Fall verkürzt, so dass die Funktion length() nach der
Zuweisung die korrekte Anzahl Elemente liefert?
So.. das ist bestimmt ganz schön viel, würde mich aber trotzdem freuen, wenn sich jemand hier etwas auskennt
Liebe Grüße
Moderiert von
Motzi: Code- durch Delphi-Tags ersetzt.