Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   JPeg aus Ressource in TImage laden, kriegs aber nicht hin. (https://www.delphipraxis.net/8005-jpeg-aus-ressource-timage-laden-kriegs-aber-nicht-hin.html)

The-X 31. Aug 2003 00:38

Re: JPeg aus Ressource in TImage laden, kriegs aber nicht hi
 
Kleiner Tipp: Unit Jpeg ;)

hoffe, das ich 'n bisschen helfen konnte...

Armageddon 31. Aug 2003 11:50

Re: JPeg aus Ressource in TImage laden, kriegs aber nicht hi
 
Hi The-X

Ähm danke für den Tip. Hab das natürlich schon gemacht *g*
Der Rest funktioniert auch. Häng nur noch dran fest das ich irgendwie überprüfen sollte ob das bild auch in der Exe vorhanden ist. Weiß nur nicht genau wie :gruebel:

Darty und ich haben uns darüber mal im ICQ unterhalten.
Dachten das ungefähr so:

Delphi-Quellcode:
procedure LoadImage(Bild: String; Ziel: TImage);
var
  b: TJPEGImage;
  s: TResourceStream;
begin
  if exists Bild in der exe then
    s := TResourceStream.Create(HINSTANCE, Bild, 'JPG');
    b := TJPEGImage.Create;
    b.LoadFromStream(S);
    Ziel.Picture.Bitmap.Assign(b);
    b.Free;
    s.Free
  else
    s := TResourceStream.Create(HINSTANCE, 'Fehlerbild', 'JPG');
    b := TJPEGImage.Create;
    b.LoadFromStream(S);
    Ziel.Picture.Bitmap.Assign(b);
    b.Free;
    s.Free;
  end;
end;
wobei ich noch nicht weiß wie oder ob man das überhaupt prüfen kann ob das bild existiert! Ist natürlich total Quatsch die "if exists bild in der exe" Zeile.

Hoffe es ist verständlich formuliert.

Gruß Arma.

Armageddon 31. Aug 2003 15:02

Re: JPeg aus Ressource in TImage laden, kriegs aber nicht hi
 
Ich habs :bounce2:

Hier die Lösung:

Delphi-Quellcode:
procedure LoadImage(Bild: String; Ziel: TImage);
var
  b: TJPEGImage;
  s: TResourceStream;
  r: Cardinal;
begin
  r := FindResource(HInstance, PChar(Bild), 'JPG');
  if r <> 0 then
  begin
    s := TResourceStream.Create(HInstance, Bild, 'JPG');
    b := TJPEGImage.Create;
    b.LoadFromStream(s);
    Ziel.Picture.Bitmap.Assign(b);
    b.Free;
    s.Free;
  end
  else
  begin
    s := TResourceStream.Create(HInstance, 'Fehlerbild', 'JPG');
    b := TJPEGImage.Create;
    b.LoadFromStream(s);
    Ziel.Picture.Bitmap.Assign(b);
    b.Free;
    s.Free;
  end;
end;
Und aufrufen wie gehabt so:

Delphi-Quellcode:
LoadImage('bild1', Image1);
Vielleicht mach ich mal noch ein schönes Beispiel das man dann vielleicht in die Code-Library setzen kann. So mit allem drum und drann wie ich das Resource-File mache usw.

Gruß Arma. :coder:

Christian S. 31. Aug 2003 15:43

Re: JPeg aus Ressource in TImage laden, kriegs aber nicht hi
 
Hi!

Vielleicht wäre es schöner, alles, was in beiden Zweigen der IF-Anweisung vorkommt, nach draußen zu packen. Spart ein paar Zeilen.

Das mit dem Eintrag im Code-Library ist eine gute Idee. Zur Erstellung von Resourcen braucht dort aber, glaube ich, nicht noch etwas. Das hier reicht, denke ich.,

MfG
Peter

Armageddon 31. Aug 2003 16:41

Re: JPeg aus Ressource in TImage laden, kriegs aber nicht hi
 
Hi Peter,

ähm das doch nur eine if-Abfrage.

Außerdem kommt die procedure ja nur einmal im Programm vor. Da ich sie ja immer wieder nur mir dem LoadImage.... Aufrufe.

Sicher geht das auch extern in ne dll. Aber ich wollte halt nur eine Datei haben zum weitergeben.

Aber ansonsten kann es sich glaub sehen lassen denk ich für nen Anfänger wie mich :D

Gruß Arma.

Christian S. 31. Aug 2003 16:48

Re: JPeg aus Ressource in TImage laden, kriegs aber nicht hi
 
Hi!

Wahrscheinlich habe ich mich unklar ausgedrückt:

Delphi-Quellcode:
procedure LoadImage(Bild: String; Ziel: TImage);
var
  b: TJPEGImage;
  s: TResourceStream;
  r: Cardinal;
begin
  r := FindResource(HInstance, PChar(Bild), 'JPG');

  if r <> 0 then
    s := TResourceStream.Create(HInstance, Bild, 'JPG');
  else
    s := TResourceStream.Create(HInstance, 'Fehlerbild', 'JPG');

  b := TJPEGImage.Create;
  b.LoadFromStream(s);
  Ziel.Picture.Bitmap.Assign(b);
  b.Free;
  s.Free;
end;
So meinte ich das.

Zitat:

Aber ansonsten kann es sich glaub sehen lassen denk ich für nen Anfänger wie mich
Ich wollte Deine Leistung in keiner Weise schmälern und finde auch, dass diese Prozedur sehr nützlich ist. Wie gesagt, ich finde, sie sollte ins Code-Library.

MfG
Peter

Armageddon 31. Aug 2003 16:59

Re: JPeg aus Ressource in TImage laden, kriegs aber nicht hi
 
Hi Peter,

perfekt aber nen kleinen Hacken hat es noch bei Dir :mrgreen:

das ";" vor dem else müßte weg sonst meckert er beim compilieren.

So wenn ich mal Morgen Zeit habe mach ich da einen schön geschriebenen Thread für die Code-Library.


Gruß Arma.

Christian S. 31. Aug 2003 17:07

Re: JPeg aus Ressource in TImage laden, kriegs aber nicht hi
 
Zitat:

das ";" vor dem else müßte weg sonst meckert er beim compilieren.
Wie konnte mir das passieren? :roteyes: Diese Schande! :duck:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:19 Uhr.
Seite 2 von 2     12   

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