Ich habe mal eine komplette
Unit erstellt. In dieser Variante bekomme ich auch mit Delphi 11 einen EInvalidPointer Fehler. Was genau Delphi in der Procedure "DoSomething" macht ist für mich noch nicht so richtig nachvollziehbar. Ob diese Kombination in einem normalen Programm so vorkommen kann weiß ich nicht. Bei mir hatte ich dies noch nicht. Ich sehe hier auch bei Delphi selbst keinen Fehler. Wenn ich Unsinn programmiere, dann bekomme ich auch ein Unsinniges Ergebnis.
Delphi-Quellcode:
unit Unit1;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs;
type
TForm1 =
class(TForm)
procedure FormCreate(Sender: TObject);
private
FMyVal:
String;
public
procedure DoMore;
procedure DoSomething(
const sVal:
String);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.DoMore;
var
Val:
String;
begin
DoSomething(FMyVal);
end;
procedure TForm1.DoSomething(
const sVal:
String);
var
Val:
String;
begin
FMyVal := '
';
//ohne diese Zeile gibt es keinen Fehler
Val := sVal;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FMyVal := '
XXX';
//ohne diese Zeile gibt es keinen Fehler
DoMore;
end;
end.