![]() |
Lazarus 1.2 veröffentlicht
Hallo zusammen!
Vor kurzem wurde Lazarus 1.2 veröffentlicht und ich gebe hier mal die inoffiziell von mir übersetzte Mitteilung wieder. Zitat:
Sven PS: Würde bitte jemand den 1.0 Sticky entfernen? Danke. :) |
AW: Lazarus 1.2 veröffentlicht
Klitzekleiner Wermutstropfen
Zitat:
Ohne ist es ein Directory oder File. :roll: Na dafür ist es jetzt aber wohl durchgängig falsch im Sinne des Kontexts/der Benennung :) |
AW: Lazarus 1.2 veröffentlicht
Läuft ganz gut. Auf jeden Fall in den Linux Boxen ...
Zitat:
|
AW: Lazarus 1.2 veröffentlicht
Zitat:
Delphi-Quellcode:
durchaus auch mit Dateinamen verwendet wird und die Funktion kann nicht unterscheiden, ob es sich dabei jetzt um ein Verzeichnis oder eine Datei handelt (die Datei/das Verzeichnis könnte zum Beispiel noch gar nicht existieren und "Dateinamen haben immer nen Punkt"/"Verzeichnisse haben nie einen" gelten als Heuristik nicht...). Deswegen wurde entschieden besser nichts anzuhängen.
CreateRelativePath
Gruß, Sven |
AW: Lazarus 1.2 veröffentlicht
Wenn ich es jetzt nochmal lese und es wirklich so umgesetzt wurde, wie es dort beschrieben ist,
Zitat:
Code:
Und die Unterscheidung ob Datei oder Verzeichnis ist sowieso egal, der PathDelimiter am Ende darf einfach nicht entfernt oder angehängt werden.
PATH: C:\foo\bar\ => ..\bar\
FILE: C:\foo\bar\testfile.txt => ..\bar\testfile.txt DIR : C:\foo\bar\testdir => ..\bar\testdir FILE: C:\foo\bar\testfile => ..\bar\testfile |
AW: Lazarus 1.2 veröffentlicht
Lazarus ist inzwischen sehr gut geworden und reif für die eine oder andere Anwendung. Ich denke Lazarus ist bereits für Schulen gut geeignet. :thumb: Schon bald ist es auch für Unis reif.
|
AW: Lazarus 1.2 veröffentlicht
Zitat:
Es kann doch nicht angehen das man für jede Komponente die komplette IDE neu kompilieren muss. Das erschwert unnötig einen Professionellen Ansatz mit massig zugekaufter Vorleistung. |
AW: Lazarus 1.2 veröffentlicht
Zitat:
Zitat:
Zitat:
Gruß, Sven |
AW: Lazarus 1.2 veröffentlicht
Zitat:
:duck: |
AW: Lazarus 1.2 veröffentlicht
Zitat:
gibt es doch eher selten als (proprietäres versionsabhähgiges) Delphi-Packages, normalerweise kauft man so ein qualitativ hochwertiges Ding als DLL. Dafür gibt es dann einen freien Open-Source Pascal-Wrapper und gut. Nur Hersteller von GUI-Komponenten haben natürlich ein Problem, wenn sie eine Trial-Version herausgeben wollen. Richtig kaufen sollte man solche Komponenten ja sowieso nicht ohne Source. Da müssen die Leute eben kreativ sein und sich was einfallen lassen. Letztenendes ist es aber nur ein DRM-Problem (wie verschleiere ich mein Produkt) und kein technologisches (wie wird das Produkt besser) - und daher sind mir Packages für ein OpenSource-Projekt wie FreePascal inzwischen sowas von egal... |
AW: Lazarus 1.2 veröffentlicht
Für IntelliJ gibt es zumindest ein FPC Plugin ... zumindest FPC.
![]() Zitat:
|
AW: Lazarus 1.2 veröffentlicht
Zitat:
|
AW: Lazarus 1.2 veröffentlicht
Zitat:
Ich denke dazu braucht es dynamisch linkbare Packages. |
AW: Lazarus 1.2 veröffentlicht
Wäre sehr ungewöhnlich würde ein GUI Editor in dem Umfeld mitgeliefert werden. Wer nimmt Java und Anverwandtes für visuelle Entwicklung... Das wird wohl für Lazarus oder ähnliche Alternativen reserviert bleiben. Ich finde allein recht nett, dass auch mal eine andere IDE überhaupt mal ein Pascal mitberücksichtigt.
Auch wenn bspw. sehr viel geschimpft wird über den FM. Das potentielle Interesse von jenen die solch eine erquickliche Kombi benötigen ist schon da oder wird zumindest als spannend bis praktisch empfunden. Genauso wie die DB Anbindung von FPC oder Delphi allgemein ... Zitat:
|
AW: Lazarus 1.2 veröffentlicht
Zitat:
|
AW: Lazarus 1.2 veröffentlicht
Wobei ExtractFilePath und ExtractFileDir auch ihre Bugs haben.
Denn bei den Rootpfaden muß auch ein DIR den Backslash am Ende haben! C: ist das Laufwerk, aber C:\ ist der Path/Dir, denn C: ist relativ zum CurrentDir des Laufwerks. |
AW: Lazarus 1.2 veröffentlicht
Zitat:
Es wird lediglich durch den Laufwerksbuchstaben (C:) bzw. Freigabe (\\myserver\data) und dem darauf folgenden PathDelimiter bestimmt. |
AW: Lazarus 1.2 veröffentlicht
Zitat:
Nichtsdestotrotz würde technisch natürlich nichts dagegen sprechen... Zitat:
Gruß, Sven |
AW: Lazarus 1.2 veröffentlicht
Zitat:
Zitat:
Die hier zitierten Argumente relativieren das Package Problem nun auch wieder, aber für mich ist und bleibt dieses Problem auch ein interessanter Aspekt. Ich habe nämlich noch immer nicht verstanden, warum hier die totale Neuübersetzung überhaupt erforderlich ist. Mir ist klar, das dies der Fall ist, wenn die Komponenten als neue Units statisch eingebunden werden. ABER: Kann man diese nicht auch als normale Dlls einbinden, per Interfaces? Ein Komponentenmanager könnte so aussehen (nur Interface) type IComponentFactory = Interface(IInterface) function GetComponents(Index: Integer): TComponent; procedure SetComponents(Index: Integer; value: TComponent); property Components[Index]: TComponentList read GetComponents write SetComponents; property ComponentCount: Integer; //Anzahl aktuell in IDE verfügbare Komponenten end; Nun müssten die Komponenten von außen per dll angeschlossen werden; Wo ist da mein Denkfehler, wenn da einer ist? In den Eigenschaftseditoren gibt es doch auch Methoden wie Get/SetVerb u.a. die könnte man doch veranlassen, passenden Quelltext in den Codeeditor zu schreiben. Dabei sollte es egal sein, ob das von der IDE oder von der geladenen Dll aus passiert. Ich stelle die Frage jetzt mal hier. Bei genügend Interesse am Thema darf das auch in einen separaten Thread ausgelagert werden oder Ihr teilt hier mit, das ich bitte einen separaten Thread dazu auf machen soll. Soll ich? |
AW: Lazarus 1.2 veröffentlicht
Zitat:
2. Packages sind DLLs nur das sie sich beim Laden in die VMT der Anwendung einfügen. Wenn du das Problem umgehen willst das eine DLL eine eigene VMT hat, kannst du natürlich idealerweise alle Komponten auf Interfaces umstellen, das muss dann auch für alle Bezüge der Kompenenten untereinander gelten. Jedes property, jede Funktion oder Prozedur. Ich fände es aber gut so, vor allem wenn es KEINE Pascall DLLs sind sondern Stdcall DLLS. Aber wie willst du von einer nur als Interface verfügbaren Komponente erben? |
AW: Lazarus 1.2 veröffentlicht
Zitat:
![]() Demnach geht das. Sollte das in ObjectPascal wirklich anders sein? Interfaces sind doch eine in Windows integrierte Technik. Warum sollte das dann nur in Java oder C++ klappen? Hab das aber jetzt nicht getestet. |
AW: Lazarus 1.2 veröffentlicht
Zitat:
Interfaces in Java haben mit Interfaces in Windows auch keinerlei Beziehung. Die Java Sprachdefinition ist plattformunabhängig, auf der Windows Plattform werden Java Interfaces nicht durch Windows Interfaces realisiert. |
AW: Lazarus 1.2 veröffentlicht
Zitat:
Nur Implementierungs-Vorschriften. |
AW: Lazarus 1.2 veröffentlicht
C++ hat keine Interfaces. Das 'Interface' das am Windows so herumschwirrt ist ein Konstrukt der MS Welt der gute alte MS-RPC die IDL davon. In der Praxis eine struct mit virtuelle Methoden in MS C/C++.
Die Interfaces der MS kommen ursprünglich aus dem OSD/DCE Umfeld, RPC letztendlich. Im Prinzip geht es um Beschreibungen von Komponenten. Etwas flachsig formuliert in der der C Welt - ein im System registrierte Headerfile in einer anderen Syntax geschrieben. Einsicht wurde genommen am Windows mit dem COM Browser. Die MS hat mal behauptet diese IL weitergetrieben zu haben, damit sie das Office in Griff bekommen. 'Ist die Funktion installier?'. An sich ist ein Interface einer Klasse jener Teil in dem Eigenschaften und das Verhalten deklariert sind. Aus sicht der Sprache. Im Prinzip eine abstrakte Basisklasse ohne Implementierung im Falle Mehrfachvererbung wäre ähnlich. Am einfachsten ist die Vorstellung es Interfaces als Registrierungsinformation gegen die eine Implementierung geprüft wird. 'Gibt es die Funktion überhaupt?'. Interface- und Implementierungsvererbung sind 2 verschiedene Paar Schuhe. Man nimmt heute Interfaces in einem ganz anderen Umfeld als sie ursprünglich gedacht waren. Das Umfeld Abstrakter Datentyp ... die Sehnsucht nach selbigen drückt sich heute in den Generics aus. Die haben mit OO nichts zu tun. Früher war das technisch in Pascal ein Pointer. Container waren der Paradefall für ADTs. Wo findet man heut Generics :thumb: Zitat:
|
AW: Lazarus 1.2 veröffentlicht
Zitat:
Delphi-Quellcode:
in
csDesigning
Delphi-Quellcode:
gibt es nicht zum Spaß). Zum Finden der Ereignisse und zum laden/speichern der LFM/DFM wird die RTTI benötigt und die Klasse muss dem Komponenten Streaming System bekannt sein.
TComponentState
Aus diesem Grund musst du übrigens die Lazarus IDE nur neukompilieren, wenn du entweder ein Package installierst, welches die IDE erweitert, oder, wenn du Komponenten im Formdesigner verwenden möchtest. Legst du die Komponenten nur zur Laufzeit an, dann reicht es, wenn Lazarus das Package kennt (soll heißen: du hast einmal die LPK-Datei geöffnet) und du die entsprechende Abhängigkeit im Projektinspektor einstellst. Zitat:
Delphi-Quellcode:
der IDE nicht das selbe
TComponent
Delphi-Quellcode:
der Bibliothek ist. Das heißt, für eine Komponente, die in der IDE instantiiert wird, aber in einer DLL implementiert ist, wird
TComponent
Delphi-Quellcode:
innerhalb der IDE nie
is TComponent
Delphi-Quellcode:
zurück geben. Auch Exceptions in den Komponenten können dadurch nicht abgefangen werden, da selbst ein
true
Delphi-Quellcode:
fehlschlagen würde, da auch
on e: TObject do {...}
Delphi-Quellcode:
in der IDE und
TObject
Delphi-Quellcode:
in der DLL unterschliedliche Typen sind. Das ist einer der Hauptgründe, weswegen Dynamic Packages entwickelt wurden: dabei wird die RTL in eine eigene Bibliothek (Package) ausgelagert und sowohl IDE, als auch die Komponenten Bibliothek (Package) können diese verwenden und der Compiler kümmert sich darum, dass bezüglich Abhängigkeiten alles passt und somit auch nur eine einzige Art von
TObject
Delphi-Quellcode:
,
TObject
Delphi-Quellcode:
oder
Exception
Delphi-Quellcode:
existiert.
TComponent
Ganz davon abgesehen würde dies dazu führen, dass die Komponente extra für Lazarus angepasst werden müsste (ich sehe jetzt hier mal von anderen Problemen mit der Kompatibilität ab), was hieße, dass es noch weniger Komponenten für Lazarus gäbe, als es eh schon der Fall ist. Gruß, Sven |
AW: Lazarus 1.2 veröffentlicht
Zitat:
So ähnlich macht man es ja bei Interfaces mit den GUIDs auch. Prinzipiell sollte das doch auch bei Klassen funktionieren, oder nicht? Ein Problem sehe ich nur, wenn verschiedene Packages von unterschiedlichen Versionen eines gemeinsam genutzten Packages ausgehen. Aber das dürfte dann bei dynamischen Packages ebenfalls Probleme geben, denke ich mal. |
AW: Lazarus 1.2 veröffentlicht
Nein.
In einem Package kann man mehrere Klassen haben, die gleich heißen. Und es könnte auch andere Packages geben, welche den selben Namen haben. |
AW: Lazarus 1.2 veröffentlicht
Zitat:
Zitat:
|
AW: Lazarus 1.2 veröffentlicht
Zitat:
Zitat:
Warum etwas neues erfinden, wenn es etwas Funktionierendes bereits gibt, dass nur noch implementiert werden muss? Und wie gesagt, so aufwendig ist das neukompilieren von Lazarus auch nicht... Gruß, Sven |
AW: Lazarus 1.2 veröffentlicht
Inzwischen haben wir schon Latarus 1.4!
|
AW: Lazarus 1.2 veröffentlicht
Zitat:
|
AW: Lazarus 1.2 veröffentlicht
FPC 3.1 und Lazarus 1.4 laufen wie geölt!
|
AW: Lazarus 1.2 veröffentlicht
Lazarus 2.0 ist auch performant und (mit dem Dockingpaket) gut benutzbar. :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:05 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