Thema: Delphi DLL als *.res Datei

Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: DLL als *.res Datei

  Alt 10. Mai 2007, 07:54
Guten Morgen,

spontan fällt mir auf, dass deine Funktionen mitunter keinen definierten Rückgabewert liefern. Vielleicht besser so:

Delphi-Quellcode:
function GetResourceData(resName, resType: PAnsiChar): Pointer; stdcall;
var
  hRes, hMem: Cardinal;
begin
  Result := nil;
  hRes := FindResource(0, resName, resType);
  if hRes <> 0 then
  begin
    hMem := LoadResource(0, hRes);
    if hMem <> 0 then
      Result := LockResource(hMem);
  end;
end;

function GetResourceSize(resName, resType: PAnsiChar): Cardinal; stdcall;
var
  hModule: Cardinal;
begin
  hModule := 0;
  Result := FindResource(hModule, resName, resType);
  if Result <> 0 then
    Result := SizeOfResource(hModule, Result);
end;
Wenn keine schwerwiegenden Gründe dagegen sprechen, dann würde ich die Funktionen ersetzen durch:

Delphi-Quellcode:
procedure SaveToFile(const fileName, resName: string; resType: PChar);
begin
  with TResourceStream.Create(0, resName, PChar(resType)) do
  try
    SaveToFile(fileName);
  finally
    Free;
  end;
end;
Wenn du statt des Fehlercodes einen Klartext ausgeben möchtest, dann kannst du das so machen:

ShowMessage(SysErrorMessage(GetLastError)); Grüße vom marabu
  Mit Zitat antworten Zitat