IDE-Bibliothekspfad ist wo ...?

Für Fragen von Einsteigern und Programmieranfängern...
Benutzeravatar
Jim Knopf
Beiträge: 98
Registriert: So 18. Mai 2014, 15:16
OS, Lazarus, FPC: Win10
CPU-Target: 64Bit
Wohnort: Klagenfurt
Kontaktdaten:

IDE-Bibliothekspfad ist wo ...?

Beitrag von Jim Knopf »

Hi zusammen,

sicher eine ganz blöde Frage, aber ich bin wirklich in jeden Menüwinkel gekrochen:

Wo ist das Pendant zu Delphis Umgebungsoptionen > Bibliothekspfad, wo man also nicht projektbezogen, sondern generell die Bibliotheks-Suchpfade einrichten kann?

Viele Grüße
Martin

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

Re: IDE-Bibliothekspfad ist wo ...?

Beitrag von wp_xyz »

Jim Knopf hat geschrieben:
Mi 18. Aug 2021, 12:18
Wo ist das Pendant zu Delphis Umgebungsoptionen > Bibliothekspfad, wo man also nicht projektbezogen, sondern generell die Bibliotheks-Suchpfade einrichten kann?
Das ist einer der großen Unterschiede zwischen Delphi und Lazarus. Während man unter Delphi alles in diesen riesigen Bibliothekspfad packen musste, arbeitet man in Lazarus mit sog. Packages. Angenommen du hast eine Reihe von Units, die du in allen möglichen Projekten verwendest. Dann erzeugst du dir ein Package (Menü "Package" > "Neues Package"; es wird gleich nach der Abfrage des Dateinamens gespeichert). Dann in dem Package-Editor (den man auch separat über "Package" > "Package-Datei öffnen" starten kann) die gewünschten Units hinzufügen ("Hinzufügen" > "Dateien aus dem Dateisystem hinzufügen"); wahrscheinlich musst du auch die von den Units benötigten Packages eintragen: "Hinzufügen" > "Neue Anforderung", in der Liste das gewünschte Package auswählen - wahrscheinlich ist das zumindest das "LCL"-Package. Wenn alles fertig ist, alles nochmals speichern und dann mit "Kompilieren" testen, ob alles passt.

Um das Package zu verwenden, öffnest du in deinem Programm den Projektinspektor (Menü "Projekt") - denn kannst du immer geöffnet lassen, denn er gibt dir schnellen Zugriff auf alle Units des Projekts (ich ziehe ihn immer auf die rechte Bildschirmseite). Im Projektinspektor auf "Hinzufügen" > "Neue Anforderung" klicken und in der Liste "dein" Projekt suchen und auswählen. Nun kennt dein Projekt alle Pfade zu den Units, die in dem Package enthalten sind.

In dem Package-Editor gibt es auch einen Schalter "Verwenden". Mit der Option "Zum Projekt hinzufügen" machst du genau den zuletzt beschriebenen Schritt. Die andere Option "Installieren" brauchst du, wenn du ein "Designzeit-Package" hast, also Funktionen, meistens Komponenten, zur IDE hinzufügen willst. Die Entscheidung Designtime-Package vs. Laufzeit-Package triffst du unter "Einstellungen" > "Package-Einstellungen" > "IDE-Integration". Wenn du nur "Code-Units" hast, also Units die nur zur Laufzeit benötigt werden, wähle als "Package-Typ" "Laufzeit" oder "nur für Laufzeit" (weiß gar nicht, was da der Unterschied ist). Wenn du eigene Komponenten hast, die du für die Komponenten-Palette installieren willst, nimm als "Package-Typ" in der Regel "Entwicklung- und Laufzeit" (oder "Entwicklungszeit", wenn du in den Units Designzeit und Laufzeit-Code in verschiednen Dateien hast; dieser Punkt mach den Package-Code nur in der IDE verfügbar, nicht in deinem Programm).

PascalDragon
Beiträge: 832
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: IDE-Bibliothekspfad ist wo ...?

Beitrag von PascalDragon »

Und nur um Verwirrung zu vermeiden: im Gegensatz zu Delphi heißt „Package” bei Lazarus (noch) nicht, dass die dazugehörigen Units in einer BPL- (bzw. PPL-) Datei liegen. Das ist einfach nur eine Gruppierung für Units (eine sehr hilfreiche Gruppierung) und gleichzeitig die Möglichkeit Komponenten zur IDE hinzu zu fügen.
FPC Compiler Entwickler

Benutzeravatar
Jim Knopf
Beiträge: 98
Registriert: So 18. Mai 2014, 15:16
OS, Lazarus, FPC: Win10
CPU-Target: 64Bit
Wohnort: Klagenfurt
Kontaktdaten:

Re: IDE-Bibliothekspfad ist wo ...?

Beitrag von Jim Knopf »

Hallo wp_xyz,

danke für deine ausführliche Antwort! Wieder etwas dazugelernt, das ist hilfreich.

Ach, ich bin einigermaßen am Verzweifeln. Laut der Mail von TMS soll ich das eintragen, was ich oben beschrieben habe. Nach deinen Erlärungen hat aber offenbar eh alles genau gepasst. Aber ich bekomme das Zeug trotzdem nicht zum Laufen - er reklamiert eine Datei, die exakt im angegebenen Pfad liegt. Ich hoffe, derweil mal auf weitere Infos seitens TFM. Werde mich auf jeden Fall melden, wenn es Neues gibt.

Und bei meinem eigenen Grid, das ich parallel vorantreibe, vermute ich, dass Developer Express etwas im Quellcode verschleiert hat, den Komponenteneditor betreffend. Also Stagnation auf der vollen Linie.

Viele Grüße
Martin

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6212
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: IDE-Bibliothekspfad ist wo ...?

Beitrag von af0815 »

Was hast du von TMS bekommen ? Ich gehe davon aus, das es Source mit einem Package ist.

Lässt sich das Package alleine kompilieren ? Oder wann tritt das Problem auf ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: IDE-Bibliothekspfad ist wo ...?

Beitrag von wp_xyz »

Genau. Wenn TMS das mit der Lazarus-Unterstützung ernst meint, dann solltest du eine lpk-Datei erhalten haben - das ist die Package-Datei, die ich oben beschrieben habe. Öffne sie über "Package" > "Package-Datei öffnen". Klicke auf kompilieren, um zu prüfen, ob alles komplett ist. Wenn ja, prüfe im Package-Editor unter "Einstellungen" > "Package-Einstellungen" > "IDE-Integration", ob das Package ein Designzeit-Package ist. Wenn ja, auf "Verwenden" > "Installieren" klicken, die Frage nach dem Neukompilieren der IDE bestätigen. Nun wird Lazarus neu kompiliert und der TMS-Code in die IDE eingebaut, so dass die TMS-Komponenten und Zubehör in der Komponenten-Palette verfügbar sind.

Große Bibliotheken werden häufig in Designzeit und Laufzeit-Packages aufgespalten, damit der reine Designzeit-Code, den nur die IDE benötigt, nicht dein Projekt "kontaminiert". In diesem Fall hast du zwei (oder mehr) Packages. Am Namen erkennt man, welches des Laufzeit-Package ist: oft Anhängsel "runtime", "r", oder "vcl" (bei Delphi, evtl bei Lazarus "lcl"). Das Designzeit-Package hat oft den Namenszusatz "design", "d" oder "dcl" (üblich bei Delphi). Es reicht, das Laufzeit Package, wie oben beschrieben, in der IDE zu öffnen - damit ist bekannt, wo sich die Laufzeit-Units sind. Dann öffnest du das Designzeit-Package und übersetzt und installierst es, ebenfalls wie oben beschrieben.

Am Ende der Übung findest du die TMS-Komponenten in der Palette.

Wenn keine lpk-Datei vorhanden ist, biete ich dir an, für dich eine zu erzeugen. Dazu müsstest du die TMS-Quellen auf irgendeinem Cloud-Server hochladen und mir per PM den Link dazu schicken. Ich versuche dann zu prüfen, ob das unter Lazarus lauffähig ist und dir eine Package-Datei erzeugen. Den heruntergeladenen TMS-Code werde ich anschließend löschen.
Jim Knopf hat geschrieben:
Mi 18. Aug 2021, 20:46
Und bei meinem eigenen Grid, das ich parallel vorantreibe, vermute ich, dass Developer Express etwas im Quellcode verschleiert hat, den Komponenteneditor betreffend. Also Stagnation auf der vollen Linie.
Versuche zuerst das DevExpressGrid nur für die Laufzeit zu erstellen. Die Komponenten- und Property-Editoren bei Lazarus sind anders strukturiert als bei Delphi...

Benutzeravatar
Jim Knopf
Beiträge: 98
Registriert: So 18. Mai 2014, 15:16
OS, Lazarus, FPC: Win10
CPU-Target: 64Bit
Wohnort: Klagenfurt
Kontaktdaten:

Re: IDE-Bibliothekspfad ist wo ...?

Beitrag von Jim Knopf »

af0815 hat geschrieben:
Mi 18. Aug 2021, 21:16
Was hast du von TMS bekommen ? Ich gehe davon aus, das es Source mit einem Package ist.

Lässt sich das Package alleine kompilieren ? Oder wann tritt das Problem auf ?
Komplett alles mit Quellcode, sieht perfekt aus.
Es sind vier Packages zu kompilieren in angegebener Reihenfolge:
...\TMS FNC Core\LCLTMSFNCCorePkg.lpk
...\TMS FNC Core\LCLTMSFNCCorePkgDE.lpk
...\TMS FNC UI Pack\LCLTMSFNCUIPackPkg.lpk
...\TMS FNC UI Pack\LCLTMSFNCUIPackPkgDE.lpk

Mittlerweile bin ich so weit, dass die ersten dei sich kompilieren und installieren lassen - eine wahnsinns Menge an Komponenten ... aber das Grid ist noch nicht dabei. Das vierte lässt sich zwar kompilieren, aber beim Installieren kommt diese Meldung, von der ich vermute, dass TMS was dazu sagen muss (Text letzter Zeile ist komplett):
Bild

Letzte 2 Zeilen zwecks Lesbarkeit hier nochmal:

Code: Alles auswählen

Warning: Recompiling LCLTMSFNCUIPackPkg, checksum changed for C:\lazarus Zubehör\TMS FNC UI Pack\lib\x86_64-win64\LCLTMSFNCCustomGrid.ppu
lazarus.pp(1,1) Fatal: Kann LCLTMSFNCUIPackPkg nicht finden verwendet von Lazarus, incompatible ppu=C:\lazarus Zubehör\TMS FNC UI Pack\lib\x86_64-win64\LCLTMSFNCUIPackPkg.ppu, mehrfache Packages: LCLTMSFNCUIPackPkg, LCLTMSFNCUIPackPkgDE

Benutzeravatar
Jim Knopf
Beiträge: 98
Registriert: So 18. Mai 2014, 15:16
OS, Lazarus, FPC: Win10
CPU-Target: 64Bit
Wohnort: Klagenfurt
Kontaktdaten:

Re: IDE-Bibliothekspfad ist wo ...?

Beitrag von Jim Knopf »

wp_xyz hat geschrieben:
Mi 18. Aug 2021, 22:07
Wenn keine lpk-Datei vorhanden ist, biete ich dir an, für dich eine zu erzeugen. Dazu müsstest du die TMS-Quellen auf irgendeinem Cloud-Server hochladen und mir per PM den Link dazu schicken. Ich versuche dann zu prüfen, ob das unter Lazarus lauffähig ist und dir eine Package-Datei erzeugen. Den heruntergeladenen TMS-Code werde ich anschließend löschen.
Die sind brav dabei und im vorigen Post habe ich das Problem beschrieben. Du kannst aber gerne die TMS-Sachen haben, den Link schicke ich dir gleich via PM.
wp_xyz hat geschrieben:
Mi 18. Aug 2021, 22:07
Versuche zuerst das DevExpressGrid nur für die Laufzeit zu erstellen. Die Komponenten- und Property-Editoren bei Lazarus sind anders strukturiert als bei Delphi...
Ach das ... da verzweifle ich mit dem Komponenteneditor schon seit vier Tagen, dass mir langsam die Lust daran vergeht. Ich bekomme diese Kommunikation zur Designzeit zwischen Grid, Komponenteneditor Spalten und Objektinspektor Spalten nicht hin. Abgesehen davon, dass DevEx die Column-Objekte im Formular der Treelist untergeodnet haben, was mir ebenfalls misslingt.

Bild

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

Re: IDE-Bibliothekspfad ist wo ...?

Beitrag von wp_xyz »

Der Fehler besagt, dass das Designtime-Package LCLTMSFNCUIPackPkgDE versucht, das Runtime Package LCLTMSFNCUIPackPkg neu zu kompilieren, weil die Units der Packages offenbar nicht sauber in eigene Verzeichnisse getrennt sind - eigentlich sollen die Packages untereinander keinen Zugriff auf den Quelltext des anderen haben. Martin_fr hat das hier und im internationalen Forum schon mehrmals erläutert, z.B. https://forum.lazarus.freepascal.org/in ... #msg249185.

Ja, am einfachsten bittest du TMS dem Fehler nachzugehen, aber bitte mit einem aktuellen Lazarus, das "duplicate file" Problem tritt von Version zu Version immer leichter auf. In günstigen Fällen bleibt des bei der Warnung, aber in schwierigen Fällen kann man die IDE nicht mehr bauen - das hat mich bei FPSpreadsheet einige Tage gekostet...

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

Re: IDE-Bibliothekspfad ist wo ...?

Beitrag von wp_xyz »

Jim Knopf hat geschrieben:
Mi 18. Aug 2021, 23:55
Du kannst aber gerne die TMS-Sachen haben, den Link schicke ich dir gleich via PM.
Danke. Ja, sie haben alle Units des Core-Package in dasselbe verzeichnis gespeichert, genauso mit den Units des UIPack. Und ich kann mit Laz-trunk nicht einmal das Core-Package installieren. Was man jetzt machen muss, ist jeweils einen Ordner für die Dateien des Runtime- und Designtime Package anlegen und die Units in die betreffenden Ordner zu verschieben. Dann muss man die Dateipfade in der Package-lpk-Datei entsprechend anpassen. Welche Dateien wohin gehören, muss man der jetzigen lpk-Datei entnehmen. Bei den Ausgabeverzeichnissen muss man auch getrennten Verzeichnisse angeben. Die lpk-Dateien selbst können im selben Verzeichnis bleiben.

Ich schau morgen mal, ob ich das hinkriege (viel Arbeit will ich aber nicht reinstecken).

[EDIT]
Mit Laz 2.0.8 kann ich sowohl Core als auch UI Pack installieren - das hatte noch FPC 3.0.4. Mit 2.0.12 (mit FPC 3.2.0) scheitere ich schon beim Core daran, dass die CloudBase-Unit nicht gefunden wird.

Ich934
Lazarusforum e. V.
Beiträge: 317
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: IDE-Bibliothekspfad ist wo ...?

Beitrag von Ich934 »

TMS geht mit 2.0.12 und 3.2.0 ist aber eine Katastrophe. Ich bin da wieder weg und verwende die Komponenten nicht.

Im TMS Unterforum zum UI Package gibt es einen Thread dazu. Man muss die Packete nach und nach installieren. Wenn du beim installieren einen Fehler bekommst, dass er ein anderes nicht findet, dann musst du das neu kompilieren.
Tipp für PostgreSQL: www.pg-forum.de

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1435
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: IDE-Bibliothekspfad ist wo ...?

Beitrag von fliegermichl »

Zwei Dinge, die man unbedingt vermeiden sollte.
Es sollte keine zwei Dateien mit gleichem Namen geben. (Das hat mich schon Tage gekostet)
Es sollte keine Pfade mit Leerzeichen im Namen geben.

Benutzeravatar
Jim Knopf
Beiträge: 98
Registriert: So 18. Mai 2014, 15:16
OS, Lazarus, FPC: Win10
CPU-Target: 64Bit
Wohnort: Klagenfurt
Kontaktdaten:

Re: IDE-Bibliothekspfad ist wo ...?

Beitrag von Jim Knopf »

Hallo wp_xyz,
wp_xyz hat geschrieben:
Do 19. Aug 2021, 00:05
Der Fehler besagt, dass das Designtime-Package LCLTMSFNCUIPackPkgDE versucht, das Runtime Package LCLTMSFNCUIPackPkg neu zu kompilieren, weil die Units der Packages offenbar nicht sauber in eigene Verzeichnisse getrennt sind - eigentlich sollen die Packages untereinander keinen Zugriff auf den Quelltext des anderen haben.
Ich werde das und einen Teil deines zweiten Posts anonymisiert so an TMS weiterleiten. Herzlichen Dank für diese Aussage, hilft wieder sehr weiter, denn nun weiß ich, wo das Problem liegt. Und hilft natürlich für Zukünftiges allgemein!
wp_xyz hat geschrieben:
Do 19. Aug 2021, 00:18
Ich schau morgen mal, ob ich das hinkriege (viel Arbeit will ich aber nicht reinstecken).
Bitte auf keinen Fall zu viel Zeit!

Es ist zurzeit alles für mich noch ein Vortasten, in welche Richtung ich mich bewege, bei dem die Treeview eine entscheidende Rolle spielt. Meine TMS-Erlebnisse und die Wahrnehmung dazu einerseits, die Komponenteneditorprobleme bei der eigenen TreeList (ich mag allein an diesem eigentlich Peanuts-Problem nicht ewig herumpfriemeln) scheinen doch vielleicht in Richtung VTV zu zeigen. Vielleicht wirklich mal chillend in das Ding einlesen, vor allem wenn es eine Möglichkeit gäbe, die DevEx-TreeList-Methoden und Properties zum einfachen und kompatiblen Handling zu erstellen.

Viele Grüße
Martin

Benutzeravatar
Jim Knopf
Beiträge: 98
Registriert: So 18. Mai 2014, 15:16
OS, Lazarus, FPC: Win10
CPU-Target: 64Bit
Wohnort: Klagenfurt
Kontaktdaten:

Re: IDE-Bibliothekspfad ist wo ...?

Beitrag von Jim Knopf »

Hallo wp_xyz,

ich brauche eigentlich nur die TreeList aus dem UI-Pack, alles andere interessiert mich nicht. Wenn das in einem eigenen Package ginge, wäre es ein Hit.
Ich kenn mich mit dem Packagezeug leider kaum aus - das Nichtauskennen wohl ein Abfallprodukt, wenn man mit einem recht perfekten Tool sehr lange arbeiten darf - das war schon zu Delphi5s Zeiten für mich immer ein Albtraum, wir haben immer nur vor der entsetzlichen 'Package-Scheiße' geschaudert, wenn mal wieder was zu Ändern anstand.

Viele Grüße
Martin

Benutzeravatar
Jim Knopf
Beiträge: 98
Registriert: So 18. Mai 2014, 15:16
OS, Lazarus, FPC: Win10
CPU-Target: 64Bit
Wohnort: Klagenfurt
Kontaktdaten:

Re: IDE-Bibliothekspfad ist wo ...?

Beitrag von Jim Knopf »

Hallo ich934,
Ich934 hat geschrieben:
Do 19. Aug 2021, 04:52
TMS geht mit 2.0.12 und 3.2.0 ist aber eine Katastrophe. Ich bin da wieder weg und verwende die Komponenten nicht.
Kannst du zur Katastrophe bitte etwas ausführlicher werden? Es geht mir um die Möglichkeit, TMS besser einzuschätzen, weil bei mir ein großer Richtungswechsel mit einer großen Applikation ansteht, also nicht um Katastrophentourismus :-)

Viele Grüße
Martin

Antworten