Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi .rc-Datei lässt sich nicht aus Projekt entfernen?!? (https://www.delphipraxis.net/108113-rc-datei-laesst-sich-nicht-aus-projekt-entfernen.html)

Pixelex 7. Feb 2008 08:09


.rc-Datei lässt sich nicht aus Projekt entfernen?!?
 
Hallo,

gestern wollte ich Grafiken per Resource-Datei in meine .exe-Datei einbinden in Turbo Delphi, das hat aber alles nicht ganz hingehauen.

1. Ich habe die grafiken.rc-Datei mit validem Inhalt mit brcc32.exe kompiliert. grafiken.RES-Datei entstand.
2. Dann startete ich Turbo Delphi und er meinte beim Öffnen meines Projektes: "meinprojektname.RES ist nicht vorhanden. Wird erstellt." Das fand ich schonmal komisch, weil ich dachte ich brauche nur die grafiken.RES. Warum erstellt der eine meinprojektname.RES-Datei?
3. Habe dann die Datei so eingebunden: {$R grafiken.RES}
4. Weil es dann glaube ich nicht direkt funktionierte habe ich mal probiert im Projekt-Fenster Rechtsklick auf meinprojektname.exe und dann Hinzufügen die grafiken.RC-Datei. Nichts passierte.
5. Nach dem Neustarten von TD und öffnen meines Projektes hatte ich nun die grafiken.RC-Datei auch im Projektfenster liegen und nun kommt immer dieses "Duplicate Resource"-Errormeldung wenn ich das Projekt starten will.

Das komische ist die .RC-Datei lässt sich nicht mehr aus dem Projekt-Fenster entfernen. Ich habe alles probiert. Habe die Dateien RC und RES mittlerweile sogar aus dem Projektverzeichnis gelöscht, aber die grafiken.RC-Datei ist weiterhin im Projektfenster, die "Duplicate"-Meldung kommt und die RC Datei lässt sich einfach nicht entfernen. :/

Könnt ihr mir helfen?

Muetze1 7. Feb 2008 08:49

Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
 
Zitat:

Zitat von Pixelex
2. Dann startete ich Turbo Delphi und er meinte beim Öffnen meines Projektes: "meinprojektname.RES ist nicht vorhanden. Wird erstellt." Das fand ich schonmal komisch, weil ich dachte ich brauche nur die grafiken.RES. Warum erstellt der eine meinprojektname.RES-Datei?

Die erstellt er seit je her für jedes Projekt. Darin legt er das Icon der Anwendung ab und (falls aktiviert) die Versionsinformationen, etc. Wenn du diese Resource nicht nutzen willst, dann schmeiss das {$ *.R} aus dem Projektquellcode raus. Dieses Verhalten ist seit mindestens D3 vorhanden.

Zitat:

Zitat von Pixelex
5. Nach dem Neustarten von TD und öffnen meines Projektes hatte ich nun die grafiken.RC-Datei auch im Projektfenster liegen und nun kommt immer dieses "Duplicate Resource"-Errormeldung wenn ich das Projekt starten will.

Hast du denn auch dein "{$R grafiken.RES}" wieder entfernt? Ansonsten ist es vollkommen logisch, da er über diese Anweisung deine Resource einbindet und dann nochmal über den Projektmanager.

Zitat:

Zitat von Pixelex
Das komische ist die .RC-Datei lässt sich nicht mehr aus dem Projekt-Fenster entfernen. Ich habe alles probiert. Habe die Dateien RC und RES mittlerweile sogar aus dem Projektverzeichnis gelöscht, aber die grafiken.RC-Datei ist weiterhin im Projektfenster, die "Duplicate"-Meldung kommt und die RC Datei lässt sich einfach nicht entfernen. :/

Entferne die {$R grafiken.res grafiken.rc} o.ä. Anweisung direkt im Projektquellcode. Dieses Problem besteht bei Delphi seit je her, dass er die Resourcen nicht mehr über den Projektmanager entfernt.

Pixelex 7. Feb 2008 08:52

Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
 
Oh man ja sorry, hatte {$R grafiken.res} in .dpr und in Form implementation drin. :/ Jetzt gehts. Danke ^_^.

Nur noch ein Problem. Ich nutze ja PNGDelphi um PNG-Bilder benutzen zu können, die lassen sich aber nicht mit

001 BITMAP "grafiken/pn_logo.png"
oder
001 PNG "grafiken/pn_logo.png"

über

SplashGrafik.Picture.Bitmap.LoadFromResourceID(HIn stance, 001);
oder
SplashGrafik.Picture.PNG.LoadFromResourceID(HInsta nce, 001);

laden. Wie mache ich das mit den PNG's damit die in die .exe-Datei integriert werden? ^_^

Muetze1 7. Feb 2008 08:59

Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
 
BITMAP als Schlüsselwort steht nun mal auch für BITMAPs und nicht für PiNGraphic. Du müsstest sie als RCDATA ablegen und ob dann noch LoadFromResource klappt ist fraglich. Ich weiss nicht aus dem Kopf wie PiNG diese Methoden implementiert. Soweit ich weiss, implementiert der Resourcencompiler kein Schlüsselwort für PiNG, somit ist PNG und BITMAP grundsätzlich nicht nutzbar.

Was mich viel mehr interessiert: Du müsstest bei beiden RC Angaben jeweilis vom Resourcencompiler dies um die Ohren geworfen bekommen, da er beim Ping dieses nicht als Bitmap ein binden kann und zum anderen weil er das Schlüsselwort nicht kennt. Von daher: Sicher dass du überhaupt eine neue .RES Datei bekommen hast? Schonmal von der Kommandozeile kompiliert und gibt es Meldungen?

Pixelex 7. Feb 2008 09:17

Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
 
Ich probiere es mal mit RCDATA. Ich melde mich dann...

Pixelex 7. Feb 2008 09:44

Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
 
Hi,

hm das funktioniert noch nicht.

Meine RC-Datei ist wie folgt: G001 RCDATA "grafiken/pn_logo.png"

Und mein Quelltext:

Delphi-Quellcode:
  Resource1 := TResourceStream.Create(HInstance, 'G001', PChar('RC_DATA'));
  SplashGrafik.Picture.Graphic.LoadFromStream(Resource1);

Kompilierung der RC-Datei hat auch funktioniert und RES wurde erstellt. Er meint aber immer Ressource G001 kann nicht gefunden werden. :/

teebee 7. Feb 2008 10:10

Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
 
Du brauchst selbst keinen ResourceStream zu erzeugen, das macht LoadFromResourceName/ID aus PNGDelphi selbst. Dabei wird der Res-Typ RCDATA vorausgesetzt, was Du ja erfüllst.
Delphi-Quellcode:
SplashGrafik.Picture.PNG.LoadFromResourceName(HInstance, 'G001');
sollte eigentlich klappen.

Pixelex 7. Feb 2008 10:16

Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
 
Zitat:

Zitat von teebee
Du brauchst selbst keinen ResourceStream zu erzeugen, das macht LoadFromResourceName/ID aus PNGDelphi selbst. Dabei wird der Res-Typ RCDATA vorausgesetzt, was Du ja erfüllst.
Delphi-Quellcode:
SplashGrafik.Picture.PNG.LoadFromResourceName(HInstance, 'G001');
sollte eigentlich klappen.

Dann sagt er mir immer das "TPicture" kein Element namens "PNG" enthält. :/

Pixelex 7. Feb 2008 10:25

Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
 
So klappt es!!

Delphi-Quellcode:
p := tpngobject.Create;
p.LoadFromResourceName(HInstance, 'G001');
SplashGrafik.Picture.Assign(p);
freeandnil(p);
Nur nun sieht man natürlich immernoch das Form-Fenster im Hintergrund. Wie macht ich das nun transparent so das nur das transparente Image angezeigt wird?

Muetze1 7. Feb 2008 11:59

Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
 
Zitat:

Zitat von Pixelex
Dann sagt er mir immer das "TPicture" kein Element namens "PNG" enthält. :/

Bitte unterscheide Laufzeit- und Compilerfehler. Dieser Unterschied ist essentiell, schliesslich brauchen wir über das Auslesen von Resourcen nicht reden, wenn der Compiler nichtmal was ausführbares erstellen kann.

Dein ResourceStream in deinem Versuch zuvor hast du falsch aufgerufen:

Delphi-Quellcode:
Resource1 := TResourceStream.Create(HInstance, 'G001', RC_DATA);
RC_DATA ist ein Typ und muss direkt angegeben werden und nicht als String. Letzteres nur bei besonderen Datentypen.


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

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-2025 by Thomas Breitkreuz