Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi D11 RCDATA Resource wird nicht erkannt (https://www.delphipraxis.net/208739-d11-rcdata-resource-wird-nicht-erkannt.html)

venice2 11. Sep 2021 00:28


D11 RCDATA Resource wird nicht erkannt
 
Programm wird mit den Flags kompiliert.
Sollte kein Problem sein.
Delphi-Quellcode:
program OTTB64;
{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
{$R '_resources\OTTB64.res' '_resources\OTTB64.rc'}

Pfade stimmen.

BLUP.bin befindet sich im gleichen Ordner wie die *.rc Datei.
PROGRAM.ico genauso.

D10.4 keine Probleme D11 meldet Blub in der Resource nicht gefunden.

Edit:
Habe nochmal in die *.exe und der *.res mit ResHacker geschaut dort steht RCData drin (Siehe Shot) wird aber mit
Delphi-Quellcode:
      if gP.SoundActive then
      begin
        Res := TResourceStream.Create(hInstance, 'BLUP', 'WAV');
        try
          Res.Position := 0;
          SndPlaySound(Res.Memory, SND_MEMORY or SND_ASYNC);
        finally
          Res.Free;
        end;
      end;
nicht mehr erkannt.

himitsu 11. Sep 2021 01:59

AW: D11 RCDATA Resource wird nicht erkannt
 
Wo ist die .RC eingebunden?
In PAS oder DPR/DPK?

{$R unterstützt den zweiten Parameter ausschließlich in der Projektdatei.



Außerdem, ist in den Projekt-Optionen die Versionsinfo doch bestimmt deaktiviert?
Sollte ja, denn sonst würde es ja der Linker anmerken, dass das die doppelte Ressource nicht eingebunden wurde.


[edit]
hmmmm.

Du erstellst die Ressource als ResTyp RCDATA, aber beim Laden sagst du stattdessen WAV.

venice2 11. Sep 2021 02:07

AW: D11 RCDATA Resource wird nicht erkannt
 
Zitat:

Zitat von himitsu (Beitrag 1494541)
Wo ist die .RC eingebunden?
In PAS oder DPR/DPK?

{$R unterstützt den zweiten Parameter ausschließlich in der Projektdatei.



Außerdem, ist in den Projekt-Optionen die Versionsinfo doch bestimmt deaktiviert?
Sollte ja, denn sonst würde es ja der Linker anmerken, dass das die doppelte Ressource nicht eingebunden wurde.


[edit]
hmmmm.

Delphi-Quellcode:
unit uMain;

interface

{$R '_resources\OTTB64.res' '_resources\OTTB64.rc'}
{$R '_resources\Manifest64.res'}
Hatte ich bisher immer so unter D10.4

Delphi-Quellcode:
program OTTB64;
{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}

{$R '_resources\OTTB64.res' '_resources\OTTB64.rc'}
in der *.dpr
Auch hier Ressource wird nicht gefunden.

venice2 11. Sep 2021 02:19

AW: D11 RCDATA Resource wird nicht erkannt
 
Da ist wohl was anderes im argen.
Eigentlich sollte doch die *.res aus der *.rc erstellt werden.
Delphi-Quellcode:
{$R '_resources\OTTB64.res' '_resources\OTTB64.rc'}


Nur warum funktioniert das nicht immer zuverlässig?
Lösche ich die OTTB64.res dann wird mir gemeldet das sie nicht existiert.
Aber warum muß sie existieren wenn Sie doch aus der *.rc erstellt wird.

konfus das ganze.. wieder mal.
Ich gebe explicit OTTB64.res als Ressourcen Datei an und trotzdem wird zusätzlich noch eine Projekt1.res erzeugt unverständlich und sinnlos.

TurboMagic 11. Sep 2021 09:00

AW: D11 RCDATA Resource wird nicht erkannt
 
Wenn du auf Subskription bist (wovon ich ausgehe) dann könntest du einen offiziellen Supportfall unter
https://supportforms.embarcadero.com/ aufgeben.
Dann würde dich ein EMBT Mitarbeiter zeitnah kontaktieren und sich das Problem anschauen.
Evtl. findet ihr dann eine Lösung, falls nicht hier im Forum noch was auftaucht.

himitsu 11. Sep 2021 09:21

AW: D11 RCDATA Resource wird nicht erkannt
 
Nachmal: Du erstellst eine RCDATA-Ressource, aber willst dann nach WAV suchen.
Probiere es mal mit der Konstante RT_RCDATA im Create.


Zitat:

Delphi-Quellcode:
unit uMain;

interface

{$R '_resources\OTTB64.res' '_resources\OTTB64.rc'}

Wie gesagt, das mit dem zweiten Parameter funktioniert ausschließlich in den Projektdateien.
An den anderen Stellen müsstest du selbst die .RES aus der .RC erstellen, mit brcc32.exe oder rc.exe .

Aber als Alternative würde ich dir die Projekt-Ressource empfehlen.
> Menü > Projekt > Ressourcen und Bilder
Hier nur aufpassen, falls man über die Console kompilieren möchte, denn dann ist es ratsam über MSBuild die .DPROJ anstatt der .DPR zu kompilieren.

Es ginge sogar, dass man Fremddateien einfach ins Projekte-Fenster zu ziehen, also zu/neben den Units unterhalb des Projektes, wo dann der RessourcenName aus dem Dateinamen gebildet wird.
Was zu praktisch ist, wenn man diese Textdateien (z.B. HTML, XML usw.) direkt im Delphi-Exitor bearbeiten/betrachten können möchte.

venice2 11. Sep 2021 10:11

AW: D11 RCDATA Resource wird nicht erkannt
 
Zitat:

Nachmal: Du erstellst eine RCDATA-Ressource, aber willst dann nach WAV suchen.
Nochmal nein.

Ich verwende für beide Delphi Versionen die gleichen Dateien um meine Ressource zu bilden.
Bei D10.4 wird der Eintrag "Blup" unter WAV erstellt und mit den gleichen Daten unter D11 der gleiche Eintrag "Blup" unter RCDATA.

Ich hoffe es kommt jetzt rüber was ich meine.

Das dann unter D11 die Ressource Blup nicht gefunden wird ist schon logisch wenn ich sie mit
Delphi-Quellcode:
Res := TResourceStream.Create(hInstance, 'BLUP', 'WAV');

einlesen möchte.

Irgend etwas verträgt sich da nicht.
Vor allem wenn ich sehe das 2 Ressourcen für die gleiche Anwendung erstellt werden.
Einmal Projekt1.res und OTTB64.res.

Zitat:

Aber als Alternative würde ich dir die Projekt-Ressource empfehlen.
Nein nicht für Win32API Anwendungen "Nonvcl"

Zitat:

Es ginge sogar, dass man Fremddateien einfach ins Projekte-Fenster zu ziehen
Ist mir bekannt und das mache ich auch so. Danke
Zitat:

wo dann der RessourcenName aus dem Dateinamen gebildet wird.
Dann würde sich erklären warum ich 2 Ressourcen habe. Werde ich dann wohl löschen müssen.

EDIT:

Beide Ressourcen gelöscht. Projekt (VCL) zum Testen angehängt.
Kompilieren. Im Ordner _resources nachschauen und siehe da 2 Ressourcen werden erstellt.

Es werden auch schöne Sachen in die Exe ein kompiliert. Alles durcheinander
Startet man die Exe wird das Projekt Icon nicht angezeigt. Im Dialog (Eigenschaften) aber schon.

venice2 11. Sep 2021 14:24

AW: D11 RCDATA Resource wird nicht erkannt
 
Sieht so aus als wenn Delphi mit einem VS-Studio *.rc Script nicht klar kommt.
Habe es geändert so wird zumindest im Eigenschafts Dialog von Windows das Zeilenende erkannt.

Es ändert aber nichts daran das immer 2 *.res Dateien geschrieben werden. Warum auch immer.

Uwe Raabe 11. Sep 2021 14:33

AW: D11 RCDATA Resource wird nicht erkannt
 
Soweit ich weiß, wird die <project>.res immer geschrieben und enthält das MainIcon und je nach Einstellung das automatisch generierte Manifest und die VersionsInfo. Solange diese res-Datei aber nicht in das Projekt eingebunden wird, sollte sie im Compilat auch nicht vorkommen.

venice2 11. Sep 2021 14:50

AW: D11 RCDATA Resource wird nicht erkannt
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1494576)
Soweit ich weiß, wird die <project>.res immer geschrieben und enthält das MainIcon und je nach Einstellung das automatisch generierte Manifest und die VersionsInfo. Solange diese res-Datei aber nicht in das Projekt eingebunden wird, sollte sie im Compilat auch nicht vorkommen.

Danke Uwe, es sieht so aus.
Es nervt nur wenn man unnötige Dateien im Ordner hat und diese jedesmal löschen muß.

Anhänge entfernt so läuft es jetzt einigermaßen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:37 Uhr.
Seite 1 von 2  1 2      

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