Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
25. Sep 2018
Ihr müsst bei "ohne var" das SetLength weglassen,
denn Dieses behandelt ordnungsgemäß die Referenzzählung und macht vor dem nachfolgenden Schreibzugriff die lokale "Kopie" unique.
Mit "const" würde die Referenz nicht hochgezählt, was bei SetLength dann durchrutschen würde (wenn vor Funktionsaufruf nur eine Referenz existierte), aber da SetLength bei einer Kostante vom Compiler verweigert wird,...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
7. Mär 2010
kann nicht sein, denn dieses kopiert alles.
Edit: ich weiß nicht, wo der Fehler war.. aber jetzt funktioniert es auf einmal mit dynArray2 := Copy(dynArray1, 0, High(dynArray1) + 1); :gruebel: (danke allen) :thumb:
dynArray2 := Copy(dynArray1, 0, Length(dynArray1));
oder eben
dynArray2 := Copy(dynArray1);
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
7. Mär 2010
//var el: telement;
// arr: array of telement;
for el in arr do
:angel2:
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
7. Mär 2010
Length(arr)-1 = High(arr) ... bei einem dynamischem Array
Und jupp, es ist Copy(source, start, len).
Schalte mal die Bereichsprüfung in den Projektoptionen an.
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
7. Mär 2010
Delphi ist da sehr strikt und es sind zwar ähnliche, aber nicht die selben Typen.
var dynArray1, dynArray2: array of TIrgendwas;
type TIrgendwasArray = array of TIrgendwas;
var dynArray1, dynArray2: TIrgendwasArray;
type TIrgendwasArray = array of TIrgendwas;
var dynArray1: TIrgendwasArray;
dynArray2: TIrgendwasArray;
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
7. Mär 2010
Es gibt zwar eine Refferenzzählung bei dynamischen Arrays, welche manchmal ihre Probleme hat.
Sonst würde man mit Folgendem keine Probleme haben.
dynArray2 := dynArray1;
Vorallem wird "leider" nicht vor dem Zuweisen eines Wertes geprüft, ob es eine Singleinstanz ist und somit werden die Werte direkt und somit auch aller gleichen Instanzen geändert.
dynArray2 := Copy(dynArray1);
sorgt...