Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   doppelte *.res Datei x64 (https://www.delphipraxis.net/203581-doppelte-%2A-res-datei-x64.html)

venice2 2. Mär 2020 11:19

doppelte *.res Datei x64
 
Warum wird unter Delphi 10.3.3 immer eine doppelte *.res erzeugt? Das nervt irgendwie.
Kann man das abstellen?

Ich erstelle meine *.res innerhalb des Projekt
Delphi-Quellcode:
{$R '_res\xxx.res' '_res\xxx.rc'}


Es soll also im Ordner die xxx.res erzeugt werden, tut es auch.
Zusätzlich wird aber die gleiche nochmals im Root Pfad des Quelltextes erstellt warum?
Diese beinhaltet dann die Icons von Delphi anstelle dieser von meiner Anwendung.

Sherlock 2. Mär 2020 11:30

AW: doppelte *.res Datei x64
 
Mutmaßung: Die Datei wird im Projectroot erwartet. Sie darf auch woanders sein, aber historische Reste erzeugen sie dann immer auch im Root. Darauf basierende Lösung: Immer im Root ablegen.

Sherlock
- die Angaben sind wie immer ohne Gewehr, damit man mich nicht erschießen kann, falls sie Schwachsinn sind

venice2 2. Mär 2020 11:38

AW: doppelte *.res Datei x64
 
Zitat:

Zitat von Sherlock (Beitrag 1458752)
Mutmaßung: Die Datei wird im Projectroot erwartet.

Ich denke alles richtig gemacht zu haben.
Und das Problem habe ich unter älteren Delphi Versionen noch nicht erlebt.

Unter Ressourcen-Compiler wurde der Pfad zur Ressource zusätzlich noch eingetragen.
Abgabeverzeichnis für .res Dateien "_res\"
Aber der Compiler macht was er will.

Er legt seine eigene .res im Root Pfad ab wo sich die *.dproj Datei befindet.
Unverständlich.

himitsu 2. Mär 2020 12:20

AW: doppelte *.res Datei x64
 
Zitat:

Zitat von Sherlock (Beitrag 1458752)
Die Datei wird im Projectroot erwartet. Sie darf auch woanders sein,

Die Syntax mit dem Ressourcen-Skript, wo der Compiler den Ressorcencompiler anspricht, funktioniert nur in der DPR und DPK. In PAS wird nur der erste Parameter verwendet und der RC ignoriert.
Delphi-Quellcode:
{$R '_res\xxx.res'}  // überall, mit oder ohne ' , falls kein Leerzeichen im Dateinamen/Pfad

{$R '_res\xxx.res' '_res\xxx.rc'}  // nur in der Projektdatei
Ja, die automatisch generierte RES liegt immer im Projektverzeichnis, obwohl es "theoretisch" möglich sein sollte die zu verschieben.
Ansonsten kenn ich es auch nur so, dass RES immer relativ zu der Datei liegen, in welcher sie eingebunden werden. (nichts mit Suchpfaden oder so)


Ich habe hier auch knapp 75 Projekte (BPL/DLL/EXE) rumliegen, in einer Projektgruppe.
In die binde ich eigene Ressourcen ein, die vom Finalbuilder mit der aktuellen Version und einem passenden Manifest generiert werden, aber komischer Weise ist es bei 5-10 Projekten im Delphi nicht möglich die Versionsressouce zu deaktiveren, bzw. sie aktiviert sich immer wieder von selbst.
Obwohl es keine merklichen Unterschiede zwischen diesen DPROJ/DPK gibt, leben wir nun schon jahrelang mit der Warnung vonwegen doppelter Ressource und müssen nur aufpassen dass Delphi die DPK nicht ummodelt und unsere RES immer nach der RES vom Delphi eingebunden wird, denn der Letzte gewinnt und wird gelinkt.

venice2 2. Mär 2020 12:27

AW: doppelte *.res Datei x64
 
Seltsam ist doch nur das eine zusätzliche *.res angelegt wird.
Entschuldige wenn ich es so schroff sage. Das ist einfach Schwachsinn.
Die Wird weder verwendet noch in die Exe mit ein-kompiliert. Daher unnötig.

Ok. Ist wie es ist.
Dachte nur das könnte man ausschalten dieses Verhalten.

himitsu 2. Mär 2020 12:38

AW: doppelte *.res Datei x64
 
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi hat eine eigene RES, wo z.B. die Projektversion drin steht.
Auch was über den RessourcenManager im Delphi angelegt wird, landet dort drin.

Wenn man das
Delphi-Quellcode:
{$R *.res *.rc}
aus der Projektdatei entfernt, dann wird die Versionsinformation in den Projektoptionen disabled,
aber wenn z.B. was von dieser Ressource auch in der DPROJ drin steht, dann syncronisiert Delphi das zurück in die DPR und schon isses wieder da.
Und sobald
Delphi-Quellcode:
{$R *.res *.rc}
in der DPR/DPK drin steht, wird diese Datei von IDE/Compiler immer wieder neu erstellt.


Du kannst mal versuchen selbst den Haken in den Projektoptionen wegzumachen und schauen ob es hilft.
Und aufpassen, dass dieses Setting womöglich auch noch konfigurationsabhängig sein könnte.

venice2 2. Mär 2020 12:53

AW: doppelte *.res Datei x64
 
Ich verwende keine Versionsinformationen die sind immer aus.
Genauso verwende ich kein Manifest aus der Delphi IDE.

Zitat:

Delphi hat eine eigene RES, wo z.B. die Projektversion drin steht.
Auch was über den Ressourcen Manager im Delphi angelegt wird, landet dort drin.
Mag ja unter Umständen seine Richtigkeit haben.

Erklärt aber nicht den Zustand das eine Datei angelegt wird die vom Projekt nicht verwendet wird.
Und es nervt wenn andere Leute mit meinem Quelltext arbeiten müssen und nicht wissen welche *.res nun für das Projekt zuständig ist.

Unter älteren Version von Delphi gebe ich den Pfad zur *.res in den Optionen ein und dann wird dort gesucht und diese verwendet.
Unter x64 scheint das überhaupt nicht mehr korrekt zu funktionieren.
Ich denke die Angabe wird ignoriert und deshalb eine *.res im Root Pfad angelegt die dann nicht verwendet wird.
Es wird einfach der Suchpfad zur *.res ignoriert.

Teste es doch bitte mal dann siehst du was ich meine.

Zitat:

In PAS wird nur der erste Parameter verwendet und der RC ignoriert.
Nein wird er nicht.

Ich habe meine Schalter für die *.res Dateien in meinem Hauptformular. (nicht in der DPR)
Meine RC Datei ist im Projekt integriert.
Wenn ich Version ändere dann ändere ich die RC entsprechend ab.
Würde es nicht funktionieren (der RC ignoriert) dann hätte ich immer die gleiche Version ist aber nicht so.
Die *.res wird dann entsprechend der RC neu kompiliert.

Aber ich sehe schon es gibt keinen Schalter der das unterbinden kann. Darum ging es mir eigentlich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:36 Uhr.

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