AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

JPG ohne Resource einfügen

Ein Thema von Danny92 · begonnen am 29. Sep 2016 · letzter Beitrag vom 6. Okt 2016
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Danny92
Danny92

Registriert seit: 18. Aug 2014
55 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

JPG ohne Resource einfügen

  Alt 29. Sep 2016, 01:57
Hey Leute,
ist es möglich, eine jpg-Datei ohne Resource einzufügen?
Ich will ein Bild als Image einfügen, aber sobald ich die Resource lösche oder verschiebe, hab ich ein Problem.
Ich will nur die ausführbare exe haben, ohne Datei drumherum...
Geht das?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#2

AW: JPG ohne Resource einfügen

  Alt 29. Sep 2016, 06:20
Moin...

Das ist der Zweck einer Ressource das man Bilder oder Text "eincomplieren" kann.

Wie stellst du das an an es nicht funktioniert? Oder ich habe dich nicht verstanden...
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: JPG ohne Resource einfügen

  Alt 29. Sep 2016, 06:25
Wann hast du beim Entfernen der Ressourcendatei (.res) ein Problem? Beim Kompilieren oder beim Ausführen der Anwendung?

Beim Kompilieren wäre normal, denn da wird ja die Exe erst erstellt.

Wenn beim Ausführen, hast du etwas beim Laden der Ressource falsch gemacht. Dazu lässt sich ohne Quelltext aber nichts sagen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
509 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: JPG ohne Resource einfügen

  Alt 29. Sep 2016, 06:27
Ich denke mal Danny92 meint mit Ressource die JPG-Datei und lädt diese direkt anstatt das Bild erstmal in eine Ressourcedatei (*.rc bzw. *.res) einzubinden. Das würde erklären das das Programm die Datei nicht mehr finden kann sobald sie verschoben oder gelöscht wird.
  Mit Zitat antworten Zitat
Benutzerbild von Danny92
Danny92

Registriert seit: 18. Aug 2014
55 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

AW: JPG ohne Resource einfügen

  Alt 29. Sep 2016, 08:09
Das Problem entsteht beim Ausführen der exe.

Das Kompilieren geht alles einwandfrei, und solange die Resource im angegebenen Pfad existiert, auch beim Ausführen. Lösche ich die Resource jedoch, lässt sich die exe ohne Fehlermeldung nicht mehr ausführen: "Die angeforderte Datei wurde nicht gefunden. Stellen Sie sicher, dass Pfad- und Dateiname richtig sind."
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#6

AW: JPG ohne Resource einfügen

  Alt 29. Sep 2016, 08:20
Moin...
Zitat:
Ressourcedatei (*.rc bzw. *.res)
...hast du das Bild in die Ressourcendatei aufgenommen? Wie holst du das Bild aus der Ressource? (Quelltext)

Frage: Was bezeichnest du als Ressource? Das Bild im Dateisystem?
  Mit Zitat antworten Zitat
Benutzerbild von trojaner
trojaner

Registriert seit: 11. Mai 2004
Ort: Herisau CH
13 Beiträge
 
Delphi 10 Seattle Architect
 
#7

AW: JPG ohne Resource einfügen

  Alt 29. Sep 2016, 08:24
Morgen

hohl dir den http://www.resource-builder.com/

Gruss
  Mit Zitat antworten Zitat
Benutzerbild von Danny92
Danny92

Registriert seit: 18. Aug 2014
55 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

AW: JPG ohne Resource einfügen

  Alt 29. Sep 2016, 08:27
Code:
procedure TForm1.SpieleMusikAb(FileName: string);
var
  rStream: TResourceStream;
  fStream: TMemoryStream;
  fname: string;
begin
  fname := ExtractFileDir(Paramstr(0))+'\sound\'+FileName+'.mp3';
  rStream := TResourceStream.Create(hInstance, FileName, RT_RCDATA) ;
  try
    fStream := TMemoryStream.Create;
    try
      fStream.CopyFrom(rStream, 0) ;
    finally fStream.Free; end;
  finally rStream.Free; end;
  MediaPlayer1.Close;
  MediaPlayer1.FileName:=fname;
  MediaPlayer1.Open;
  MediaPlayer1.Play;
end;
Code:
implementation

{$R *.dfm} {$R AboutDelphi.res}
Hier nehme ich beispielsweise statt eines Bildes eine mp3-Datei in einer Resource.

Kompilieren und ausführen funktioniert wie gesagt tadellos, solange die res-Datei davor nicht gelöscht wird.
Ich möchte die exe lediglich ohne res Datei ausführen können. Sonst ging das eigentlich auch immer
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: JPG ohne Resource einfügen

  Alt 29. Sep 2016, 08:40
Also fassen wir mal zusammen was du machst:
  • Du baust dir einen Dateinamen in fname zusammen
  • Du lädst eine Ressource in rStream, kopierst diese in den MemoryStream fStream und gibst beides wieder frei
  • Und nun versuchst du aus der Datei, deren Dateiname in fname steht, zu lesen
Aber du benutzt den Inhalt der Ressource ja nirgends. Du lädst ja nach wie vor einfach aus der .mp3 Datei.

Lösungen:
  • Du kopierst den Inhalt der Ressource in einen TFileStream und legst die Datei lokal ab. Dann solltest du das allerdings nicht im Anwendungsverzeichnis machen, da du dort normalerweise keine Schreibrechte hast.
  • Oder du benutzt eine richtige Mediaplayer-Bibliothek wie bass, die auch aus Streams abspielen kann. Dann brauchst du auch die lokale Datei nicht mehr.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: JPG ohne Resource einfügen

  Alt 29. Sep 2016, 09:22
Deinen Code kann man auch gleich so reduzieren:

Delphi-Quellcode:
procedure TForm1.SpieleMusikAb(FileName: string);
var
  fname: string;
begin
  fname := ExtractFileDir(Paramstr(0))+'\sound\'+FileName+'.mp3';
  // ggf if Fileexists(fname) then begin
  MediaPlayer1.Close;
  MediaPlayer1.FileName:=fname;
  MediaPlayer1.Open;
  MediaPlayer1.Play;
end;
Da ist nichts mit Resource !

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      

 

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 00:42 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