操作系统为Windows XP。
我想用此函数打开一个已经存在的文件进行写操作,但是为何每次调用后,文件大小均为0呢?      fp := CreateFile(pchar(Fn),
                       GENERIC_WRITE or GENERIC_READ,
                       FILE_SHARE_Read or FILE_SHARE_Write,
                       nil,
                       OPEN_EXISTING,
                       FILE_ATTRIBUTE_NORMAL,
                       0);

解决方案 »

  1.   

    CreateFile 返回的是 DWORD,如果你的 fp 是 WORD 的话,返回的双字的高字
    就被截掉了,有可能返回了大于 65535 的值,但又不是 invalid_handle,而你只能得到
    65535.
      

  2.   

    sorry,忘了给出fp的定义
      fp:HFILE;
    在delphi 中HFILE是longword类型。
    不过还是多谢!
      

  3.   

    ShowMessage(IntToStr(GetLastError))....
      

  4.   

    没啥问题啊?
    大小是0?
    你是怎么取大小的?var
     fp:HFILE;
     Fn:pchar;
     fszie:integer;
    begin
    fn:='D:\New Folder\Pic\Blue Lace 16.bmp';
    fp := CreateFile(fn,GENERIC_WRITE or GENERIC_READ,FILE_SHARE_Read or FILE_SHARE_Write,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
    fszie:=getfilesize(fp,nil);
    showmessage(Floattostr(fszie/1024));
    end;打开一个1.24K的BMP
    最后显示的是1.2421875没错阿?