AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi UpdateResource macht nicht was ich möchte
Thema durchsuchen
Ansicht
Themen-Optionen

UpdateResource macht nicht was ich möchte

Ein Thema von Flodding · begonnen am 29. Mär 2009 · letzter Beitrag vom 29. Mär 2009
Antwort Antwort
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#1

UpdateResource macht nicht was ich möchte

  Alt 29. Mär 2009, 15:07
hiho nochmal

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?
Flo
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#2

Re: UpdateResource macht nicht was ich möchte

  Alt 29. Mär 2009, 15:21
also bei mir soll ich da, wo du 'ProductName' angegeben hast, die Sprache angeben (also in diesem Fall vermutlich eine 0)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: UpdateResource macht nicht was ich möchte

  Alt 29. Mär 2009, 15:42
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
Flo
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#4

Re: UpdateResource macht nicht was ich möchte

  Alt 29. Mär 2009, 15:46
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? (@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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: UpdateResource macht nicht was ich möchte

  Alt 29. Mär 2009, 16:19
also ich bin schonmal n stück weiter wieder

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:

  UpdateResource(h,RT_VERSION,'ProductName',0,@s,SizeOf(s)); ändern muss...
Flo
  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 18:00 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