![]() |
AW: JPG ohne Resource einfügen
ok ich hab die resource einfach nochmal neu erstellt mit brcc32.exe. Jetzt gehts jedenfalls..
Keine Ahnung. Dankeschön^^ |
AW: JPG ohne Resource einfügen
...er möchte die nicht auf der Platte liegen haben. Nur ging der Versuch mit der Ressource schief. 8-) jaenicke hat es schon erklärt...
Ich trau dem Frieden noch nicht. :zwinker: Zeig noch mal den letzten Stand des Codes... |
AW: JPG ohne Resource einfügen
Da das mit den Resourcen jetzt funktioniert,
will ich die jpg-Dateien als globale Variablen speichern, um sie später zu verwenden. Wie geht das am einfachsten? var bild: TJpegImage; RStream: TResourceStream; begin RStream := TResourceStream.Create(HInstance, 'A'+IntToStr(i), RT_RCDATA); bild:=TJpegImage.Create; bild.LoadFromStream(RStream); RStream.Free; end Wenn ich das mit TJpegImage und LoadFromSteam mache, bekomme ich an irgendeiner Stelle immer Fehlermeldungen. *Brett vorm Kopf* |
AW: JPG ohne Resource einfügen
An welcher Stelle und welche Fehlermeldungen?
Im Zweifelsfall (wenn du damit nichts anfangen kannst) halte an, wenn der Fehler aufgetreten ist und mache einen Screenshot wie es dann in Delphi aussieht. Vor allem den Stacktrace, die markierte Stelle, die Fehlermeldung... |
AW: JPG ohne Resource einfügen
Code:
die Fehlermeldungen erscheinen am Ende des OnClick-Ereignis der TImage Komponenten.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, jpeg, StdCtrls; type TForm1 = class(TForm) Image1: TImage; Button1: TButton; Image2: TImage; Image3: TImage; procedure FormActivate(Sender: TObject); procedure Image1Click(Sender: TObject); procedure Image2Click(Sender: TObject); procedure Image3Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } procedure wahl(tuernummer: integer); function tuerwahl(autoposition, wahl1: byte): byte; public { Public-Deklarationen } end; var Form1: TForm1; gewaehlt: integer = 0; tuer: array[1..3] of TJpegImage; autoposition: byte; implementation {$R *.dfm} {$R es.res} function TForm1.tuerwahl(autoposition, wahl1: byte): byte; begin if autoposition=wahl1 then case autoposition of 1: result:=Random(2)+2; 3: result:=Random(2)+1; else if Random(2)=0 then result:=1 else result:=3 end else case autoposition of 1: if wahl1=2 then result:=3 else result:=2; 3: if wahl1=2 then result:=1 else result:=2; else if wahl1=1 then result:=3 else result:=1 end end; procedure TForm1.wahl(tuernummer: integer); begin if gewaehlt=0 then begin case tuernummer of 1: if tuerwahl(autoposition, tuernummer)=2 then Image2.Picture.Graphic:=tuer[3] else Image3.Picture.Graphic:=tuer[3]; 2: if tuerwahl(autoposition, tuernummer)=1 then Image1.Picture.Graphic:=tuer[3] else Image3.Picture.Graphic:=tuer[3]; else if tuerwahl(autoposition, tuernummer)=2 then Image2.Picture.Graphic:=tuer[3] else Image1.Picture.Graphic:=tuer[3]; end; gewaehlt:=tuernummer; end else begin end end; procedure TForm1.FormActivate(Sender: TObject); var jpgLogo: TJpegImage; RStream: TResourceStream; i, j: integer; begin for i:=1 to 3 do begin RStream := TResourceStream.Create(HInstance, 'A'+IntToStr(i), RT_RCDATA); try jpgLogo := TJpegImage.Create; Try jpgLogo.LoadFromStream(RStream); tuer[i].LoadFromStream(RStream); //tuer[i]:=jpgLogo; if i=1 then for j:=1 to 3 do case j of 1: Image1.Picture.Graphic := jpgLogo; 2: Image2.Picture.Graphic := jpgLogo; else Image3.Picture.Graphic := jpgLogo; end finally //jpgLogo.Free; End; finally RStream.Free; end end end; procedure TForm1.Image1Click(Sender: TObject); begin Wahl(1); end; procedure TForm1.Image2Click(Sender: TObject); begin Wahl(2); end; procedure TForm1.Image3Click(Sender: TObject); begin Wahl(3); end; procedure TForm1.FormCreate(Sender: TObject); var i: integer; begin Randomize; autoposition:=Random(3)+1; for i:=low(tuer) to high(tuer) do tuer[i]:=TJpegImage.Create; end; end. |
AW: JPG ohne Resource einfügen
Zitat:
Das hier kannst du auch kürzer schreiben, ich habe nur das Gefühl, dass das so nicht gemeint war:
Delphi-Quellcode:
Das ist das gleiche wie:
if i=1 then
for j:=1 to 3 do case j of 1: Image1.Picture.Graphic := jpgLogo; 2: Image2.Picture.Graphic := jpgLogo; else Image3.Picture.Graphic := jpgLogo; end
Delphi-Quellcode:
Denn du gehst ja mit j die Werte 1, 2 und 3 durch und bei jedem davon wird eine der drei Zeilen ausgeführt. Am Ende also alle drei.
if i = 1 then
begin Image1.Picture.Graphic := jpgLogo; Image2.Picture.Graphic := jpgLogo; Image3.Picture.Graphic := jpgLogo; end; |
AW: JPG ohne Resource einfügen
Liste der Anhänge anzeigen (Anzahl: 1)
Ja genau, danke^^
wie löse ich jetzt das Problem? |
AW: JPG ohne Resource einfügen
Die Graphic mit
Delphi-Quellcode:
zuzuweisen, ist eine sehr schlechte Idee. Probiers stattdessen mal mit
:=
Delphi-Quellcode:
. Die Fehlermeldung heißt allerdings, dass dein Stream an der gegebenen Position kein gültiges JPEG enthält. Das könnte daran liegen, dass du versuchst zwei Grafiken aus der selben Resource zu laden.
Assign
|
AW: JPG ohne Resource einfügen
Delphi-Quellcode:
macht hier (hier) intern ein Assign.
:=
Es wird eine komplette Kopie des übergebenen TGraphic-Nachfahren angelegt. (neue Instanz erstellt und dieser mit Assign eine Kopie des Inhalts reingegeben) #41 = Empty File Input ![]() ![]() Embarcadero/Borland übernimmt leider viel Fremdcode, aber bei der Aufnahme der Codes sind die einfach zu doof. * Selten Links/Hinnweise zum Originalhersteller oder wenigstens die Erwähnung des Namens des Originalcodes, * niemals Verweise zur Dokumentation der übernommenen Funtionen * und vorallem niemals denkt jemand nach, und erweitert "ordentlich" die übernommenen Codes. So hätte man locker diese Fehlercodes übersetzen können anstatt nur 'ne nutzlose Fehlernummer anzuzeigen. (Nutzlos, wenn man niemandem sagt, was sie bedeuten sollen) |
AW: JPG ohne Resource einfügen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:37 Uhr. |
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