無法更新Resource String |
尚未結案
|
cubi
初階會員 發表:56 回覆:94 積分:35 註冊:2002-04-15 發送簡訊給我 |
請教各位先進
假設在Project1.exe裡有一個ID為100的Resouce String,Value為"abc",
想將abc改為123,但程式執行後,卻沒反應,
以下是小弟的原始碼,
是參考 http://delphi.ktop.com.tw/topic.php?topic_id=37234
不知是那裡出了問題,小弟搜尋過許多相關資料,
但仍然無法解決,煩請先位先進不吝指教,謝謝,感激不盡
procedure TForm1.Button2Click(Sender: TObject); var h: THandle; b: LongBool; s: String; s2: PWideChar; iMemAlloc: Integer; begin s := Edit2.text; iMemAlloc := Length(s) * SizeOf(WideChar); s2 := AllocMem(iMemAlloc); StringToWideChar(s, S2, iMemAlloc); h := BeginUpdateResource('Project1.exe', false); b := UpdateResource(h, RT_STRING, MakeIntResource(100), LANG_NEUTRAL, s2, iMemAlloc); if b then showmessage('a'); EndUpdateResource(h, false); end; |
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
1. 應該沒問題, 幫你測了一下, 可正確執行.
Form1是否在project1中?, 如果是同一project的話, 只要一compiler就被override了, 當然不行. 2. Delphi有WideString,也會自動convert, 因此可以簡單些的寫成
var ws:WideString; ws:=Edit2.text; h := BeginUpdateResource('ResWork.exe', false); b := UpdateResource(h, RT_STRING, MakeIntResource(100), LANG_NEUTRAL, pWideChar(ws), length(ws)*2); if b then showmessage('a'); EndUpdateResource(h, false); |
cubi
初階會員 發表:56 回覆:94 積分:35 註冊:2002-04-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |