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