请大家告诉我该怎样使用Api函数openfile(20分)

  • 主题发起人 主题发起人 wendacao
  • 开始时间 开始时间
W

wendacao

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);<br>var<br> &nbsp;fname:string;<br><br>begin<br>fname:='C:/Documents and Settings/Administrator/My Documents/我的视频/erp.doc';<br>OpenFile(PChar(FName), fStruct, OF_READ);<br><br>end;<br><br>其中“fStruct”这个参数不能通过编译,具体怎样使用这个参数?
 
第二个参数是:结构体:<br>_OFSTRUCT = record<br> &nbsp; &nbsp;cBytes: Byte;<br> &nbsp; &nbsp;fFixedDisk: Byte;<br> &nbsp; &nbsp;nErrCode: Word;<br> &nbsp; &nbsp;Reserved1: Word;<br> &nbsp; &nbsp;Reserved2: Word;<br> &nbsp; &nbsp;szPathName: array[0..OFS_MAXPATHNAME-1] of CHAR;<br> &nbsp;end;<br>你需要申明一个结构体变量. <br>var<br> &nbsp;fname:string;<br> &nbsp;fstruct:_OFSTRUCT;<br>begin<br>fname:='C:/Documents and Settings/Administrator/My Documents/我的视频/erp.doc';<br>OpenFile(PChar(FName), fStruct, OF_READ);<br><br>end;
 
用 CreateFile
 
to duhai_lee:<br> &nbsp; 谢谢你的回复!我的目的是想打开一个任意类型的文件(但事先不知道这个文件的类型)。我不知道用这个函数能否达到目的,而且OpenFile会最终返回一个句柄,后序该怎样操作?我想看到是最终执行后的结果。
 
大家好,为什么大富翁的帐号确认功能不能用了,不做确认就没法提问,我是新注册的用户,为此我注册了两个了。能提问的大伙能不能反应一下啊。
 
procedure TestMap(FileName: string);<br>const<br> &nbsp;sMapName = 'beta''s test';<br>var<br> &nbsp;hFile, hMap: THandle;<br> &nbsp;FilePtr: Pointer;<br> &nbsp;lpROB: TOFStruct;<br>begin<br> &nbsp;hFile := OpenFile(PChar(FileName), lpROB, OF_READ);<br> &nbsp;hMap := CreateFileMapping(hFile, nil, PAGE_READONLY, 0, BuffSize, sMapName);<br> &nbsp;FilePtr := MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, BuffSize);<br> &nbsp;// 现在 FilePtr 就是指向文件缓冲区的首地址,直接对这个指针操作就可以了<br><br> &nbsp;// 记得释放<br> &nbsp;UnmapViewOfFile(FilePtr);<br> &nbsp;CloseHandle(hMap);<br> &nbsp;CloseHandle(hFile);<br>end;<br><br><br><br><br>. OpenFile函数使用说明 <br>函数原型:function OpenFile(const lpFileName: LPCSTR; var lpReOpenBuff: TOFStruct; &nbsp;<br>uStyle: UINT): HFILE; stdcall; <br>函数功能:以不同方式打开文件的操作(为兼容16位Windows程序保留的函数)。建议 <br>Windows下使用CreateFile函数。 <br>参数说明:lpFileName: 要打开文件的名称 <br>lpReOpenBuff: 变量指针,用于存储文件被首次打开时接收信息。 <br>UStyle: 打开文件的常量类型。 <br>常量名 <br>意义 <br><br>Of_Create <br>创建文件 <br><br>Of_Delete <br>删除指定文件 <br><br>Of_Exist <br>打开文件以验证其存在否?存在,返回一无效句柄;否则,返回负数 <br><br>Of_Parse <br>填充lpReOpenBuff内容,但不进行任何操作 <br><br>Of_Prompt <br>如存在不存在,则显示一有重试和取消按钮的消息框 <br><br>Of_Read <br>只读方式打开 <br><br>Of_ReadWrite <br>读写方式打开 <br><br>Of_ReOpen <br>打开lpReOpenBuff内指定的文件,而不依据lpFileName <br><br>Of_Search <br>强迫Windows查找文件---即使指定了文件路径 <br><br>Of_Share_Compat <br>文件可由多个程序多次打开 <br><br>Of_Share_Deny_None <br>共享打开 <br><br>Of_Share_Deny_Read <br>禁止其它程序读该文件 <br><br>Of_Share_Deny_Write <br>禁止其它程序写该文件 <br><br>Of_Share_Exclusive <br>独占方式打开文件,其它程序不得再打开该文件 <br><br>Of_Write <br>只写方式打开 <br><br>  <br>返回值:成功,返回值为文件句柄(但可能无效,如:Of_Exist);出错,返回HFile_Error。
 
var<br> &nbsp;iFileHandle:integer;<br> &nbsp;FileName:string;<br>begin<br> &nbsp; &nbsp; &nbsp;......<br> &nbsp; &nbsp; &nbsp;iFileHandle:=fileopen(FileName,fmOpenReadWrite); //打开一个文件<br> &nbsp; &nbsp; &nbsp;FileSeek(iFileHandle,0,2); &nbsp;//移动指针到文件末尾.要移动到其他位置可参见help;<br> &nbsp; &nbsp; &nbsp;FileWrite(iFileHandle,SameData,168); //把一个168个字节的数据SameData写入文件;<br> &nbsp; &nbsp; &nbsp;...... //读取文件数据的方法可见help;<br> &nbsp; &nbsp; &nbsp;FileClose(iFileHandle); //关闭文件<br>end;
 
多人接受答案了。
 
后退
顶部