Einzelnen Beitrag anzeigen

Sergej_Molotov

Registriert seit: 18. Jul 2006
61 Beiträge
 
Delphi 11 Alexandria
 
#1

const String als Parameter

  Alt 19. Nov 2015, 15:03
Hallo Zusammen,

vielleicht hat ja jemand eine Erklärung, warum es unterschiede in Delphi XE3 und Delphi XE8 bei der Verwendung von konstanten String Parameter gibt. Folgendes Code-Beispiel funktioniert unter XE3 und löst unter XE8 eine EInvalidPointer-Exception aus.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  FTest := 'Ich bin ein Test';
  MachWas(FTest);
  ShowMessage(FTest); // Ausgabe 'Ich bin ein Test hurz' nur bei XE3 wegen der u.g. Exception
end;


procedure TForm1.MachWas(const aString: String);
begin
  FTest := aString + ' hurz';
  ShowMessage(aString); // Exception in Delphi XE8 und unter XE3 erscheint die MessageBox mit 'Ich bin ein Test'
end;
Es ist natürlich klar, dass der Pointer von 'FTest' durch die Zuweisung in 'MachWas' geändert wird, mich irritiert nur das unterschiedliche Verhalten bei gleichen Compiler-Einstellungen
Thomas
  Mit Zitat antworten Zitat