TList und TypeCast

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Bernd82
Beiträge: 53
Registriert: Di 22. Sep 2009, 15:12

TList und TypeCast

Beitrag von Bernd82 »

In Delphi habe ich immer eine TList angelegt und konnte die Inhalte direkt den Variablen zuweisen:

Code: Alles auswählen

VAR Lst:TList;
    Img:TImage;
BEGIN
  Img:=TImage.Create;
  Lst:=TList.Create;
  Lst.Add(Img);
  Img:=Lst[0];               <-------- Error
  Img.Free;
  Lst.Free;
END;
 

In Lazarus / FreePascal scheint das nicht zu gehen?!? Ich muss immer schreiben:

Code: Alles auswählen

  Img:=TImage(Lst[0]);

Gibt's da 'nen Compilerschalter?

Gruß Bernd

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: TList und TypeCast

Beitrag von Michl »

Du kannst

Code: Alles auswählen

{$mode delphi}  
nutzen.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Warf
Beiträge: 1909
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: TList und TypeCast

Beitrag von Warf »

Ich würde nicht den Pascal Dialekt wegen ein Paar Zeile ändern.
Ich denke sogar das die FreePascal Variante die bessere ist, da es deutlich Sicherer ist.
Wenn die Liste nur Images enthält nimm doch eine generische Liste (TFPGList). Wenn die Liste verschiedene Objekte enthält nimm doch eine TObjecList und Caste via As Operator. Das sorgt dafür das, falls das Element den falschen Typ hat, ein Fehler geworfen wird. TList würde ich nur verwenden wenn du Zeiger auf andere Typen und Objekte (und eventuell noch integers) mischst. Ansonsten sind die oben genannten Varianten definitiv besser

Bernd82
Beiträge: 53
Registriert: Di 22. Sep 2009, 15:12

Re: TList und TypeCast

Beitrag von Bernd82 »

Danke für Eure Antworten. Den {$mode delphi} habe ich mir angeschaut. Der hat auch Nachteile und das exakte Type-Casten hat auch Vorteile. Es ist halt mehr Schreibaufwand. Und erfordert mehr Tricks, wenn man verschiedene Objekte in einer Liste hat. Ich weiß jetzt jedenfalls über die Möglichkeiten Bescheid. Danke nochmal für Eure Hilfe!

Gruß Bernd

MikeRohsoft
Beiträge: 1
Registriert: Sa 24. Sep 2016, 07:06

Re: TList und TypeCast

Beitrag von MikeRohsoft »

Du musst einfach nur

Code: Alles auswählen

 
Img:=Lst[0];
 

in

Code: Alles auswählen

 
Img:=@Lst[0];
 

ändern

Warf
Beiträge: 1909
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: TList und TypeCast

Beitrag von Warf »

MikeRohsoft hat geschrieben:Du musst einfach nur

Code: Alles auswählen

 
Img:=Lst[0];
 

in

Code: Alles auswählen

 
Img:=@Lst[0];
 

ändern

Das wird nicht funktionieren da der Adressoperator @ nur auf Variablen und nicht auf Objekt Array-Properties definiert ist

wp_xyz
Beiträge: 4888
Registriert: Fr 8. Apr 2011, 09:01

Re: TList und TypeCast

Beitrag von wp_xyz »

Code: Alles auswählen

  Img:=TImage(Lst[0]);     

Antworten