Guten Tag,
Ich verwende unter Delphi 10.3 Rio folgende routine:
Delphi-Quellcode:
procedure Tfrm_Umsatz_Statistik.GUIUmsatzMitKunde(_visible: boolean);
var elements : TList;
ele : TObject;
begin
elements := Tlist.Create;
elements.Add(Label3);
elements.Add(lblDatumUnbestimmt);
elements.Add(ChkBoxDatumsbereich);
elements.Add(chkBoxGattungSelect);
elements.Add(lblTitelGattung);
elements.Add(ChkBoxAlleGattung);
elements.Add(Label7);
for ele in elements do
begin
if ele is TLabel then
begin
Tlabel(ele).Visible := _visible;
end
else if ele is TCheckBox then
begin
TCheckBox(ele).Visible := _visible;
else if ele is TListBox then
begin
TListBox(ele).Visible := _visible;
end;
end;
elements.Free;
end;
Lässt sich unter 10.3 Rio ohne weiteres compillieren.
Unter 10.1 erhalte ich folgende Fehlermeldung:
Zitat:
[dcc32 Fehler] form_Umsatz_Statistik.pas(1412): E2010 Inkompatible Typen: 'TObject' und 'Pointer'
Die Fehlermeldung ist bezogen auf die for-in-Schleife.
Wie lässt sich diese procedure in 10.1 verwenden ?
Ich habe es versucht mit Pointern wie folgt zu realisieren :
Delphi-Quellcode:
procedure Tfrm_Umsatz_Statistik.GUIUmsatzMitKunde(_visible: boolean);
var elements : TList;
ele : ^TObject;
begin
elements := Tlist.Create;
elements.Add(Label3);
elements.Add(lblDatumUnbestimmt);
elements.Add(ChkBoxDatumsbereich);
elements.Add(chkBoxGattungSelect);
elements.Add(lblTitelGattung);
elements.Add(ChkBoxAlleGattung);
elements.Add(Label7);
for ele in elements do
begin
if ele^ is TLabel then
begin
Tlabel(ele^).Visible := _visible;
end
else if ele^ is TCheckBox then
begin
TCheckBox(ele^).Visible := _visible;
else if ele^ is TListBox then
begin
TListBox(ele^).Visible := _visible;
end;
end;
elements.Free;
end;
Hier erhalte ich eine
access-violation beim dereferenzieren zur Laufzeit. An der Stelle
if ele^ is TLabel then
Gruss Int3g3r