我将通过savedialog得到的文件名放入一Edit文本框中,如何判断所选取的这一目录下的这一文件是否已经存在,若存在,如何判断是否已被打开,是Excel文件
解决方案 »
- cxDBPivotGrid的控制问题。
- 在线等,delphi+bde+oracle连接的简单问题
- 高手们啊!救救我吧!拜托了!各位!
- 关于DELPHI6的报表问题 谢谢帮忙
- 【数据库建表,使用中文字段名,大家说说有什么问题吗?】
- 谁能帮我这把java函数转为delphi的
- 有什么办法可以在窗体显示出来后弹出警告提示?(说明窗体操作之用)
- 请问各位,能否实现这一个操作:通过客户端程序控制服务器端的某个进程。可以?如何实现?
- 请给出错误提示
- api函数的问题(huocx)
- 如何把OleContainer中的WORD文档保存到数据库?又如何从数据库中读出显示在OleContainer?
- 数据提供程序或其它服务返回 E_FAIL 状态!!!!急死我了,帮忙了!
用FileExists函数
==============
你可以用下面这个函数来检查一个文件是否被打开。
Function IsOpen(sFile As String) As Boolean
Dim fFile As Integer
fFile = FreeFile()
On Error GoTo ErrOpen
Open sFile For Binary Lock Read Write As fFile
Close fFile
Exit Function
ErrOpen:
If Err.Number <> 70 Then
Msg = "Error # " & Str(Err.Number) & " was generated by " _
& Err.Source & Chr(13) & Err.Description
MsgBox Msg, , "Error", Err.HelpFile, Err.HelpContext
Else
IsOpen = True
End If
End Function
如果Excel以正常方式打开一个文件,这个函数返回True,否则返回False。这个函数的缺点是如果Excel以副本或只读方式打开文件,也返回False,不过这对一般的程序没什么不利的影响。
var
HFileRes : HFILE;
begin
Result := false;
if not FileExists(fName) then
exit;
HFileRes := CreateFile(pchar(fName), GENERIC_READ or GENERIC_WRITE,0, nil, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0);
Result := (HFileRes = INVALID_HANDLE_VALUE);
if not Result then
CloseHandle(HFileRes);
end;