Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Generics in Freepascal (https://www.delphipraxis.net/103977-generics-freepascal.html)

pajofego 25. Nov 2007 16:15


Generics in Freepascal
 
Hallo zusammen,

ich hoffe hier ist der eine oder andere der sich neben Delphi auch mit fpc beschäftigt. Ich versuche gerade das neue feature Generic von fpc zu benutzen. Aus der Hilfe bin ich noch nicht so ganz schlau geworden. Im grunde genommen möchte ich wie in C++ eine Vektor Template Klasse definieren.

Meine Idee sieht wie folgt aus:

Delphi-Quellcode:
type
 Generic TVector<T> = class(TList)
  protected
    data : T;
  end;
var
 MyGeneric:<double>TVector;
Die Definition der generischen Klasse TVector wird soweit vom Compiler akzeptiert. Was ich bis jetzt nicht weiss ist, wie definiert man denn nun eine Instanz auf die Templateklasse? O.g. wird nicht akzeptiert. Hat einer von euch ein Beispielcode bzw. Erfahrung mit diesem neuen Feature in fpc? Ich konnte leider bis heute nicht den Artikel in Toolbox Magazin einsehen.

Danke,
Gruß
pajofego

Alloc 25. Nov 2007 16:30

Re: Generics in Freepascal
 
Hi,

hast du es schonmal umgekehrt probiert? Also
Delphi-Quellcode:
MyGeneric: TVector<double>;
? So läuft das zumindest in Java =)

Grüße,
Chris

himitsu 25. Nov 2007 16:47

Re: Generics in Freepascal
 
ich nutze zwar kein FPC, aber Google meinte z.B. dieses dazu
Zitat:

In short, my second syntax proposal is:

- generic definition syntax (type section):
* {type_name} = generic {type_definition} of {generic_holder} ;

- generic implementation syntax (var section):
* {var_name} : specialize {generic_type} for {implemented_type} ;
* or if it's defined in type section:
* {type_name} = specialize {generic_type} for {implemented_type} ;
aus http://www.nabble.com/FPC's-generics-t3914040.html

pajofego 25. Nov 2007 21:43

Re: Generics in Freepascal
 
So funktioniert's! Danke schon mal für die Tipps!

Ob das der prime path ist für die Verwendung von generics ist...bin ich mir nicht sicher! Vielleicht ist der eine oder andere hier der auch ein kleinwenig mit fpc programmiert.

Delphi-Quellcode:
type
  Generic TVector<T> = class(TList)
  protected
    data : T;
  end;
  TVectorDouble = specialize TVector<double>;
var
  MyGeneric: TVectorDouble;
Danke Gruß
pajofego

jbg 25. Nov 2007 22:02

Re: Generics in Freepascal
 
Zitat:

Zitat von pajofego
Ob das der prime path ist für die Verwendung von generics ist...bin ich mir nicht sicher!

Ja, so werden Generics "spezialisiert" in FPC. Bei Delphi wird das dann wohl doch eher mit "var MyGeneric: TVector<double>;" von statten gehen. Zumindest lässt sich das aus Allen Bauers Blog andeutungsweise herauslesen.

pajofego 25. Nov 2007 22:30

Re: Generics in Freepascal
 
Ach,

das ist ja schön, dass Delphi da auch mal nachzieht. Die von dir genannte Syntax gefällt mir da auch besser. Finde ich schon erstaunlich was für eine Arbeit die Jung von fpc machen. Sehr viele Neuigkeiten haben die recht früh eingebracht...man denke da z.B. nur an Operator Overloading.

Wie sieht's eigentlich mit statischen Klassenvariabeln aus? Kann das Delphi Win32? Bei fpc habe ich da noch nichts finden können.

Gruß
pajofego

jbg 26. Nov 2007 11:42

Re: Generics in Freepascal
 
Zitat:

Zitat von pajofego
Wie sieht's eigentlich mit statischen Klassenvariabeln aus? Kann das Delphi Win32?

Die gibt es seit Delphi 2006.
Delphi-Quellcode:
TTest = class(TObject)
private
  class var MyVar: Integer;
public
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:01 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