Egal ob Optimierung an oder aus, stimmt.
Und noch interessanter: Der Fehler besteht nur beim
Win32-Compiler, bei Win64 nicht. Andere Compiler kann ich nicht testen.
Könnte man folgendes als Minimalbeispiel in die
QC eintragen?
Delphi-Quellcode:
program Project4;
{$APPTYPE CONSOLE}
type
TMyClass = class
one, two: String;
end;
var
globalInstance: TMyClass;
function getInstance(): TMyClass;
begin
if not Assigned(globalInstance) then
globalInstance := TMyClass.Create();
globalInstance.one := 'one';
globalInstance.two := 'two';
Result := globalInstance;
end;
function getBoth(): String;
var
oneCopy, twoCopy: String;
begin
oneCopy := getInstance().one;
twoCopy := getInstance().two;
WriteLn( oneCopy + ' ' + twoCopy );
Result := getInstance().one + ' ' + getInstance().two;
end;
begin
WriteLn( getBoth() );
// Output on DCC32:
//one two
//two two
// Output on DCC64:
//one two
//one two
end.
Oder ginge das noch kürzer?