Forum: Programmieren allgemein
by himitsu,
3. Aug 2018
Jupp, mit strukturierten Typen sind Records gemeint,
also im Prinzip geht es hier um alle Typen, die größer als SizeOf(Pointer) sind.
Strings (LongStrings) und dynamische Arrays sind praktisch das Gleiche. (beim String sind noch paar versteckte Felder mit drin und bei dynamischen Arrays fehlt das CopyOnWrite, welches die StringTypen aber haben)
Ausnahme sind ShortStrings, welche ein...
Forum: Programmieren allgemein
by himitsu,
9. Jun 2017
Im ARC hat es das doch.
Wie gesagt, das Problem lässt sich sofort lösen, wenn der Compiler bei Übergabe von irgendwas an einen Const-Parameter eine Variable zwischenschaltet.
Immer wenn es da implizit von TObject zu Interface castet.
Bzw. bei TestFunction(TSomething.Irgendwas.Create) gibt es doch dieses Problem.
Bei TestFunction(Something.GetInterface) geht es, da Delphi aus diesem...
Forum: Programmieren allgemein
by himitsu,
9. Jun 2017
In soeinem Fall sollte Delphi besser eine (interne) lokale Variable generieren und Diese an den Parameter übergeben.
Und nein, denn wenn das schon zu Beginn 1 ist und man übergibt das Interface an eine Variable, dann wäre es danach 2.
Ist die Variable dann weg, wäre es aber immernoch 1 und würde niemals freigegeben.