線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1001
推到 Plurk!
推到 Facebook!

DLL檔內作存取文字檔的功能會使程式掛掉

尚未結案
hotswin
中階會員


發表:72
回覆:92
積分:52
註冊:2003-11-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-16 11:24:37 IP:220.134.xxx.xxx 未訂閱
我使用Hook的DLL檔,設計時代碼如 下 function Send(S: TSocket; var Buf; len, flags: Integer): Integer; stdcall; var OutFile: TextFile; begin AssignFile(OutFile,'1.txt'); Append(OutFile) ; writeln(OutFile,'xxxxxxxxxxxxxxxxxxxxx測式存檔的資料'); CloseFile(OutFile); ================================================================ 編譯正常,但每我Hook住並截到資料時,我的程式就掛了 若是把這斷拿掉,就正常,只是無法把資料存到文字檔內。 但是,這段若放到 Form 下去使用,程式也是正常。 難到DLL內無法使用 檔案的存取嗎? ...@@"
------
xinjier禮品贈品
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-16 11:31:15 IP:61.222.xxx.xxx 未訂閱
不會啊! writeln(OutFile,'xxxxxxxxxxxxxxxxxxxxx測式存檔的資料'); 加入 flush(OutFile); 試試! CloseFile(OutFile);
hotswin
中階會員


發表:72
回覆:92
積分:52
註冊:2003-11-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-16 18:35:49 IP:220.134.xxx.xxx 未訂閱
引言: 不會啊! writeln(OutFile,'xxxxxxxxxxxxxxxxxxxxx測式存檔的資料'); 加入 flush(OutFile); 試試! CloseFile(OutFile);
一樣呢,被我hook的外部程式就掛了 搞不董
------
xinjier禮品贈品
hotswin
中階會員


發表:72
回覆:92
積分:52
註冊:2003-11-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-16 19:23:54 IP:220.134.xxx.xxx 未訂閱
引言:
引言: 不會啊! writeln(OutFile,'xxxxxxxxxxxxxxxxxxxxx測式存檔的資料'); 加入 flush(OutFile); 試試! CloseFile(OutFile);
一樣呢,被我hook的外部程式就掛了 搞不董
將原來的 1.txt => c:\1.txt AssignFile(OutFile,'c:\1.txt'); 若指定 C:\ 就正常呢 另外,若 改成ExtractFileDir(application.Exename) '\1.txt' 編譯時說 application無法判識.... 什麼原因呢?
------
xinjier禮品贈品
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-16 22:53:06 IP:61.31.xxx.xxx 未訂閱
ExtractfilePath(Paramstr(0)) '1.txt'; 應該是這樣才對。 指的是執行所在的位置。
hotswin
中階會員


發表:72
回覆:92
積分:52
註冊:2003-11-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-16 23:09:53 IP:220.134.xxx.xxx 未訂閱
引言: ExtractfilePath(Paramstr(0)) '1.txt'; 應該是這樣才對。 指的是執行所在的位置。
說也奇怪,照大大的用法 竟然 把資料 寫到 c:\ 去了。 不如我自己指定 c:\1.txt
------
xinjier禮品贈品
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-16 23:19:33 IP:61.31.xxx.xxx 未訂閱
啊!說錯了application.Exename 與Paramstr(0) 是相同的。 只不過因為您使用為DLL 檔 因此無法調出值來 既使調出來的所在位置,也應該為 EXE 所在位置 建議將路徑寫入至Registry 發表人 - wameng 於 2004/10/16 23:25:04
系統時間:2024-07-02 2:54:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!