Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi ressource datei liest keine Integer werte aus! (https://www.delphipraxis.net/47461-ressource-datei-liest-keine-integer-werte-aus.html)

Janek5024 11. Jun 2005 15:24


ressource datei liest keine Integer werte aus!
 
Hallo erst mal!
Ich hab vom Studium her folgende Aufgabe bekommen:
Ich soll ein Programm schreiben mit welchem ich Bilder vor und zurück anschauen kann! Kein einlesen über das Programm sondern sollen alle im Programm verankert sein! (nich lachen... ich studiere Maschinenbau)
Meine Lösung wäre gewesen über ein simplen zählmechanismus Bild für Bild durch zu schalten. es sellte sich aber heraus dass ich keine integer werte bekomme um sie zu addieren.
Da habe ich glücklicherweise gelesen dass es über ne resource gehen könnte. So hab ich's gemacht.

Zitat:

Also. Pack die Bitmaps in eine Ressource. Wie das geht steht hier: http://www.delphipraxis.net/viewtopi...t=326&highligh ... e+resource
Anstatt jetzt Namen zu vergeben wie im Beispiel 'calogo', nimmst du eine Zahl: 1, 2, 3, ....
Lden tust du sie dann mit:
Quellcode: markieren

Image1.Picture.Bitmap.LoadFromResourceName(HInstan ce, MAKEINTRESOURCE(1));

Und mit Random kannst du nun eine zufällige Zahl erzeugen und entsprechend einsetzen. Fertig.


nun kann ich aber doch nicht integerwerte benutzen... denn mein PC hängt sich jedesmal auf....

mein Programm:


DER BUTTON
----------

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var x:integer;
begin
x:=x+1;
Image1.Picture.Bitmap.LoadFromResourceName(HInstance, MAKEINTRESOURCE(x));
end;

end.
DIE RESource
-------------

SourceCode RCDATA "uSampleForm.pas"
1 BITMAP "1.bmp"
2 BITMAP "2.bmp"
3 BITMAP "baby256.bmp"
4 BITMAP "p4.bmp"
5 BITMAP "lego.bmp"
6 BITMAP "Junky.bmp"
7 BITMAP "MR.bmp"


Kann mir bitte einer sagen was ich falsch gemacht habe

[edit=alcaeus]Delphi-Tags eingefuegt. In Zukunft bitte selbst machen. Danke :) Mfg, alcaeus[/edit]

Die Muhkuh 11. Jun 2005 15:38

Re: ressource datei liest keine Integer werte aus!
 
Hi,

Delphi-Quellcode:
var
  x: Integer;
begin
  x := x + 1; // Hier ist X nicht 1 oder 2, sondern undefiniert.
 ...
end;
So sollte es klappen:

Delphi-Quellcode:
var
  x: Integer;
begin
  x := 1;
  ...
end;

Janek5024 11. Jun 2005 15:40

Re: ressource datei liest keine Integer werte aus!
 
Auch wenn ich einfach nur
x:=1 setze klappt es leider nicht

jfheins 11. Jun 2005 15:41

Re: ressource datei liest keine Integer werte aus!
 
Dumme frage: Bist du dir sicher, dass du die ressource eingebunden hast ?

Die Muhkuh 11. Jun 2005 15:43

Re: ressource datei liest keine Integer werte aus!
 
Vllt. hier noch was:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var x:integer;
begin
x:=x+1;
Image1.Picture.Bitmap.LoadFromResourceName(HInstance, IntToStr(x));
end;
oder vllt. auch:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var x:integer;
begin
x:=x+1;
Image1.Picture.Bitmap.LoadFromResourceID(HInstance, x);
end;

Janek5024 11. Jun 2005 15:45

Re: ressource datei liest keine Integer werte aus!
 
100% denn wenn ich die namen der Dateien 'eins'
also als string bezeichne und mit

Image1.Picture.Bitmap.LoadFromResourceName(HInstan ce, 'eins');

bspielsweise auslese, klappt es wunderbar, aber ich möchte ja mit 2 einfachen buttons vor und zurück

Die Muhkuh 11. Jun 2005 16:01

Re: ressource datei liest keine Integer werte aus!
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

ich glaube das Problem liegt hier:

Zitat:

Zitat von sakura
Name der Resource (gleiche Bestimmung wir für Pascal Bezeichner)

Pascal Bezeichner dürfen auch nicht mit Zahlen anfangen.

[edit]
Quick and dirty Lösung:

Delphi-Quellcode:
unit umain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    ScrollBox1: TScrollBox;
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    FBildIndex: Integer;
  public
    { Public-Deklarationen }
  end;

const
  Bilder: array [1..5] of String = ('a', 'b', 'c', 'd', 'e');

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  FBildIndex := 0; // FBildIndex initialisieren
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Inc(FBildIndex); // FBildIndex um 1 erhöhen

  if (FBildIndex > 5) or (FBildIndex < 1) then // FBildIndex im gültigen Bereich?
    FBildIndex := 1;

  Image1.Picture.Bitmap.LoadFromResourceName(HInstance, Bilder[FBildIndex]);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Dec(FBildIndex); // FBildIndex um 1 erhöhen

  if (FBildIndex > 5) or (FBildIndex < 1) then // FBildIndex im gültigen Bereich?
    FBildIndex := 5;

  Image1.Picture.Bitmap.LoadFromResourceName(HInstance, Bilder[FBildIndex]);
end;

end.
Resourcendatei:

Code:
SourceCode RCDATA "umain.pas"
a BITMAP "Adjust Colour.bmp"
b BITMAP "accounts.bmp"
c BITMAP "Acrobat.bmp"
d BITMAP "Address Book.bmp"
e BITMAP "Adjust Brightness.bmp"
[/edit]

[edit2] Kleines Beispiel angehängt [/edit2]

Muetze1 11. Jun 2005 16:13

Re: ressource datei liest keine Integer werte aus!
 
Moin!

@Spider: Du gibst hier Lösungen und Code ohne dich auch nur mal mit den Resourcen auseinander gesetzt zu haben. Die scheint der Sinn von MakeIntResource() etc überhaupt nix zu sagen.

@Threadersteller:

Wenn du die Bilder mit "one" laden kannst, dann liegt das Problem in der deiner RES Datei, wo dann immernoch als Bezeichner keine Zahl sondern "one" drinne steht. Du musst deine Bezeichner wie z.B. "one" durch eine einfache "1" ersetzen und dann kannst du es auch mit MakeIntResource laden. Auch musst du, wenn du das Resourcen-Compile-Skript (.rc) geändert hast, die Resource neu erstellen mit dem Resourcencompiler und dann die neue Resource einkompilieren. Danach sollte dann das Laden der Bilder über den Namen "one" nicht mehr funktionieren, wohl aber mit MakeIntResource(1).

MfG
Muetze1

Die Muhkuh 11. Jun 2005 16:19

Re: ressource datei liest keine Integer werte aus!
 
Zitat:

Zitat von Muetze1
Moin!

@Spider: Du gibst hier Lösungen und Code ohne dich auch nur mal mit den Resourcen auseinander gesetzt zu haben. Die scheint der Sinn von MakeIntResource() etc überhaupt nix zu sagen.

Hi,

so ganz unrecht hast du nicht, aber ich habe es selbst mit MakeIntResource versucht und bekomme immer eine Zugriffverletzung.
Wie oben geschrieben, ist das eine Quick and Dirty Lösung, die aber vollkommen funktioniert.

Muetze1 11. Jun 2005 16:21

Re: ressource datei liest keine Integer werte aus!
 
Moin!

Mir ging es nicht nur darum, sondern u.a. auch um den Vorschlag direkt ein Integer anzugeben anstatt des PChar's - was schon böse ist.

Deine Lösung habe ich mir nicht weiter angeschaut - zumindest sollte sich der Threadersteller seine Lösung raussuchen...

MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:06 Uhr.
Seite 1 von 2  1 2      

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