ich habe eine Unit, die unter Delphi eingesetzt wird und die ich jetzt auch für Lazarus/fpc nutzen würde. In dieser werden Generics genutzt (und auch in sinnvoller Weise, wie ich denke). Da ich nicht die ganze Unit hier posten möchte, habe ich mal den Code eingedampft:
Code: Alles auswählen
unit BLAHUtils;
{$mode delphi}{$H+}
interface
uses
SysUtils,
Classes,
Generics.Defaults,
Generics.Collections,
Math;
type
TCycle = class
Amp : Single;
Mean : Single;
isHalf : boolean;
Constructor Create(); overload;
Constructor Create(const FromValue: Single; const ToValue : Single; const isHalf : boolean); overload;
end;
TOneCycle = class
Name : string;
FileName : string;
WeightFactor : Double;
LoadCycleList : TList<TCycle>; // <--- hier bekomme ich den Syntax-Error
constructor Create(ID : integer);
destructor Destroy(); override;
// ... some more functions defined
///// Fehlermeldung:
/////BLAHUtils.pas (....): Error: Identifier not found "TList$1"
/////BLAHUtils.pas (....): Error: Illegal expression
Die Fehlermeldung (im CODE-Bereich angegeben) deutet darauf hin, dass der Compiler nichts mit der generics-Definition "TList<TCycle>" anfangen kann (klar, ich habe ja die beiden Units nicht mehr im USES-Teil).
Das, was ich im Netz gefunden habe, kann ich nur so halb deuten und verwirrt mich gerade mehr als dass es hilft. Deshalb frage ich hier nach.
Was ich verstanden habe, deute ich so, dass ich "uses fgl" (Free Pascal Generics Lib) hinzunehmen muss und dann "TList<...>" durch "TFPGList<...>" ersetzen muss. Ist das so richtig (was dann doch ein wenig Umbau bedeuten würde)? Allerdings war die Seite mit dieser Info auch nicht mehr ganz neu. Allerdings verstehe ich nicht, wieso das nicht einfach mit "TList<...>" gehen sollte; der Syntax ist doch auch zulässig, oder?
Danke für Eure Hilfe,
Photor