Error while compiling resources

Für Fragen rund um die Ide und zum Debugger
Antworten
khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Error while compiling resources

Beitrag von khh »

Hallo zusammen,
einige meiner Programme lassen sich mit der neuen LazVersion nicht kompilieren:
09.29

Code: Alles auswählen

Error while compiling resources


und der Cursor steht am Ende der Projektdatei :-(

Wo kann ich nach dem Fehler suchen?


Danke Gruss KH

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: Error while compiling resources

Beitrag von monta »

Das liegt an dem Wechsel des ResourcenSystems.

Entferne mal aus deiner Projektdatei (*.lpr) folgende Zeile:

Code: Alles auswählen

{$R project1.res}
Johannes

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Re: Error while compiling resources

Beitrag von khh »

danke dir, jetzt funktioniert zumindest das Compilieren,
leider bleibt das Programm stehen, sobald ein showMessage ausgeführt werden soll :-(

was ist da noch anders??
EDIT: muss wohl an was anderem liegen, in einem test funktioniert das showmessage :-(

und im alten prog hängt er sich dabei auf :-(
Danke Gruss KH

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Re: Error while compiling resources

Beitrag von khh »

monta hat geschrieben:Das liegt an dem Wechsel des ResourcenSystems.

Entferne mal aus deiner Projektdatei (*.lpr) folgende Zeile:

Code: Alles auswählen

{$R project1.res}



gibts da irgendwo was dazu zum nachlesen?
Danke gruss KH

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: Error while compiling resources

Beitrag von monta »

Nicht das ich wüsste, lediglich im Changelog vom FPC ist es aufgeführt und neu seit der Version 2.4.0:
viewtopic.php?f=1&t=3324

Und Lazarus im trunk hat dafür auch eine entsprechende Einstellung, die allerdings nicht wirklich ins Auge fällt:

Projekt > Projekteinstellungen > Diverses da findet sich die Auswahl, wenn du das alte Resourcensystem aktivierst, sollte es auch funktionieren, ohne das du die Zeile aus der Projektdatei entfernen musst.
Johannes

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Re: Error while compiling resources

Beitrag von khh »

danke dir

Gruss KH

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: Error while compiling resources

Beitrag von Hitman »

Eigentlich ist diese .res Datei doch gerade für das neue Resourcen System. (Delphi-Style)
Das alte hat die .rc Datei über windres eingebunden und die .lfm wurden als .lrs in die Units included. Eben das sollte jetzt alles in die .res Datei gewandert sein.
Der Fehler den du hast könnte daher rühren, dass das Programm "fpcres" nicht gefunden wird (das muss leider im PATH stehen).

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Re: Error while compiling resources

Beitrag von khh »

Hitman hat geschrieben:Eigentlich ist diese .res Datei doch gerade für das neue Resourcen System. (Delphi-Style)
Das alte hat die .rc Datei über windres eingebunden und die .lfm wurden als .lrs in die Units included. Eben das sollte jetzt alles in die .res Datei gewandert sein.
Der Fehler den du hast könnte daher rühren, dass das Programm "fpcres" nicht gefunden wird (das muss leider im PATH stehen).



ich habe den Eintrag wie von monta empfohlen {$R project1.res} aus der Projektdatei entfernt.
Beim erneuten Einbinden eines Symbols über die Projekteinstellungen hat mir die IDE oder der Compiler (?) den Eintrag wieder in die Projektdatei reingeschrieben.
Erst nachdem ich die *res aus dem Verzeichnis gelöscht habe hat es dann auch funktioniert.
Deshalb auch meine Frage, ob es irgendwo was nachzulesengibt, was da eigentlich genau abläuft.

Gruss KH

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: Error while compiling resources

Beitrag von Hitman »

Naja alle Resourcen (Icons, Version Information, ...) werden in die .res Datei geschrieben. Diese wird an die exe integriert. Ende. ;-)

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Re: Error while compiling resources

Beitrag von khh »

Hitman hat geschrieben:Naja alle Resourcen (Icons, Version Information, ...) werden in die .res Datei geschrieben. Diese wird an die exe integriert. Ende. ;-)


ach sooo, ganz einfach, gell ;-)


Danke dir

Gruss KHH

Benutzeravatar
didi
Beiträge: 46
Registriert: Mo 10. Mai 2010, 20:43
OS, Lazarus, FPC: Linux / Windows
CPU-Target: AMD 64-Bit
Wohnort: Plauen im Vogtland
Kontaktdaten:

Re: Error while compiling resources

Beitrag von didi »

Moin,
der Thread ist zwar etwas älter, aber ich habe den Fehler bekommen, als ich den Ordner umbenannt habe, in dem das Projekt gespeichert ist.
Nach nochmaligen Umbenennen in den Ursprungsname konnte ich wieder problemlos übersetzen.

Version: 0.9.29
System: Pardus-Linux

Gruß didi ><>

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Error while compiling resources

Beitrag von corpsman »

Also wenn ich meine alten Projekte auf das neue Ressourcen System umstelle, dann lösche ich immer alle

{$R project1.res}

Einträge in allen Units (und der Projektdatei)

und anschließend schreibe ich in alle Units, welche eine TForm beinhalten

{$R *.lfm}

Natürlich das Umstellen in den Projekteinstellungen nicht vergessen.

Sämtlichen unnötigen Dateien wie *.res etc. werden von meinem System automatisch gelöscht...
--
Just try it

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: Error while compiling resources

Beitrag von Hitman »

Das neue Ressourcen-System nutzt ja aber immernoch die .res ... für Versions Info, Icons, etc.
Das alte hingegen hat .rc benutzt.

Socke
Lazarusforum e. V.
Beiträge: 3158
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: Error while compiling resources

Beitrag von Socke »

Hitman hat geschrieben:Das neue Ressourcen-System nutzt ja aber immernoch die .res ... für Versions Info, Icons, etc.
Das alte hingegen hat .rc benutzt.

Mit FPC und Lazarus kommt man in den Genuss verschiedenster Daten, die alle Ressource oder auf Englisch "resources" heißen.
Die "alte" Variante ist komplett in der Unit LResources implementiert. Dazu werden alle Ressourcen als Strings in eine global verfügbare Liste eingetragen. Bei einem Formular wird die .lfm-Datei mit lazres in eine .lrs-Datei übersetzt. Eigentlich wird nur ein Funktionsaufruf um die eigentlichen Daten herum gesetzt und diese Funktion dann im Initalization-Abschnitt der Unit aufgerufen (die Datei wird über den Include-Befehl {$I datei} eingefügt).
Dann gibt es schon seit langem die Resource-Strings. Die werden vom FPC beim Kompilieren in eine .rst-Datei geschrieben (und können ggf. in eine .po-Datei zum Übersetzten weiterverarbeitet werden).
Die "neuen" Ressourcen im FPC werden unter Windows schon seit einigen Jahren eingesetzt. Dabei wird zuerst ein Resource-Script (.rc) erstellt, welchen dann mit dem Programm windres in eine Binäre Ressourcendatei (.res) übersetzt wird. Diese Ressourcendatei wird dann vom Linker in die Executables hinein gelinkt (eine Executable kann man in mehrere Abschnitte einteilen, die Programmcode, Feunktionstabellen (-> Bibltiotheken) oder auch Ressourcen enthalten). Der Compiler-Schalter {$R datei} kann sowohl ein Resourcen-Script als auch eine Ressourcen-Binärdatei angeben.

Im Grunde genommen gibt es kein "altes" und keine "neues" Ressourcen-System. Beide werden schon lange unterstützt, da die eigentliche Arbeit entweder vom Compiler (-> Include Datei) oder durch den Linker übernommen wird. Das wirklich neue daran ist, dass das Windows-Ressourcen-System nun plattformübergreifend unter Windows und POSIX (Linux/Mac) verfügbar ist. Unter Nicht-Windows ist es eher üblich, eine externe Datei (für bspw. eine Grafik) anzulegen als alles in eine Datei zu packen.

Ich hoffe, ein wenig Klarheit in die Sache gebracht zu haben.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten