AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Ressource Files dynamisch einlesen
Thema durchsuchen
Ansicht
Themen-Optionen

Ressource Files dynamisch einlesen

Ein Thema von ATS3788 · begonnen am 5. Feb 2015 · letzter Beitrag vom 5. Feb 2015
Antwort Antwort
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#1

Ressource Files dynamisch einlesen

  Alt 5. Feb 2015, 10:23
Hallo Freunde des Pascal

Ich habe verschiedene Ressource ".RES" Files und
möchte diese dynamisch auslesen.
Gibt es eine einfache Möglichkeit
an das HInstance Handle zu kommen
oder muss ich dies über den Umweg
eines Streams machen.

http://www.delphibasics.info/home/de...ileswithdelphi
Martin MIchael
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Ressource Files dynamisch einlesen

  Alt 5. Feb 2015, 10:32
Ka was du jetzt meinst.
Aber ist das nicht Application.Handle ?
Das gleiche wie
hInstance := GetWindowLong(handle, GWL_HINSTANCE);
in Win32 API..

gruss

Geändert von EWeiss ( 5. Feb 2015 um 10:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Ressource Files dynamisch einlesen

  Alt 5. Feb 2015, 10:40
Man könnte ja einfach mal wie im verlinkten Source gezeigt "hInstance" eingeben und schauen, ob es funktioniert
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#4

AW: Ressource Files dynamisch einlesen

  Alt 5. Feb 2015, 12:28
Danke

Bin bei JVCL fündig geworden


Delphi-Quellcode:
unit Res2BmpUtils;

interface

procedure Run;

implementation
uses
  Windows, SysUtils, Classes, Graphics,
  unitResFile, unitResourceGraphics, // get these from http://www.wilsonc.demon.co.uk/d7resourceutils.htm
  JTools;

procedure ShowHelp;
begin
  writeln('');
  writeln('');
  writeln('Res2Bmp: extracts bitmaps from resource files');
  writeln('');
  writeln('Usage:');
  writeln(ExtractFilename(ParamStr(0)), ' <filemask>');
  writeln('<filemask>'#9'the files to extract bitmaps from. Defaults to <curdir>\*.dcr');
  writeln('');
  writeln('The extracted bitmap files are written to the same folder as the resource file(s)');
end;

procedure ExtractBmpResources(const FileMask: string);
var
  fd: TWin32FindData;
  H: THandle;
  R: TResModule;
  i: integer;
  P: TPicture;
  Folder: string;
begin
  H := FindFirstFile(PChar(FileMask), fd);

  if H <> INVALID_HANDLE_VALUE then
  begin
    Folder := ExtractFilePath(FileMask);
    R := TResModule.Create;
    P := TPicture.Create;
    try
      repeat
        writeln('Reading resources from ', string(fd.cFileName), '...');
        R.LoadFromFile(Folder + string(fd.cFileName));
        for i := 0 to R.ResourceCount - 1 do
          if R.ResourceDetails[i] is TBitmapResourceDetails then
          begin
            TBitmapResourceDetails(R.ResourceDetails[i]).GetImage(P);
            if Assigned(P.Graphic) and not P.Graphic.Empty then
            begin
              writeln('Writing ', UpperCase(R.ResourceDetails[i].ResourceName), '.BMP...');
              P.SaveToFile(Folder + UpperCase(R.ResourceDetails[i].ResourceName) + '.BMP');
            end
            else
              writeln('No bitmaps found in ', string(fd.cFileName));
          end;
      until not FindNextFile(H, fd);
      writeln('Done!');
    finally
      R.Free;
      P.Free;
    end;
    if H <> INVALID_HANDLE_VALUE then
      Windows.FindClose(H);
  end;
end;


procedure Run;
var
  FileMask: string;
begin
  try
    if GetCmdSwitchValue('h', ['-', '/'], FileMask, true) or
      GetCmdSwitchValue('?', ['-', '/'], FileMask, true) then
    begin
      ShowHelp;
      Exit;
    end;
    if ParamCount = 0 then
      FileMask := ExtractFilePath(ParamStr(0)) + '*.dcr'
    else
      FileMask := ParamStr(1);
    ExtractBmpResources(FileMask);
  except
    on E: Exception do
      writeln('ERROR: ', E.Message);
  end;
end;
end.
Martin MIchael
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:54 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