AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TList 10.1 Berlin vs 10.3 Rio

Ein Thema von Int3g3r · begonnen am 18. Aug 2020 · letzter Beitrag vom 18. Aug 2020
 
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
118 Beiträge
 
Delphi 10.3 Rio
 
#1

TList 10.1 Berlin vs 10.3 Rio

  Alt 18. Aug 2020, 10:42
Delphi-Version: 10.3 Rio
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
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz