Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Resourcendatei wird nicht erzeugt (https://www.delphipraxis.net/101483-resourcendatei-wird-nicht-erzeugt.html)

Jens Schumann 14. Okt 2007 10:11


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.

Luckie 14. Okt 2007 10:40

Re: Resourcendatei wird nicht erzeugt
 
Das hat bei mir, Delphi 6 Personal, noch nie funktioniert.

lbccaleb 14. Okt 2007 10:42

Re: Resourcendatei wird nicht erzeugt
 
also bei mir auch nicht :-(

taktaky 14. Okt 2007 11:07

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.

Jens Schumann 14. Okt 2007 12:14

Re: Resourcendatei wird nicht erzeugt
 
Zitat:

Zitat von Luckie
Das hat bei mir, Delphi 6 Personal, noch nie funktioniert.

ich habe die Professional Versionen für D5 und D7. Da funktioniert das einwandfrei. Das mache ich schon solange das ich mich gar nicht mehr daran erinnere wie man Resourcendateien manuell erstellt. :cyclops: Vor langer Zeit habe ich dafür den Borland Resourcenworkshop verwendet.

Jens Schumann 14. Okt 2007 12:15

Re: Resourcendatei wird nicht erzeugt
 
Zitat:

Zitat von taktaky
Verschiebst Du die Zeile in die richtige Stelle!

Unglaublich. Aber es funktioniert.

Vielen Dank

marabu 14. Okt 2007 14:35

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

turboPASCAL 14. Okt 2007 16:41

Re: Resourcendatei wird nicht erzeugt
 
Zitat:

Zitat von Luckie
Das hat bei mir, Delphi 6 Personal, noch nie funktioniert.

Neh, da muss ich wieder sprechen. Delphi 6 PE macht das ohne Probleme so lange der Path
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:
program Fussel;

{$R 'resources\resources01.res' 'resources\resources01.rc'}
{$R 'resources\resources02.res' 'resources\resources02.rc'}

uses
  Windows,
  Messages,
  uMain in '_units\uMain.pas';

// ...
Wenn man eine Resourcedatei an Anderer Stelle einbindet
fuktioniert das erstllen der *.res nicht mehr.

Muetze1 14. Okt 2007 17:39

Re: Resourcendatei wird nicht erzeugt
 
@marabu:
Zitat:

Zitat von Delphi 5
Typ Parameter
Gültigkeitsbereich {$R filename}
{$RESOURCE filename}{$R *.xxx}
{$R filename.RES filename.RC}
Gültigkeitsbereich Lokal
Anmerkungen

Die Direktive $R legt den Namen einer Ressourcendatei fest, die in eine Anwendung oder eine Bibliothek eingebunden werden soll. Dabei muß es sich um eine Windows-Ressourcendatei handeln. Die vorgegebene Namenserweiterung ist RES. Wenn der Dateiname ein Leerzeichen enthält, schließen Sie ihn in halbe Anführungszeichen ein: {$I 'Meine Datei'}.
Das Symbol * hat in $R-Direktiven eine spezielle Bedeutung. Es steht für den Namensstamm (ohne Erweiterung) der Quelltextdatei, in welcher die Direktive enthalten ist. In der Regel weist eine Ressourcendatei einer Anwendung (RES) denselben Namen auf wie die zugehörige Projektdatei (DPR). In diesem Fall bewirkt die Verwendung von {$R *.RES} in der Projektdatei, daß die zugehörige Ressourcendatei mit der Anwendung verknüpft wird. Analog weist eine Formulardatei (.DFM) in der Regel denselben Namen auf wie ihre Unit-Datei (PAS); durch Verwendung von {$R *.DFM} in der PAS-Datei wird die entsprechende Formulardatei mit der Anwendung verknüpft.

{$R Dateiname.RES Dateiname.RC} bewirkt, daß die RC-Datei in der Projektverwaltung von Delphi enthalten ist (hierzu müssen die beiden "Dateinamen" übereinstimmen). Wenn der Benutzer die RC-Datei von der Projektverwaltung aus aufruft, wird der Editor für String-Tabellen aufgerufen.
Wenn Sie die Direktive {$R Dateiname} in einer Unit verwenden, wird der angegebene Dateiname einfach in der resultierenden Unit-Datei gespeichert. Es wird zu diesem Zeitpunkt nicht geprüft, ob der Dateiname korrekt ist und eine vorhandene Datei bezeichnet.

Beim Linken einer Anwendung oder einer Bibliothek (nach dem Compilieren des Programms bzw. der Bibliotheksquelldatei) erfolgt die Verarbeitung aller Ressourcendateien, die in den benutzten Units und im Programm bzw. in der Bibliothek angegeben sind. Dabei werden die Ressourcen aller Ressourcendateien in die ausführbare Datei kopiert. Während der Ressourcenverarbeitung sucht der Linker von Delphi nach den RES-Dateien. Diese Suche erfolgt in dem Verzeichnis, in dem auch das Modul mit der Direktive $R liegt. Außerdem werden alle Verzeichnisse durchsucht, die im Eingabefeld Suchpfad der Registerkarte Verzeichnisse|Bedingungen im Dialogfeld Projektoptionen (bzw. mit der Option /R in der DCC32-Kommandozeile) festgelegt wurden.


turboPASCAL 14. Okt 2007 17:53

Re: Resourcendatei wird nicht erzeugt
 
Zitat:

Zitat von marabu
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.


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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:03 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz