Autor Beitrag
Flugschueler
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Di 14.10.08 15:54 
Vorweg:
Habe schon alle möglichen Foren und Threads durchwühlt, aber keine Lösung funktioniert bei uns.

System:
Delphi 2005 Personal Edition

Ziel:
Ich möchte Bilder (Jpeg) in einem TImage anzeigen. Diese Bilder möchte ich direkt in der .exe integriert haben, damit ich nur eine Datei habe.Ich habe im Internet gelesen, dass das nur über Ressourcen machbar ist. (Wenn es einen einfacheren Weg gibt wäre ich sehr dankbar).

Bisher:
- Resource nach Tutorial erstellt (www.delphi-library.d...=tutorial+ressourcen).
- Bilder auf viele Möglichkeiten ( s. Tutorial und www.delphi-forum.de/...ght=problem+resource ) versucht zu laden, klappt jedoch nie.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, System.ComponentModel, Borland.Vcl.StdCtrls, Borland.Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Label8: TLabel;
    Image1: TImage;
    //rstream: TResourceStream;    //das will er mir jedesmal löschen
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Bildladen;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  rstream: TResourceStream;
//hier lässt er es drin

implementation

{$R *.nfm}
{$R bilder.RES}

//bilder.RES hier integriert

procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button2Click(Sender: TObject);
var aufg,***,kts,hd,alt,x,y: integer;
begin

//Unwichtig (ein paar zufällig generierte Zahlen)

aufg := Random (7) + 1;
edit1.text:=inttostr(aufg);

*** := Random (3) + 1;
edit2.text:=inttostr(***);

kts := (Random (7) + 9)*10;
edit3.text:=inttostr(kts);

hd := (Random (36))*10;
edit4.text:=inttostr(hd);

alt := (Random (4) + 3)*1000;
edit5.text:=inttostr(alt);

x := Random (76) + 25;
edit6.text:=inttostr(x);

y := Random (76) + 25;
edit7.text:=inttostr(y);

//hier beginnt mein Problem

Image1.Picture:=nil;
Bildladen;
end;

//die Funkion "bildladen"

procedure TForm1.Bildladen;
begin
rstream:=TResourceStream(HInstance, 'Bild1',RT_RCDATA);

//[Fehler] Unit1.pas(90): E2003 Undefinierter Bezeichner: 'Hinstance'

image1.Picture.Bitmap.LoadFromStream(rstream);
rstream.Free;
end;

end.


Vielen Dank für eure Hilfe :) :)
Gruß, der Flugschüler
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Fr 17.10.08 20:39 
Hallo und :welcome: im Delphi-Forum, user profile iconFlugschueler!

HInstance ist in der Unit SysInit definiert. Binde die mal unter uses ein.

Darüber hinaus benötigst du ein JpegImage (Unit Jpeg), um das Bild zu laden. Mit Assign weist du dieses dann dem Image zu.

ausblenden Delphi-Quelltext
 
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
{ ... }
procedure TForm1.Bildladen;
var
  Stream: TResourceStream; // Vereinbare lieber eine lokale Variable
  JpegImage: TJPEGImage;
begin
  Stream:=TResourceStream(HInstance, 'Bild1',RT_RCDATA);
  try
    JpegImage := TJpegImage.Create;
    try
      JpegImage.LoadFromResourceStream(Stream);
      Image1.Picture.Assign(JpegImage);
    finally
      JpegImage.Free;
    end;
  finally
    Stream.Free;
  end;
end;