Wie schon in der Überschrift steht, erhalte ich beim Kompilieren von Paketen
die Fehlermeldung 'Identifier not found, Register' in der Paketdatei.
Ich habe das ganze schon mit gtk2 und qt, qt5 getestet sowie in 2 Lazarusversionen.
Eventuell muss ich Registrierungsinfos in die verwendete Unit integrieren.
Was anderes fällt mir dazu nicht ein. Aber darüber finde ich nichts im Netz.
Ohne 'Registriere Unit' anzuklicken klappt die Kompilierung.
Es geht also ausschließlich um die Registrierung.
Kann mir jemand weiter helfen?
Fehlermeldung beim Kompilieren eines Packages.
Re: Fehlermeldung beim Kompilieren eines Packages.
Welche Pakete?
Wenn es um ein eigenes Package geht, fehlt wahrscheinlich die Register-Prozedur in einer deiner Package-.Datien. In der Register-Prozedur werden die in dem Package implementierten Komponenten für den Design-Mode und die Komponentenpalette gekennzeichnet. Zum Beispiel aus dem TAChart-Package (abgeändert):
Neben der Komponenten-Registrierung kommt hier auch die Registrierung von Property- und Component-Editoren rein.
Diese Prozedur muss im Interface-Teil der Unit deklariert sein, damit sie von außen aufgerufen werden kann. Jede Unit kann eine eigene Register-Prozedur enthalten für die Komponenten, die in dieser Unit implementiert werden. Bei großen Packages ist es aber günstiger eine eigene Registrierungs-Unit zu schreiben und dort alle Komponenten des Package zusammenzufassen. Und wenn du es ganz gut machen willst, schreibe zwei Packages: ein Laufzeitpackage, das nur den Code der Komponente enthält, und ein Entwurfszeitpackage, das die Registrierung enthält. Dadurch wird zur Laufzeit benötigter Code von dem von der IDE benötigten Cdde getrennt. So verhinderst du z.B. dass das Paletten-Icon in das Binary deines Programm mit eingebunden wird.
Wenn es um ein eigenes Package geht, fehlt wahrscheinlich die Register-Prozedur in einer deiner Package-.Datien. In der Register-Prozedur werden die in dem Package implementierten Komponenten für den Design-Mode und die Komponentenpalette gekennzeichnet. Zum Beispiel aus dem TAChart-Package (abgeändert):
Code: Alles auswählen
procedure Register;
begin
RegisterComponents('Chart', [TChart]);
end;
Diese Prozedur muss im Interface-Teil der Unit deklariert sein, damit sie von außen aufgerufen werden kann. Jede Unit kann eine eigene Register-Prozedur enthalten für die Komponenten, die in dieser Unit implementiert werden. Bei großen Packages ist es aber günstiger eine eigene Registrierungs-Unit zu schreiben und dort alle Komponenten des Package zusammenzufassen. Und wenn du es ganz gut machen willst, schreibe zwei Packages: ein Laufzeitpackage, das nur den Code der Komponente enthält, und ein Entwurfszeitpackage, das die Registrierung enthält. Dadurch wird zur Laufzeit benötigter Code von dem von der IDE benötigten Cdde getrennt. So verhinderst du z.B. dass das Paletten-Icon in das Binary deines Programm mit eingebunden wird.
- kpmais
- Beiträge: 42
- Registriert: Di 26. Mai 2020, 08:51
- OS, Lazarus, FPC: Winux (L 2.0.12, FPC 3.2.0; Debian/Win7)
- CPU-Target: x86-64
- Wohnort: Saarlouis/Saarland
Re: Fehlermeldung beim Kompilieren eines Packages.
Vielen Dank für die Hilfe.
Ja, das betraf ein eigenes Package.
Mit deinem Hinweis habe ich dann noch mal alles (aufmerksamer !!!) durchgelesen und jetzt funktioniert es.
Danke nochmal ....
Ja, das betraf ein eigenes Package.
Mit deinem Hinweis habe ich dann noch mal alles (aufmerksamer !!!) durchgelesen und jetzt funktioniert es.
Danke nochmal ....
Re: Fehlermeldung beim Kompilieren eines Packages.
Wo eigentlich?kpmais hat geschrieben: Do 11. Feb 2021, 10:57 Mit deinem Hinweis habe ich dann noch mal alles (aufmerksamer !!!) durchgelesen