Unit nicht gefunden

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
Lincoln Six Echo
Beiträge: 138
Registriert: Di 26. Aug 2014, 16:42
OS, Lazarus, FPC: Win10, Debian
CPU-Target: I7/I9/Q9650/u.a.
Wohnort: Hamburg

Unit nicht gefunden

Beitrag von Lincoln Six Echo »

Ich habe ein Package mit ca 35 Controls erstellt. Unter anderem sind da auch Dialoge enthalten,
also TForms und die dazugehörenden Formular-Dateien (*.lfm).

Alle Dateien befinden sich in einem Unterordner von c:\.....\lazarus.

Dieses Verzeichnes ist auch in den Projekteinstellungen enthalten und alle diese Dateien
sind im Package hinzugefügt.

Wird es nun compiliert, so klappt das meistens ohne Probleme, ab und an kommt aber
die Fehlermeldung "Unit ... nicht gefunden" und das Compilieren wird abgebrochen.
Die Fehlermeldung bezieht sich auf diese Formulardateien *.pas und *.lfm obwohl sie
sich im gleichen Verzeichnis befinden.

Entferne ich diese Dateien nun aus dem Package und füge sie dann einfach wieder hinzu
wird ohne Fehlermeldung compiliert und alles läuft. Das aber jedes dritte bis fünftemal
zu machen ist schon nervig.

Was mache ich falsch ?

(Win7-Pro 64, IDE 1.2.4, Adminrechte)

Thanx im voraus.

Socke
Lazarusforum e. V.
Beiträge: 3188
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Unit nicht gefunden

Beitrag von Socke »

Lincoln Six Echo hat geschrieben:Dieses Verzeichnes ist auch in den Projekteinstellungen enthalten und alle diese Dateien
sind im Package hinzugefügt.
Wenn die Units in einem Package enthalten sind, sollten sie nicht mehr zum Projekt hinzugefügt werden. Das schließt getrennte Verzeichnisse (Units, Include und Ausgabe) für jedes Package und das Projekt ein.

Weiterhin müssen die Packages natürlich zum Projekt hinzugefügt werden.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
Lincoln Six Echo
Beiträge: 138
Registriert: Di 26. Aug 2014, 16:42
OS, Lazarus, FPC: Win10, Debian
CPU-Target: I7/I9/Q9650/u.a.
Wohnort: Hamburg

Re: Unit nicht gefunden

Beitrag von Lincoln Six Echo »

Die entsprechenden Units sind nur im Package enthalten, nicht im Projekt das dieses Package nutzt.

Socke
Lazarusforum e. V.
Beiträge: 3188
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Unit nicht gefunden

Beitrag von Socke »

Dann wäre noch die Frage offen, ob die Verzeichnisse bei Projekt und Packages identisch sind.

Wenn das nicht hilft, solltest du in den Projektoptionen unter "Compiler Options -> Verbosity" die Punkte zu den versuchten und tatsächlich genutzten Dateien aktivieren (-vd und -vt; bzw. -va). Wenn dann der Fehler auftritt, kannst du dir "alle Meldungen" aus dem Nachrichtenfenster über einen Rechtsklick kopieren und in einem Editor dem Fehler genauer auf den Grund gehen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
Lincoln Six Echo
Beiträge: 138
Registriert: Di 26. Aug 2014, 16:42
OS, Lazarus, FPC: Win10, Debian
CPU-Target: I7/I9/Q9650/u.a.
Wohnort: Hamburg

Re: Unit nicht gefunden

Beitrag von Lincoln Six Echo »

Es wird noch seltsamer: seit heute kommt beim Compilieren bei Anwendungen und auch dem Package die Fehlermeldung:

"No known FileFormat detected for file 'c\...\layerdlg.lfm'"

Die genannte Datei ist im Package-Projekt enthalten und auch der entsprechende Pfad ist in den Projekteinstellungen drin.

Warum kennt Lazarus auf einmal seine eigenen Formulardateien nicht mehr ?

Benutzeravatar
theo
Beiträge: 11325
Registriert: Mo 11. Sep 2006, 19:01

Re: Unit nicht gefunden

Beitrag von theo »

Lincoln Six Echo hat geschrieben: und auch der entsprechende Pfad ist in den Projekteinstellungen drin.
Nochmal: Warum?
Wenn das Package in Ordnung ist, braucht man das doch nicht?

Benutzeravatar
Lincoln Six Echo
Beiträge: 138
Registriert: Di 26. Aug 2014, 16:42
OS, Lazarus, FPC: Win10, Debian
CPU-Target: I7/I9/Q9650/u.a.
Wohnort: Hamburg

Re: Unit nicht gefunden

Beitrag von Lincoln Six Echo »

Das Package enthält alle meine eigenen Komponenten. Die funktionieren auch alle ohne Fehler, wenn Lazarus es mal schafft das Package zu compilieren.

Seite neuestem kommen jetzt auch noch Fehlermeldungen wie "Unit Graphics" nicht gefunden. Diese gehört ja zur IDE die gerade komplett neu installiert wurde.

Ich habe Lazarus vorher komplett deinstalliert und dann wieder neu installiert. Dann ein neues Package erstellt und step by step meine Komponenten hinzugefügt.

Das Compilieren wird dann wieder abgebrochen, es wird eine Fehlermeldung angezeigt das die Datei im Ordner "xyz" nicht zu finden ist und ich den Pfad in den Projekteinstellungen unter "Pfade" angeben soll.

Wenn ich genau das mache bekomme ich wieder die gleiche Fehlermeldung.

Irgendwie drängt sich mir da die Vermutung auf das Lazaraus da noch nicht so ganz rund läuft.

Das Konzept ist an sich klasse aber für professionelle Arbeit nicht zu gebrauchen wenn man keine eigenen Komponenten einfügen kann.

Ich weiß nun keine Lösung mehr und werde mich dann wohl für eine andere IDE entscheiden müßen.

Benutzeravatar
Lincoln Six Echo
Beiträge: 138
Registriert: Di 26. Aug 2014, 16:42
OS, Lazarus, FPC: Win10, Debian
CPU-Target: I7/I9/Q9650/u.a.
Wohnort: Hamburg

Re: Unit nicht gefunden

Beitrag von Lincoln Six Echo »

Noch zur Ergänzung:

Aus dem Netz habe ich irgendwo von einer englischen Seite die Info gefischt das soetwas wohl daran liegt das in meinem Package das Package "LCL" fehlt.

Bei mir wird im entsprechenden Dialog unter "Benötigte Packages" nur "FCL" angezeigt.

Hat jemand einen Tipp wie ich das Package "LCL" da einfüge ? Ich habe keine Möglichkeit gefunden.

Auch im Lazarus Wiki habe ich nichts dazu gefunden.

Benutzeravatar
theo
Beiträge: 11325
Registriert: Mo 11. Sep 2006, 19:01

Re: Unit nicht gefunden

Beitrag von theo »

Im Package Dialog einfach Hinzufügen > Neue Anforderung > LCL auswählen.

Benutzeravatar
Lincoln Six Echo
Beiträge: 138
Registriert: Di 26. Aug 2014, 16:42
OS, Lazarus, FPC: Win10, Debian
CPU-Target: I7/I9/Q9650/u.a.
Wohnort: Hamburg

Re: Unit nicht gefunden

Beitrag von Lincoln Six Echo »

Danke Theo, das hat schon mal geklappt und ich habe was gelernt. Nun weis ich wie ich Packages hinzufügen kann, klasse.

Beim Compilieren kommt jetzt immer wieder "no known file format for xyz.lfm found".

Im Package-Dialog "Kompilieren" klappt ohne Fehler, lediglich die IDE neu zu compilieren um das Package zu nutzen erzeugt dann diese Meldung und den Abbruch.

Benutzeravatar
Lincoln Six Echo
Beiträge: 138
Registriert: Di 26. Aug 2014, 16:42
OS, Lazarus, FPC: Win10, Debian
CPU-Target: I7/I9/Q9650/u.a.
Wohnort: Hamburg

Re: Unit nicht gefunden

Beitrag von Lincoln Six Echo »

So sieht die Meldung im Original aus:

Error: No known file format detected for file 'C:\lazarus\....\lib\i386-win32\flimageeditordetailsdlg.lfm'

Die Punkte habe ich eingefügt. Der Pfad enthält keine Sonder. oder Leerzeichen.

diogenes
Beiträge: 202
Registriert: So 11. Jul 2010, 18:39
OS, Lazarus, FPC: Linux
CPU-Target: 64 Bit
Wohnort: Wien

Re: Unit nicht gefunden

Beitrag von diogenes »

Ich fürchte, da herrscht Begriffsverwirrung.

Lincoln-Six-Echo (darf ich LSE sagen?), ein Programm ist im Sinne von Free Pascal aus eienm Hauptmodeul (Schlüsselwort "program") und mehreren statischen Bibliotheken (Schlüsselwort "unit") zusammen gesetzt.

Ein Programm kan durchaus mehrere Formulare (englisch "Forms") enthalten, aber eine Unit nur maximal ein Formular. Eines dieser Formulare (nämlich das erste, das in der .lpr-Datei erzeugt wird) ist das Hauptformular, das vor allem das Programm beendet, wenn es geschlossen wird. Die anderen sind an sich unabhängig, aber sie können miteinander kommunizieren. In einem Formular kannst Du also Dein eines Ding drehen und in einer anderen Deinen Report aufbauen. Die beiden gehörten dann aber zum selben Programm. War es das, was du gemeint hast?
Ceterum censeo computatores per Pascal docendos esse.

Benutzeravatar
theo
Beiträge: 11325
Registriert: Mo 11. Sep 2006, 19:01

Re: Unit nicht gefunden

Beitrag von theo »

@diogenes: Warst du beim Heurigen? :lol:

Ich glaube dein Beitrag gehört zum Thread "Unterprogramm aufrufen".

diogenes
Beiträge: 202
Registriert: So 11. Jul 2010, 18:39
OS, Lazarus, FPC: Linux
CPU-Target: 64 Bit
Wohnort: Wien

Re: Unit nicht gefunden

Beitrag von diogenes »

Nein, aber Nachmittagsschläfchen und noch nicht ganz wach. Hast recht, dort gehört er hin :)
Ceterum censeo computatores per Pascal docendos esse.

Benutzeravatar
Lincoln Six Echo
Beiträge: 138
Registriert: Di 26. Aug 2014, 16:42
OS, Lazarus, FPC: Win10, Debian
CPU-Target: I7/I9/Q9650/u.a.
Wohnort: Hamburg

Re: Unit nicht gefunden

Beitrag von Lincoln Six Echo »

Danke für die Zusammenfassung, aber das ist mir durchaus klar. Ich arbeite mit Delphi seit es Delphi gibt, bin kein Anfänger.

Noch einmal das Problem:

In dem Package gibt es u.a EINE Unit mit dem Namen "ImageEditorCtrls".

Diese Unit enthält ein Dutzend Controls, u.a. einen Editor um Grafikdateien zu bearbeiten.

Der bietet u.a. die Möglichkeit Paramter, z.B. JPG-Compression einzustellen.

Dazu gibt es EINEN Dialog, also EIN Formular, das in der Unit "ImageEditorJPGDlg.pas" enthalten ist.

Da es ein Formular ist, gibt es auch EINE Datei "ImageEditorJPGDlg.lfm".

Der Aufbau ist so:

//--------------------------------------------------

unit ImageEditorCtrls;

{$mode objfpc}{$H+}{$A-}{$B-}{$I-}

interface

uses
controls, sysutils, graphtype, graphics;

implementation

uses
ImageEditorJPGDlg;

.........

end.

//---------------------------------------


Wird nun das Package compiliert, so kommt die Fehlermeldung "unit imageeditorjpgdlg nicht gefunden".

Auch das Formular oberhalb der "Implementation" aufzuführen ändert nichts.

Und das obwohl

1. Der Pfad in den Einstellungen des Packages angegeben ist
2. Die Datei im Package selbst enthalten ist.

Obendrein gibt die IDE noch den Tipp die Unit dem Package hinzuzufügen.
Selbst wenn ich die Datei also entferne und wieder hinzufüge kommt der gleiche Fehler.

Ich habe das mit mehreren Packages und verschiedenen Pfaden,Formularen und Units versucht.
Es ist immer das gleiche.

Kann ich mit Lazarus kein Formular in ein Package einfügen ?

Antworten