📄 winapicall_demo.dpr
字号:
{$APPTYPE CONSOLE}
uses
SysUtils;
function GetFileSize(Handle: Integer; x: Integer): Integer; stdcall;
external 'kernel32.dll' name 'GetFileSize';
function stdcallDemo : Integer;
var
FH : THandle;
begin
FH := FileOpen('C:\boot.ini', fmOpenRead);
//以下汇编代码相当于Delphi语句
// Result := GetFileSize(FH, nil);
asm
push 0 // 第二个参数 nil 入栈
push FH // 第一个参数 FH 入栈
call GetFileSize // 依据stdcall约定, 例程GetFileSize()将清理栈, 所以BASM中
// 不考虑nil和FH参数的出栈
mov @Result, eax // 按约定, 返回值在eax中. 将eax值送入stdcallDemo()的返回值.
// @Result由BASM定义
end;
FileClose(FH);
end;
begin
writeln(stdcallDemo); // 输出文件'c:\boot.ini'的长度
readln;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -