WriteFile 一問 |
尚未結案
|
BGman
初階會員 發表:28 回覆:85 積分:42 註冊:2003-01-10 發送簡訊給我 |
小弟寫了繼承至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 發送簡訊給我 |
// 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 發送簡訊給我 |
原來是這個樣子,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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |