Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi UpdateResource macht nicht was ich möchte (https://www.delphipraxis.net/131710-updateresource-macht-nicht-ich-moechte.html)

Flodding 29. Mär 2009 15:07


UpdateResource macht nicht was ich möchte
 
hiho nochmal :D

also jetzt bin ich dabei den ProductName einer anderen exe zu ändern... hab auch schon ganz brav gegoogelt und auch hier bin ich schon einigermaßen fündig geworden... erfolg blieb leider aus und deshalb meine frage:

Delphi-Quellcode:
procedure TfrmChangeAppName.Button1Click(Sender: TObject);
var
    h     : Thandle;
    s     : string;
begin

  s:= edit1.Text;
  h := BeginUpdateResource(pchar(AppPath),false);
  UpdateResource(h,'RT_STRING',MakeIntResource(1),'ProductName',@s[1],SizeOf(s));
  EndUpdateResource(h,false);
end;
hier bekomme ich die meldung: [Pascal Fehler] changeappname.pas(39): E2010 Inkompatible Typen: 'Word' und 'string'

wie bekomm ich das in den griff?

himitsu 29. Mär 2009 15:21

Re: UpdateResource macht nicht was ich möchte
 
also bei mir soll ich da, wo du 'ProductName' angegeben hast, die Sprache angeben (also in diesem Fall vermutlich eine 0)

Flodding 29. Mär 2009 15:42

Re: UpdateResource macht nicht was ich möchte
 
habs jetzt schonmal hinbekommen, dass es startet :)

Delphi-Quellcode:
procedure TfrmChangeAppName.Button1Click(Sender: TObject);
var
    h     : Thandle;
    s     : string;
begin

  s:= edit1.Text;
  h := BeginUpdateResource(pchar(AppPath),false);
  UpdateResource(h,RT_VERSION,MakeIntResource(1),0,@s[9],SizeOf(s));
  EndUpdateResource(h,false);
end;
bei klick auf den button passiert einfach nichts... keine fehlermeldung und auch die datei ist nicht geändert...

an der stelle wo die 9 steht, hatte ich auch schon ['ProductName'] stehn, aber dann kommt: [Pascal Fehler] changeappname.pas(39): E2010 Inkompatible Typen: 'Integer' und 'string'

die 9 hatte ich nur zufällig... hätte auch ne 5 sein können :D

himitsu 29. Mär 2009 15:46

Re: UpdateResource macht nicht was ich möchte
 
Du arbeitest hier mit der WinAPI, da gibt es keine Exceptions als Fehlermeldungen ... sihe GetLastError und dann schau dir mal an, was die Funnktionen für ein Ergebnis liefern.

Ergebnise ... also was in h, i und j drin steht.
Delphi-Quellcode:
i := UpdateResource(...
j := EndUpdateResource(...
und wie kommst du auf die 9? :gruebel: (@s[9])

schau dir auch mal an, was man übergeben muß und vorallem was wie als Funktionsergebnisse zu erwarten ist.
siehe MSDN-Library durchsuchenBeginUpdateResource, MSDN-Library durchsuchenUpdateResource und MSDN-Library durchsuchenEndUpdateResource

Flodding 29. Mär 2009 16:19

Re: UpdateResource macht nicht was ich möchte
 
also ich bin schonmal n stück weiter wieder :P

und zwar wird jetzt schon etwas in die datei geschrieben... das schonmal gut ... nur an der falschen stelle :(

Delphi-Quellcode:
procedure TfrmChangeAppName.Button1Click(Sender: TObject);
var
    h     : Thandle;
    s     : string;
begin

  s:= edit1.Text;
  h := BeginUpdateResource(pchar(AppPath),false);
if h = 0 then ShowMessage('Error: ' + IntToStr(GetLastError) )
else begin
  UpdateResource(h,RT_VERSION,'ProductName',0,@s,SizeOf(s));
  EndUpdateResource(h,false);
end;
end;
wenn man im resourcehacker links auf version klickt, dann muss man ja noch ne 1 anklicken um die infos zu sehen...
wenn ich den obenstehenden code ausführe habe ich über der 1 noch ein item das ich anklicken kann... jetzt muss ich ja nurnoch wissen was ich an:

Delphi-Quellcode:
  UpdateResource(h,RT_VERSION,'ProductName',0,@s,SizeOf(s));
ändern muss...


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:09 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