Autor Beitrag
Wommel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Sa 23.07.05 19:13 
Hallo

bin wie folgt vogegangen um eine CHM File in eien RES zu paken!
datei hilfe.rc erstellt in diese das geschrieben

ausblenden Quelltext
1:
HILFE RCDATA "C:\progs\help.chm"					



dann mittels
C:\Programme\Borland\Delphi5\Bin\brcc32.exe hilfe.rc die hilfe.RES
erzeugt


dann diese in meinem Progr mittels {$R hilfe.RES} eingebunden

Die res nehem ich so raus aus der Exe

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function ExtractRes(ResType, ResName, ResNewName: string): Boolean;
var
  Res: TResourceStream;
begin
  Result := False;
  Res := TResourceStream.Create(Hinstance, Resname, PChar(ResType));
  try
    Res.SavetoFile(ResNewName);
    Result := True;
  finally
    Res.Free;
  end;
end;



und der aufruf

ausblenden Delphi-Quelltext
1:
2:
  if not fileexists('C:\hilfe.chm') then
    ExtractRes('RT_RCDATA', 'HILFE', 'C:\hilfe.chm');


Ich erhalte aber ne Fehlermeldung namens " Die RES HELP konnte nciht gefunden werden"

was mache ich falsch!?

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.
Moderiert von user profile iconChristian S.: Topic aus Sonstiges verschoben am Sa 23.07.2005 um 20:20


Zuletzt bearbeitet von Wommel am Sa 23.07.05 19:23, insgesamt 1-mal bearbeitet
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 23.07.05 19:20 
Arbeit kaum mit Resourcen, aber heißt die Resource bei Dir nicht "HILFE" anstatt "HELP"? :gruebel:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Wommel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Sa 23.07.05 19:21 
sorry nur hier verschrieben!
SMO
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 120
Erhaltene Danke: 18


D2005 Personal
BeitragVerfasst: Sa 23.07.05 19:27 
RT_RCDATA ist eine Konstante und darf nicht als string übergeben werden. Probiere es mal so:
ausblenden Delphi-Quelltext
1:
2:
  if not fileexists('C:\hilfe.chm') then
    ExtractRes(RT_RCDATA, 'HELP', 'C:\hilfe.chm');
Wommel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Sa 23.07.05 19:30 
user profile iconSMO hat folgendes geschrieben:
RT_RCDATA ist eine Konstante und darf nicht als string übergeben werden. Probiere es mal so:
ausblenden Delphi-Quelltext
1:
2:
  if not fileexists('C:\hilfe.chm') then
    ExtractRes(RT_RCDATA, 'HELP', 'C:\hilfe.chm');




Dann erhalte ich eine zugrifsverletzung!
SMO
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 120
Erhaltene Danke: 18


D2005 Personal
BeitragVerfasst: Sa 23.07.05 19:37 
Sorry, habe die Fehler in der ExtractRes-Funktion übersehen.
So sollte es gehen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function ExtractRes(ResType: PChar; const ResName, ResNewName: string): Boolean;
var
  Res: TResourceStream;
begin
  Result := False;
  Res := TResourceStream.Create(HInstance, ResName, ResType);
  try
    Res.SaveToFile(ResNewName);
    Result := True;
  finally
    Res.Free;
  end;
end;


Die ganzen Resourcentyp-Konstanten sind als PChar definiert (z.B. RT_RCDATA = PChar(10)) aber haben herzlich wenig mit strings zu tun. Deswegen nicht in string umwandeln und zurück, sondern immer PChar lassen.
Wommel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Sa 23.07.05 19:59 
hey Danke!!! :) :)

Super es geht ;)