全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2088
推到 Plurk!
推到 Facebook!

WriteFile 一問

尚未結案
BGman
初階會員


發表:28
回覆:85
積分:42
註冊:2003-01-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-14 10:46:09 IP:211.22.xxx.xxx 未訂閱
小弟寫了繼承至TMemoryStream的一段程式,想要改寫Write function 設了一個旗標FDataStyle,如果旗標的值為True就進入 API WriteFile() 小弟按照MSDN的規格,將參數輸入,卻出現Compiler Error ... [Error]:Types of actual and formal var parameters must be identical
function TMPHMemoryStream.Write(const Buffer; Count: Longint): Longint;
var
Written: DWORD;
begin
  if (FDataStyle = False) and (Count >= 0) then
    begin
      inherited Write(Buffer,Count);
      Result := Count;
      Exit;
    end
  else
  begin
    WriteFile(FHandle, Buffer, Count, @Written, nil);
    Result := Written;
    Exit;
  end;
  Result := 0;
end;
所以小弟的問題有二點: 1.上述的程式碼錯在哪裡? 2.是否可以寫成WriteFile(FHandle, Buffer, Count, @Result, nil);
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-14 11:31:44 IP:61.218.xxx.xxx 未訂閱
// function WriteFile(hFile: THandle; const Buffer; nNumberOfBytesToWrite: DWORD; //  var lpNumberOfBytesWritten: DWORD; lpOverlapped: POverlapped): BOOL; stdcall;    WriteFile(FHandle, Buffer, Count, Written, nil);     發表人 - cmf 於 2003/02/14 11:37:13
------
︿︿
BGman
初階會員


發表:28
回覆:85
積分:42
註冊:2003-01-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-14 16:39:25 IP:211.22.xxx.xxx 未訂閱
原來是這個樣子,Delphi 的機制與 C++ 不太一樣 但為何我在查 Delphi 的Help 沒有標明 var lpNumberOfBytesWritten 竟然跳出 Microsoft Win32 programer's refernce    再者,在Delphi 的var 表示call by refernce 請問一下這個函式,如果lpNumberOfBytesWritten不是宣告var 的方式 是不是就要加上'@' WriteFile(FHandle, Buffer, Count, 
@Written
, nil); 我這樣問是因為,小弟對於Delphi 的指標應用不是很清楚 在 C 中,只要看到函式的參數是要填入指標型態的,就會填入指標; 如果只有實體Instance沒有指標時,就在實體之前加上'&',例如 {C :} DWORD nWritten; 非指標的實體變數 WriteFile(FHandle, Buffer, Count,
&nWritten
, nil); 煩請告知...
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-02-14 16:59:20 IP:61.218.xxx.xxx 未訂閱
宣告var 的方式 就不要加上 '@'    ex:   C    :   a(int& aa); DELPHI :   a(var aa:integer)    
------
︿︿
系統時間:2024-04-28 19:56:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!