Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Lazarus (IDE) (https://www.delphipraxis.net/81-lazarus-ide/)
-   -   Grundsätzliche Frage zu Lazarus Komponenten (https://www.delphipraxis.net/157046-grundsaetzliche-frage-zu-lazarus-komponenten.html)

QuickAndDirty 26. Dez 2010 20:04

Grundsätzliche Frage zu Lazarus Komponenten
 
Hallo ich bin ein noob was Lazarus angeht...und bevor es jemand in den falschen Hals bekommt...ich finde es klasse was Lazarus und Freepascal so drauf haben und was da im Internet so entstanden ist. Nur eine Sache hat mich jedesmal gestört, wenn ich versucht war auf Lazarus zu wechseln.

Da der Umfang der Komponenten Bilbliothek von Lazarus "ab Werk" sooo gar nicht umfangreich ist ist man ja darauf angewiesen Komponenten nachträglich einzufügen...finde ich ok.
Aber warum muss ich dafür die IDE jedes mal neukompilieren? Das ist in sofern Kritik meiner seits, weil ich das schon mehrmals nicht hinbekommen habe und dann lieber neuinstalliert habe, weil ich die Fehler nicht mehr hinbekam. Das Ausprobieren von Komponenten wird ja so recht schwer. Andererseits interessiert es mich wirklich wieso man das nicht anders gelöst hat. Hat einer eine Idee?

igel457 27. Dez 2010 13:42

AW: Grundsätzliche Frage zu Lazarus Komponenten
 
Der Freepascal-Kompiler unterstützt einfach noch keine Packages, mit denen Objekte zur Laufzeit (zum RTTI-System) hinzugefügt werden können.

QuickAndDirty 28. Dez 2010 10:12

AW: Grundsätzliche Frage zu Lazarus Komponenten
 
ok,
-Ist das RTTI System ein System übergreifender Standard?
-Gibt es ein RTTI System nur unter Windows?
-Hat Lazarus oder Delphi sein eigenes RTTI System?

Gibt es überhaupt Leute in der FPC Community die wissen wie umständlich das zurzeit für die IDE ist?

Ich habe so das Gefühl das es da nicht viele Überschneidungen gibt zwischen der Lazarus und der FPC Community...täusche ich mich da?

Gibt es ein laufendes Unterprojekt für packages in FPC?

JamesTKirk 29. Dez 2010 22:22

AW: Grundsätzliche Frage zu Lazarus Komponenten
 
Ich versuch dich jetzt mal etwas (in Bezug auf Packages) aufzuklären.

Delphi unterstützt sogannte Dynamische Packages, welche im großen und ganzen DLLs mit ein bisschen Compiler Magic dahinter sind, damit du auch einfach Klassen, etc. aus so einem Package nutzen kannst. Mit einer normalen DLL hast du nämlich früher oder später ein Problem, wenn du einfach Objekte von der Anwendung zur DLL oder umgekehrt weiterreichst.

So... diese Magic basiert auch sehr darauf wie DLLs unter Windows funktionieren (es gibt da ein paar dezente Unterschiede zwischen Windows DLLs, Linux SOs und OS X Dynlibs), weshalb dies natürlich entsprechend zumindest für die wichtigsten Platformen (Windows, Linux, Max OS X) im Compiler implementiert werden muss.

Die Entwickler (hierbei geht es vor allem um die Free Pascal Entwickler) wissen zwar, dass vor allem für Lazarus solche Packages von enormen Vorteil wären, doch darfst du nicht vergessen, dass der Compiler von Leuten in ihrer Freizeit geschrieben, erweitert und gepflegt wird (mir ist zumindest kein Fulltime FPC Entwickler bekannt). Und man kann solchen Freiwilligen eben nicht vorschreiben woran sie zu arbeiten haben. Jeder pickt sich nämlich das raus, was er gern machen möchte.

Vor kurzem hat allerdings jemand Interesse angemeldet Packages in FPC zu implementieren, also vielleicht sehen wir "demnächst" mal was. :mrgreen: (nein, nicht ich :P )

Noch zur RTTI: RTTI steht für RunTime Type Information und wird zum Beispiel von Lazarus und Delphi dazu verwendet den Object Inspector mit der Liste der veröffentlichten Properties einer Komponente (Stichwort "published") zu füttern und dann daraus die LFM- bzw. DFM-Datei zu erzeugen.

Neben der Konsistenz der RTTI ist bei Packages allerdings zum Beispiel auch zu beachten (aus Sicht des Implementierers), dass z. B. eine bestimmte Unit nur einmal in der gesamten Anwendung (EXE + Packages) vorkommen darf.

Ich hoffe das hat dir etwas Einblick verschafft.

Gruß,
Sven

QuickAndDirty 31. Dez 2010 08:31

AW: Grundsätzliche Frage zu Lazarus Komponenten
 
Also ich weiß durchaus grundsätzlich was Delphi packages machen und das es DLLs sind die beim Laden irgendwie ihre RTTI informationen in die anwendnung integrieren während normale DLLs ja ihre RTTIs ganz alleine verwalten.

Mich wundert eben nur das von den compiler menschen alles mögliche gehackt wird (Windowsce unterstützung für arm etc..) aber nicht sowas.

mjustin 31. Dez 2010 12:42

AW: Grundsätzliche Frage zu Lazarus Komponenten
 
Dass man Komponenten überhaupt umständlich in der IDE 'installieren' muss, kann man umgehen indem sie dynamisch (zur Laufzeit) erstellt werden. Das geht auch in Lazarus, und auch bei visuellen Komponenten. Sie sind dann zwar nicht so schön im Designmodus sichtbar, aber für Tests ist es auf jeden Fall ausreichend. So kann man auch problemlos ständig neue Versionen von Lazarus oder FPC mit diesen Komponenten testen - ohne zusätzliches Neukompilieren. Auch in Delphi gehe ich bei der Entwicklung wo immer es geht dazu über, Komponenten im Code zu erzeugen und zu konfigurieren / verdrahten. Spart auch eine Menge Boilerplatecode (wie Notification / RemoveFreeNotification).

QuickAndDirty 1. Jan 2011 11:50

AW: Grundsätzliche Frage zu Lazarus Komponenten
 
Also mich stört weniger der gute alte Boilerplate code (da weiß ich wenigstens immer gleich wo ich bin). Aber es stimmt ich kann zum durchtesten der Komponenten auch erstmal auf eine Einbindung in die IDE verzichten. Irgenwie habe ich daran garnicht gedacht.

Aber es ist auch schön so im ObjectInspector die Events und Eigenschaften durch zu probieren...

JamesTKirk 2. Jan 2011 12:35

AW: Grundsätzliche Frage zu Lazarus Komponenten
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1071369)
Mich wundert eben nur das von den compiler menschen alles mögliche gehackt wird (Windowsce unterstützung für arm etc..) aber nicht sowas.

Das ist eben der Punkt an einem Open Source Projekt wie Free Pascal: Jeder arbeitet - wenn er denn überhaupt selbst was reinsteckt - an Dingen, die einen selbst interessiern.

Ich selbst habe zum Beispiel den Compiler darum erweitert Code für reine Windows NT Kernel zu schreiben (ohne Win32), was es letztendlich auch ermöglicht Treiber zu schreiben (auch wenn der Teil noch nicht ausgereift ist :mrgreen: ). Mein nächstes Projekt ist es "class helpers" zu implementieren (der erste Proof of Concept code funktioniert bereits, jetzt muss ich noch die restlichen Inkompatibilitäten zu Delphi ausmerzen ^^).

Dynamische Packages waren einfach bisher niemanden wichtig genug, so dass er oder sie sich selbst hinsetzt und es implementiert (die Thematik ist eben nicht so einfach, wie man glaubt). Allerdings hat sich vor ein paar Monaten wie gesagt jemand gefunden, dem es wichtig genug ist. Vielleicht sehen wir im neuen Jahr dann Fortschritte. ;)

Gruß,
Sven

QuickAndDirty 2. Jan 2011 20:21

AW: Grundsätzliche Frage zu Lazarus Komponenten
 
Wo finde ich denn konkretes zu der von dir angedeuteten Existenz eines Projektes das dynamische Laufzeit-Packages unter Delphi verfügbar macht?

Ich nehme an der FPC ist in c oder c++ geschrieben?

JamesTKirk 3. Jan 2011 13:31

AW: Grundsätzliche Frage zu Lazarus Komponenten
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1071835)
Wo finde ich denn konkretes zu der von dir angedeuteten Existenz eines Projektes das dynamische Laufzeit-Packages unter Delphi verfügbar macht?

Das was etwas konkreten am nächsten kommt ist diese E-Mail des von mir besagten Interessenten.

Zitat:

Zitat von QuickAndDirty
Ich nehme an der FPC ist in c oder c++ geschrieben?

Aber nein. FPC besteht aus 100% Object Pascal code. :mrgreen:

Die erste Version wurde damals (~1993) mit Turbo Pascal geschrieben und irgendwann war der Compiler dann in der Lage sich selbst zu kompilieren. Seit dem wird Free Pascal nur noch mit Free Pascal entwickelt. :D

Gruß,
Sven


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 Uhr.
Seite 1 von 2  1 2      

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