AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bilder in exe integrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bilder in exe integrieren

Ein Thema von mathis.h · begonnen am 6. Dez 2007 · letzter Beitrag vom 7. Dez 2007
Antwort Antwort
Seite 1 von 2  1 2      
mathis.h

Registriert seit: 7. Jul 2007
Ort: Berlin
22 Beiträge
 
#1

Bilder in exe integrieren

  Alt 6. Dez 2007, 21:02
Hallo!

Habe schon ein bisschen gegoogelt, aber irgendwie nicht so ganz das gefunden, was ich brauche. Ich habe einen kleinen Mapeditor geschrieben. Die Map ist wie eine Tabelle aufgebaut. Jedes Tabellenelement wird durch einen SpeedButton repräsentiert. Am Rand des Programms kann man (auch mit Hilfe von 4 Speedbuttons) ein Element (Haus, Baum, Wiese oder Leer) auswählen. Hat man eins ausgewählt und klickt in der Map (der Tabelle) ein Element (einen Button) an, so bekommt der angeklickte Button dasselbe Element (Bild) zugewiesen (über die Eigenschaft buttonname.glyph), das man vorher ausgewählt hat. Geladen wird das Bild mit TBitmap.LoadFromFile() aus einer Bitmapdatei. Die Bilder der Auswahlbuttons sind festgelegt, werden also nicht dynamisch geladen.
Nun möchte ich das Programm aber nach Möglichkeit in eine einzige Datei bekommen (also nicht die einzelnen Bilddateien mitliefern). Meine Frage ist daher, wie ich die Bilddateien, die ich bis jetzt immer dynamisch lade, in die fertige .exe mit einpacke und wie ich sie im Programmcode aufrufen muss, damit das funktioniert. Sollte ich sie nicht in die .exe integrieren können wäre meine Frage, wie ich es hinbekomme, dass die Dateien auch nach dem ausgliedern des Programmes aus der Entwicklungsumgebung geladen werden können. Wenn ich das Programm aus Delphi heraus starte ("Play" drücke) dann findet er die Bilddateien nämlich. Starte ich es aber direkt, so findet er die Dateien nicht mehr, obwohl sie relativ zur Programmdatei immer noch an derselben Stelle liegen (nämlich im selben Ordner). Wohl aber werden die Bilder der festgesetzten Auswahlbuttons angezeigt.
Ich würde allerdings Methode 1 (in die .exe integrieren) bevorzugen!

Ich hoffe das war soweit verständlich !
Würd mich über Hilfe freuen!
Mathis
  Mit Zitat antworten Zitat
Benutzerbild von argonix
argonix

Registriert seit: 28. Feb 2007
257 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Bilder in exe integrieren

  Alt 6. Dez 2007, 21:05
Suche im Forum mal nach Hier im Forum suchenRessourcen erstellen. Wenn du eine Ressource erstellt hast, kannst du sie in die EXE einbinden und die Bilder dann daraus laden.
  Mit Zitat antworten Zitat
mathis.h

Registriert seit: 7. Jul 2007
Ort: Berlin
22 Beiträge
 
#3

Re: Bilder in exe integrieren

  Alt 6. Dez 2007, 22:08
OK, danke erst mal für den Tip mit den Resourcen. Hab mir das jetz mal angeschaut und ein bisschen gebastelt. Benutze Delphi 2005. Der erstellt, wenn man die .rc-Datei dem Projekt hinzufügt beim Compilieren automatisch die Resource und bindet sie ein. Das funktioniert auch soweit. Mit die XN Resource Editor kann kann ich sehen, dass die Bilder in der exe gelandet sind. Nur das Aufrufen funktioniert irgendwie noch nicht. Habe jetzt mal folgendes Testprogramm erstellt:

Zunächst die .rc-Datei:
Delphi-Quellcode:
BILD1 BMP "bild1.bmp"
BILD2 BMP "bild2.bmp"
Und so versuche ich das jetzt aufzurufen:
Delphi-Quellcode:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  bild:TBitMap;
begin
  bild := TBitMap.Create;
  bild.LoadFromResourceName(HInstance,'BILD1');
  SpeedButton1.Glyph := bild;
end;
Jetzt sagt er mir aber immer, dass er die resource nicht finden kann. Mit welchem Namen muss ich die denn aufrufen??
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#4

Re: Bilder in exe integrieren

  Alt 7. Dez 2007, 00:51
Für das erste Problem kA ... bin ich grad zu müde

Aber hier:
Zitat von mathis.h:
Delphi-Quellcode:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  bild:TBitMap;
begin
  bild := TBitMap.Create;
  bild.LoadFromResourceName(HInstance,'BILD1');
  SpeedButton1.Glyph := bild;
end;
Mach das lieber so:
Delphi-Quellcode:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  bild:TBitMap;
begin
  bild := TBitMap.Create;
  try
    bild.LoadFromResourceName(HInstance,'BILD1');
    SpeedButton1.Glyph.Assign (bild);
    // oder SpeedButton1.Glyph.Picture.Assign (bild); ... kA genau
  finally
    FreeAndNil (bild);
  end;
end;
Weil sonst riskierst du Memory Leaks in deiner Anwendung, weil du "bild" wieder freigeben solltest, wenn du es nicht mehr brauchst. Und wenn du in deiner Variante oben bild freigegeben hättest, wäre auch das Bild vom Button verschwunden.
  Mit Zitat antworten Zitat
Benutzerbild von Cyberbob
Cyberbob

Registriert seit: 24. Jan 2005
Ort: Karben
626 Beiträge
 
Delphi XE7 Architect
 
#5

Re: Bilder in exe integrieren

  Alt 7. Dez 2007, 01:11
hast du die .rs-datei auch compiliert und mit {$R ResName.res} in dein Programm eingebunden.
Christian
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Bilder in exe integrieren

  Alt 7. Dez 2007, 06:37
es liegt an der rc-Datei. Du hast darin festgelegt das die Bilder vom Typ BMP sind. Ein TBitmap sucht aber beim laden nicht nach dem Typ BMP.
Den richtigen Typ weiß ich jetzt nicht auswendig. Ich glaube es war BITMAP oder RT_BITMAP.
Du kannst ja beide Varianten mal probieren. Vielleicht findet sich auch noch jemand der es genau weiß oder im Forum ist es irgendwo zu finden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#7

Re: Bilder in exe integrieren

  Alt 7. Dez 2007, 07:39
In meiner Anfangszeit in Delphi hab ich so ein Problem einfach dadurch gelöst, dass ich in meinem Project ein weiteres Form erzeugt habe, dass nie sichtbar wurde und mir als Container für Bilder diente. Dort einfach TImages draufpacken und die Bilder da rein packen. Und dann einfach SpeedButton1.Glyph.Assign(Form2.Image1.Picture.Bitmap); Frisst zwar etwas Resourcen, aber darüber muss man sich ja heut keine Gedanken mehr machen
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Bilder in exe integrieren

  Alt 7. Dez 2007, 07:51
genau, die Variante frisst ressourcen und der Start des Programmes dauert länger weil die Bilder (dfm-dateien) beim erstellen der Form geladen wird.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#9

Re: Bilder in exe integrieren

  Alt 7. Dez 2007, 07:53
Stimmt, aber es war die schnellste Methode, zusätzliche Bilder in der Exe vorzuhalten
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Bilder in exe integrieren

  Alt 7. Dez 2007, 09:07
Zitat von SirThornberry:
es liegt an der rc-Datei. Du hast darin festgelegt das die Bilder vom Typ BMP sind. Ein TBitmap sucht aber beim laden nicht nach dem Typ BMP.
Den richtigen Typ weiß ich jetzt nicht auswendig. Ich glaube es war BITMAP oder RT_BITMAP.
Du kannst ja beide Varianten mal probieren. Vielleicht findet sich auch noch jemand der es genau weiß oder im Forum ist es irgendwo zu finden.
Hallo,

wenn anstatt BMP BITMAP in der rc-Datei steht, müsste es funktionieren.
TResourceStream - BITMAP - Verständnisfrage
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 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