Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
23. Nov 2013
2007 = noch keine Generics
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
23. Nov 2013
Den Inhalt einer Variable und nicht des Typs.
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
23. Nov 2013
Ähhhhhh, willst du nun den Typ oder die Variable durchlaufen?
(vielleicht wäre es direkt aufgefallen, wenn du Typen auch mit dem allseits anerkannten Prefix versiehst)
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
22. Nov 2013
Es geht aber auch nur, weil die das CopyOnWrite bei diesen dynamischen Arrays "kaputt" ist.
Im Prinzip wird beim Entritt in diese Methode, da kein CONST, die Referenzzählung erhöht.
Beim Schreibzugriff auf das Feld müsste aber gemerkt werden, daß hier RefCount <> 1 ist und somit müsste vor dem Schreibzugriff eine Kopie erstellt werden, wo dann erst reingeschrieben wird.
Und ich hoffe...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
22. Nov 2013
Jain. Ja, es sind Referenztypen, aber es ist wie beim String, was ja auch ein Referenztyp ist, bzw. ein String (nicht ShortString oder WideString) ist sogar ein aufgemotztes array of char.
Und da ist es wie bei Integer und Co. ... man braucht das VAR.
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
22. Nov 2013
Erstmal fehlte da ein VAR, denn das Array soll ja verändert werden.
function allocatenextfreefield(var a: Tintarray): Integer; overload;
Und das hat array of ... als Patrameter eine besondere Bedeutung, denn das definiert einen "speziellen" Array-Parameter, aber der ist hier nicht so wichtig.
Du brauchst erstmal einen VAR-Parameter und das ist sowieso nicht mit dem Array-parameter...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
21. Nov 2013
Jupp.
Genauso, wie bei den überladenen Methoden.
Wenn man das in einer Methode macht und dann erst in der Prozedur den Typ prüft, dann bekommt man auch erst zur Laufzeit mit (hoffentlich schnell), wenn etwas nicht stimmt.