Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Rio 10.3.1 Resource wird zur Laufzeit nicht mehr gefunden (https://www.delphipraxis.net/199765-rio-10-3-1-resource-wird-zur-laufzeit-nicht-mehr-gefunden.html)

ghubi01 18. Feb 2019 15:32

Rio 10.3.1 Resource wird zur Laufzeit nicht mehr gefunden
 
Hallo,

ich habe gerade auf Rio 10.3.1 upgedatet und wollte meine eigene Image-Komponente (von TImage abgel.) weiter entwickeln.
Für die Komponente habe ich eine eigene Resourcendatei mit mehreren Bitmaps erstellt.
Diese Bitmaps sollen zur Laufzeit innerhalb der Komponente geladen und dann angezeigt werden.

Das hat mit Rio 10.3.0 auch wunderbar funktioniert.

Die Resourcendatei wird folgendermaßen eingebunden:
Delphi-Quellcode:
package ImageKomps;

{$R *.res}
{$R Seg8Image.res}
...
In der zugehörigen Unit:
Delphi-Quellcode:
constructor TAchtSegmentImage.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Picture.Bitmap.LoadFromResourceName(HInstance,'BASICW'); //zur Designzeit wird das Bitmap noch geladen
                                                           //zur Laufzeit gibt es hier eine Exception 'Resource BASICW nicht gefunden'
  Width:=Picture.Bitmap.Width;
  Height:=Picture.Bitmap.Height;
  Stretch:=True;
end;
Wie gesagt; vor dem Update funktionierte Alles noch problemlos. :?

Wie bekomme ich das jetzt wieder hin, dass die Komponente ihre eigenen Bitmaps auch nutzen kann?

CCRDude 18. Feb 2019 15:39

AW: Rio 10.3.1 Resource wird zur Laufzeit nicht mehr gefunden
 
Spontane Überlegung: wenn die Resource nur im Package eingebunden wird, dürfte das nur funktionieren, wenn das Programm dann mit Laufzeitpaketen kompiliert wird. Wenn es ohne kompiliert wird - woher soll es dann die Resource kennen?
Besser wäre das $R in der Unit aufgehoben, die die Resource tatsächlich verwendet.

ghubi01 18. Feb 2019 16:05

AW: Rio 10.3.1 Resource wird zur Laufzeit nicht mehr gefunden
 
Hallo,

hatte ich mir auch schon überlegt.

Ich habe das jetzt in der Unit hier eingefügt:
Delphi-Quellcode:
implementation

{$R Seg8Image.res}
...
1. Versuch: Beim Kompilieren des Testprojektes mit der Komponente: 'Kann Seg8Image.res nicht finden'
Dann habe die Resource nach C:\Users\Public\Documents\Embarcadero\Studio\20.0\ Bpl kopiert
2. Versuch: Das Testprojekt lies sich problemlos kompilieren und starten. Es wurden dann auch die anderen Bitmaps angezeigt. :-D

Aber es steht noch immer die Frage im Raum, wieso hat das vorher mit Rio 10.3.0 ohne Probleme funktioniert?

Uwe Raabe 18. Feb 2019 16:17

AW: Rio 10.3.1 Resource wird zur Laufzeit nicht mehr gefunden
 
Zitat:

Zitat von ghubi01 (Beitrag 1425899)
Aber es steht noch immer die Frage im Raum, wieso hat das vorher mit Rio 10.3.0 ohne Probleme funktioniert?

Manchmal weiß man eher, warum etwas nicht funktioniert, als warum etwas trotzdem funktioniert.

ghubi01 18. Feb 2019 17:25

AW: Rio 10.3.1 Resource wird zur Laufzeit nicht mehr gefunden
 
Hallo,

es gibt hierbei noch eine Ungereimtheit, die bei Rio 10.3.0 nicht auftrat.
Ich verwende in der Komponente auch noch DesignIntf, DesignEditors,

Im Testprojekt muss jetzt zusätzlich noch in:
Projektoptionen -> Delphi-Compiler -> Compilieren -> Weiterer Optionen -> Weitere Optionen -> Weitere Optionen für die Übergabe an den Compiler der Eintrag -LUDesignIDE für die 32Bit-Platformen eingetragen werden.

Diese Eintragung war vorher nur bei der Komponente erforderlich.

Ich hatten den Verdacht, dass mit meinen Verzeichniseinstellungen etwas nicht in Ordnung ist, aber ich habe keine Unterschiede zu Vorher feststellen können.

Ich bin ein bisschen Ratlos. :?

peterbelow 19. Feb 2019 10:37

AW: Rio 10.3.1 Resource wird zur Laufzeit nicht mehr gefunden
 
Zitat:

Zitat von ghubi01 (Beitrag 1425903)
Hallo,

es gibt hierbei noch eine Ungereimtheit, die bei Rio 10.3.0 nicht auftrat.
Ich verwende in der Komponente auch noch DesignIntf, DesignEditors,

Im Testprojekt muss jetzt zusätzlich noch in:
Projektoptionen -> Delphi-Compiler -> Compilieren -> Weiterer Optionen -> Weitere Optionen -> Weitere Optionen für die Übergabe an den Compiler der Eintrag -LUDesignIDE für die 32Bit-Platformen eingetragen werden.

Hast Du deine Komponentenpackage auch sauber in eine designtime und eine runtime package geteilt? Units aus der DesignIDE-Package dürfen nur in einer designtime-package verwendet werden, nicht in einer runtime package oder einem EXE.

ghubi01 19. Feb 2019 18:58

AW: Rio 10.3.1 Resource wird zur Laufzeit nicht mehr gefunden
 
Hallo

@peterbelow
Danke für den Hinweis. Ich hatte nicht mehr daran gedacht, dass man in designtime und runtime Package trennen muss. :oops:
In meinen bisherigen Komponenten war das auch nicht nötig, da ich keine Units aus der DesignIDE-Package verwendet habe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:35 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