![]() |
Resourcendatei wird nicht erzeugt
Hallo,
ich verwende in einigen Projekten die Resourcendatei jsl.rc. Seit D5 ist es möglich die rc-Datei dem Projekt hinzuzufügen. Dann wird die dazugehörige res-Datei automatisch beim erzeugen des Projektes erstellt und hinzugelinkt. Jetzt versuche ich das gleiche mit D2006 Turbo. Aber irgendwie funktioniert das nicht. Die res-Datei wird nicht generiert.
Code:
[Pascal Fehler] E1026 Datei nicht gefunden: 'jsl.res'
Delphi-Quellcode:
program tpm;
{$R 'jsl.res' 'jsl.rc'} uses Forms, tpm_main in 'tpm_main.pas' {FormTpmMain}, at_datamodule in 'at_datamodule.pas' {DM: TDataModule}; {$R *.res} begin Application.Initialize; Application.Title := 'TPM'; Application.CreateForm(TDM, DM); Application.CreateForm(TFormTpmMain, FormTpmMain); Application.Run; end. |
Re: Resourcendatei wird nicht erzeugt
Das hat bei mir, Delphi 6 Personal, noch nie funktioniert.
|
Re: Resourcendatei wird nicht erzeugt
also bei mir auch nicht :-(
|
Re: Resourcendatei wird nicht erzeugt
Verschiebst Du die Zeile in die richtige Stelle!
Delphi-Quellcode:
program tpm;
//{$R 'jsl.res' 'jsl.rc'} uses Forms, tpm_main in 'tpm_main.pas' {FormTpmMain}, at_datamodule in 'at_datamodule.pas' {DM: TDataModule}; //.... implementation // !!! {$R *.res} {$R 'jsl.res' 'jsl.rc'} // da soll sein begin Application.Initialize; Application.Title := 'TPM'; Application.CreateForm(TDM, DM); Application.CreateForm(TFormTpmMain, FormTpmMain); Application.Run; end. |
Re: Resourcendatei wird nicht erzeugt
Zitat:
|
Re: Resourcendatei wird nicht erzeugt
Zitat:
Vielen Dank |
Re: Resourcendatei wird nicht erzeugt
Hallo,
wer von euch verwendet erfolgreich das Schlüsselwort "implementation" im Projekt-Quelltext - und warum? Und wer stellt hier mal ein Minimalprojekt ein, welches die automatische Umwandlung eines RC-Skriptes in eine RES-Datei zeigt? Nach euren Darstellungen hier genügen da ja 10 Zeilen. Ich würde mich freuen, wenn mir nach vielen Jahren endlich jemand beweisen könnte, dass dieses Feature kein Mythos ist. Bisher genügte mir das Löschen der irgendwo vorhandenen RES-Datei um das Feature zu deaktivieren. Nach meinen bisherigen Beobachtungen werden Direktiven in der Form {$R FILENAME.RES FILENAME.RC} an den Resource Linker RLINK32 übergeben. Dazu wird nur der erste Dateiname ausgelesen, der Rest wird verworfen. Das macht der Delphi Preprocessor bei allen Direktiven so - was nach dem dokumentierten Teil steht, wird ignoriert. Was mich auch noch interessiert: Wie kommt man auf sowas? Gibt es eine Stelle in der Dokumentation, die ich bisher übersehen habe? Oder wird hier ein Treppenwitz aus dem Usenet kolportiert? Ich bin dankbar für jeden Beleg, vorzugsweise Primärquellen. Freundliche Grüße |
Re: Resourcendatei wird nicht erzeugt
Zitat:
stimmt. Das eigentliche hinzufügen einer Resourcedatei uberlässt man am besten Delphi selbst in dem man über <Umschalt> + <F11> in der Dropdownbox die bzw. Resourcedateienformat *.rc auswählt. Damit das fuktioniert muss die Anweisung als erstes im Programm aufgerufen werden. Das Funktioniert in der nonVCL sowie in der VCL. Mehrfachaufrufe sind auch ohne weteres machbar.
Delphi-Quellcode:
Wenn man eine Resourcedatei an Anderer Stelle einbindet
program Fussel;
{$R 'resources\resources01.res' 'resources\resources01.rc'} {$R 'resources\resources02.res' 'resources\resources02.rc'} uses Windows, Messages, uMain in '_units\uMain.pas'; // ... fuktioniert das erstllen der *.res nicht mehr. |
Re: Resourcendatei wird nicht erzeugt
@marabu:
Zitat:
|
Re: Resourcendatei wird nicht erzeugt
Zitat:
Upps, habe ich den Beitrag übersehen ? :gruebel: Suche dir ein Opensource Programm von mir hier in der DP. Ich mache es schon viele Jahre so wie beschrieben. |
Re: Resourcendatei wird nicht erzeugt
Hallo, der Quelltext sieht jetzt so aus. Natürlich ohne implementation
So funktioniert es bei mit D2006 Turbo
Delphi-Quellcode:
So funktioniert es bei mit D7 Pro.
program tpm;
uses Forms, tpm_main in 'tpm_main.pas' {FormTpmMain}, at_datamodule in 'at_datamodule.pas' {DM: TDataModule}; {$R *.res} {$R 'jsl.res' 'jsl.rc'} // habe ich manuell hier her verschoben. Sonst funktioniert es nicht begin Application.Initialize; Application.Title := 'TPM'; Application.CreateForm(TDM, DM); Application.CreateForm(TFormTpmMain, FormTpmMain); Application.Run; end.
Delphi-Quellcode:
program tpm;
{$R 'jsl.res' 'jsl.rc'} // Entsteht durch hinzufügen der rc-Datei uses Forms, tpm_main in 'tpm_main.pas' {FormTpmMain}, at_datamodule in 'at_datamodule.pas' {DM: TDataModule}; {$R *.res} begin Application.Initialize; Application.Title := 'TPM'; Application.CreateForm(TDM, DM); Application.CreateForm(TFormTpmMain, FormTpmMain); Application.Run; end. |
Re: Resourcendatei wird nicht erzeugt
@Thomas:
Danke für das Zitat, Thomas. Sobald ich D5 mal wieder installiert habe, werde ich nochmal versuchen den Text zu lokalisieren. In D7 ist es mir bisher leider noch nicht gelungen ihn sichtbar zu machen, so dass ich fast glaube, dass er dort nicht vorhanden ist. Vielleicht kennt ja jemand einen Zugriffspfad unter D7? @Matti & @Jens: Vielen Dank auch für eure Bemühungen um meine Erleuchtung. Ich hatte schon vor mich aus dem Fenster zu stürzen, weil ich es auch nach über einer Stunde nicht hinbekommen habe, aber dann hatte ich plötzlich eine Sternstunde:
Delphi-Quellcode:
Hinzufügen ist für mich seit Jahren das manuelle Eintragen der Direktive. Jemand wie ich, der gelernt hat über 100 Anschläge pro Minute mit einer Hand (Ex-Schreibfunker) zu tippen, dem Icons und Bilder nichts sagen, kommt nicht so leicht auf die Idee auf den ToolButton oder den Menüeintrag "Dem Projekt hinzufügen..." zu klicken.
{$R 'jsl.res' 'jsl.rc'} // Entsteht durch hinzufügen der rc-Datei
Die Funktionalität steckt im eingebauten Project Manager (internes MAKE), die manuell eingetragene Direktive wird so behandelt wie ich es gewohnt bin. Sie kann in D7 auch an beliebiger Stelle stehen und wird überall korrekt verarbeitet, wenn die RC-Datei in die Projektverwaltung eingetragen ist. Ist ja auch klar, wenn man bedenkt, dass diese Direktive nur eingesammelt wird um sie zum Schluss dem Resource Linker zu übergeben. Es wundert mich, dass sich da bei späteren Versionen etwas geändert haben soll. Interessant ist auch, dass das erzeugte BPG-File (ProjectGroup) dieses Feature nicht an das externe MAKE weitergeben kann:
Code:
Vielen Dank nochmal an alle. Wer weiß, was mir noch alles verborgen bleibt, weil ich die Menüpunkte und ToolButtons ignoriere.
#------------------------------------------------------------------------------
VERSION = BWS.01 #------------------------------------------------------------------------------ !ifndef ROOT ROOT = $(MAKEDIR)\.. !endif #------------------------------------------------------------------------------ MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** DCC = $(ROOT)\bin\dcc32.exe $** BRCC = $(ROOT)\bin\brcc32.exe $** #------------------------------------------------------------------------------ PROJECTS = Demo.exe #------------------------------------------------------------------------------ default: $(PROJECTS) #------------------------------------------------------------------------------ Demo.exe: Demo.dpr $(DCC) Freundliche Grüße |
Re: Resourcendatei wird nicht erzeugt
@marabu, wo wird denn nun bei der makefile der Resourcecompiler aufgerufen ?
Laut Script nicht. |
Re: Resourcendatei wird nicht erzeugt
Das ist genau meine Feststellung: Die der Projektverwaltung zugeführten RC-Dateien tauchen nicht im MAKEFILE auf. Das von mir gezeigte Skript sollte das nur dokumentieren.
|
Re: Resourcendatei wird nicht erzeugt
@marabu: ich habe den Eintrag (textlich erweitert) auch in D7 zum $R Hilfethema gefunden. Ich quote es hier mal nicht, da du ja D7 drauf hast, wie du schreibst. Also im Index direkt nach $R schauen...
|
Re: Resourcendatei wird nicht erzeugt
Danke noch einmal, aber ich scheine mich momentan unsagbar dumm anzustellen: Mein Hilfe-Index bringt eine Auswahlliste:
Es geht dem Ende zu - ich werde schon allmählich blind. |
Re: Resourcendatei wird nicht erzeugt
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
Re: Resourcendatei wird nicht erzeugt
Danke für den ScreenShot - ich schöpfe wieder Mut. Ich schlafe jetzt erst mal eine Runde und werde morgen versuchen meinen Hilfe-Index wieder auf Vordermann zu bringen - da scheint im Laufe der Jahre einiges kaputt gegangen zu sein: Kaum einer deiner Einträge ist bei mir zu sehen. Ist mir bisher gar nicht aufgefallen. Wie auch.
Gute Nacht |
Re: Resourcendatei wird nicht erzeugt
Hallo,
ich möchte kurz vom (vorläufig) glücklichen Ende meiner Irrungen und Wirrungen berichten. Meine D7 Online Hilfe wurde vermutlich von der Setup-Routine einer Komponentensammlung zerschossen. Da ich das jetzt nicht nachvollziehen mag, nenne ich das Produkt erstmal nicht. Die Hilfe-Datei D7DOPTS (darin befinden sich die Topics zu den Direktiven) und andere wurden aus meiner OpenHelp-Konfiguration gekegelt. Beim Lesen des von Thomas zitierten Topic ist mir aufgefallen, dass in der D5-Hilfe ein Fehler enthalten ist, der auch in D7 nicht korrigiert wurde: Zitat:
Freundliche Grüße |
Re: Resourcendatei wird nicht erzeugt
Naja, eher haben sie etwas wichtiges vergessen: Dieser Eintrag muss in der DPR, DPK o.ä. stehen um in der Projektverwaltung aufzutauchen. Die einzelnen Units helfen dabei nicht...
|
Re: Resourcendatei wird nicht erzeugt
Hallo Thomas,
meine D7 Installation verhält sich so wie ich es beschreibe: Nur nach der expliziten Aufnahme der RC-Datei in die Projektverwaltung (über Menü oder Toolbar) wird das resource script automatisch übersetzt und eine RES-Datei erzeugt. Die Stelle an der die Direktive steht ist aus den von mir bereits geschilderten Gründen völlig egal, sie muss lediglich syntaktisch korrekt sein. Insbesondere kann ich vor dem Übersetzen die automatisch erzeugte Direktive an eine beliebige Stelle im Quelltext (auch einer anderen Unit) verschieben. Vielleicht hat ja jemand die englische Fassung der Online Hilfe parat und kann die entprechende Stelle zitieren? Freundliche Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:02 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 by Thomas Breitkreuz