Matthias Frey
2015-09-17 18:43:01 UTC
Hallo zusammen,
ich habe hier ein Problem und bitte nach einigen Stunden um Eure
Mithilfe. Es geht um einen alten Code den ich nun Stück um Stück
umbauen möchte.
In unit 1:
...
type
TThema = record
...
public
Datei : String;
Beschr: String;
Anzahl: String;
...
end;
In unit 2:
...
procedure TBla.HoleThema(Index:Integer; out Thema:TThema);
var ts:TIrgendwas; ...
begin
...
Thema := ThemaFromZeile(ts);
end; // <--1
In unit 3:
procedure TFu.Abc;
var
Thema: TThema; Index:Integer;
...
begin
Index := ListBox.ItemIndex;
...
Themen.HoleThema(Index, Thema);
... // <--2
end;
Bei der Position // <--1 zeigt der Debugger an:
('02345670', 'Alle 8 Ziffern ersetzt nurch 0', ' 0')
Wenn ich nun mit F8 weitergehe und die Methode verlasse,
dann ist bei der Position // <--2 jedoch ('', '', '')
Anders gesagt, der (richtige) Wert des Parameters in der Methode
ist außerhalb ein anderer.
Habe auch schon mal alle dcu's gelöscht, Delphi (XE-2) neu gestartet.
Habe es auch versucht mit "var" statt "out" und als function statt
procedure - half alles nichts. Woran könnte es liegen, was
kann ich noch versuchen oder untersuchen?
Vielleicht noch interessant: nach "end;" komme ich an
_FinalizeRecord vorbei und dabei noch in _FinalizeArray, sowie in
_UStrClr - und das dreimal.
Wenn ich var-Parameter verwende, dann kommen die Werte raus die
auch reingehen. Die Zuweisung "Thema := " scheint nichts zu tun.
Ich könnte zwar nun statt einem Record eine TObject oder ein
TInterfacedObject nehmen, möchte aber nun schon wissen warum
das nicht funktioniert.
Matthias
ich habe hier ein Problem und bitte nach einigen Stunden um Eure
Mithilfe. Es geht um einen alten Code den ich nun Stück um Stück
umbauen möchte.
In unit 1:
...
type
TThema = record
...
public
Datei : String;
Beschr: String;
Anzahl: String;
...
end;
In unit 2:
...
procedure TBla.HoleThema(Index:Integer; out Thema:TThema);
var ts:TIrgendwas; ...
begin
...
Thema := ThemaFromZeile(ts);
end; // <--1
In unit 3:
procedure TFu.Abc;
var
Thema: TThema; Index:Integer;
...
begin
Index := ListBox.ItemIndex;
...
Themen.HoleThema(Index, Thema);
... // <--2
end;
Bei der Position // <--1 zeigt der Debugger an:
('02345670', 'Alle 8 Ziffern ersetzt nurch 0', ' 0')
Wenn ich nun mit F8 weitergehe und die Methode verlasse,
dann ist bei der Position // <--2 jedoch ('', '', '')
Anders gesagt, der (richtige) Wert des Parameters in der Methode
ist außerhalb ein anderer.
Habe auch schon mal alle dcu's gelöscht, Delphi (XE-2) neu gestartet.
Habe es auch versucht mit "var" statt "out" und als function statt
procedure - half alles nichts. Woran könnte es liegen, was
kann ich noch versuchen oder untersuchen?
Vielleicht noch interessant: nach "end;" komme ich an
_FinalizeRecord vorbei und dabei noch in _FinalizeArray, sowie in
_UStrClr - und das dreimal.
Wenn ich var-Parameter verwende, dann kommen die Werte raus die
auch reingehen. Die Zuweisung "Thema := " scheint nichts zu tun.
Ich könnte zwar nun statt einem Record eine TObject oder ein
TInterfacedObject nehmen, möchte aber nun schon wissen warum
das nicht funktioniert.
Matthias