IWie Objekte werden in delphi XE vs XE4 initialisiert
type
TLoadOption = class
private
FAutoSearch: Boolean;
public
property AutoSearch: Boolean read FAutoSearch write FAutoSearch;
end;
In einer der Funktionen i Erstellung ist das Objekt der Klasse in Stapel
procedure MyView.InitializeForm(const aMsg: MyMsg);
//---------------------------------------------------------------------------
var
Options: TLoadOption;
begin
if aMsg.OptionalObject <> nil then
Options := aMsg.OptionalObject as TLoadOption;
if Assigned(Options) and Options.AutoSearch then
DoRefresh;
end;
ich vorbei bin nicht etwas eine Klasse in aMsg sind also idealerweise keine Optionen eingestellt. In Delphi XE werden die Optionen standardmäßig als nil gesetzt und daher wird dieser DoRefresh nicht aufgerufen, aber wenn ich denselben Code in Delpi XE4 ausführe, werden die Optionen mit einem zufälligen Wert initialisiert und AutoSearch wird immer wahr und es ruft auf DoRefresh-Funktion, die unerwünscht ist.
Ich frage mich, ob es Compiler-Optionen gibt, die Standardwerte auf nicht initialisierte Variable setzen. Meine einzige Lösung im Moment ist so
procedure MyView.InitializeForm(const aMsg: MyMsg);
//---------------------------------------------------------------------------
var
Options: TLoadOption;
begin
Options := nil;
if aMsg.OptionalObject <> nil then
Options := aMsg.OptionalObject as TLoadOption;
if Assigned(Options) and Options.AutoSearch then
DoRefresh;
end;
ist das ein richtiger Weg?
Was ist MyMsg? Dies ist eine Klasse, aufnehmen oder was? Sie sagen über den Standardwert, aber dieser Parameter hat in Ihrem Fall keinen Standardwert. Wie weisen Sie den Standardwert zu? – Darthman
Hat Sie der Compiler nicht vor diesem Code gewarnt? Es hätte dir sagen sollen, dass 'Optionen' nicht initialisiert wurde. Ignoriere niemals eine Compiler-Warnung. –
Sie haben die Antwort angenommen, die die beste Lösung für Ihr Problem ergab, aber auch die Frage, die Sie gestellt haben, nicht beantwortet. Sie haben nach der Initialisierung einer lokalen Variablen gefragt. –