VB的代码谁会写成DELPHI的DLL(源代码)
Public Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
Public Declare Function SetFileAttributes Lib "kernel32" Alias "SetFileAttributesA" (ByVal lpFileName As String, ByVal dwFileAttributes As Long) As Long
Public Const FILE_ATTRIBUTE_READONLY = &H1
Public Const FILE_ATTRIBUTE_HIDDEN = &H2
Public Const FILE_ATTRIBUTE_SYSTEM = &H4
Enum wAtt
ReadOnly = 1
Hidden = 2
Readonly_Hidden = 3
System = 4
Hidden_System = 6
R_H_S = 7
All = 39
End Enum
Public Function File_AttRead(ByVal PathName As String, ByVal OutAtt As wAtt) As Boolean
On Error Resume Next
If GetFileAttributes(PathName) = -1 Then
File_AttRead = False
Else
OutAtt = GetFileAttributes(PathName)
End If
End Function
Public Function File_AttWirte(ByVal PathName As String, ByVal inAtt As wAtt) As Boolean
On Error Resume Next
If GetFileAttributes(PathName) = -1 Then
File_AttWirte = False
Else
SetFileAttributes PathName, inAtt
End If
End Function
问题点数:20、回复次数:6Top
1 楼Eastunfail(龍子龍孫) (Serpent's Embrace)回复于 2004-05-01 23:40:04 得分 10
代码本身就有错误,File_AttRead的OutAttr的访问修饰符应该改为ByRef,即传址访问
而且File_AttWirte写错了,应该是File_AttWrite
Delphi中有现成的修改和访问文件属性的方法:
FileGetAttr和FileSetAttr
Top
2 楼ly_liuyang(Liu Yang LYSoft http://lysoft.7u7.net)回复于 2004-05-02 00:59:26 得分 10
Delphi的FileGetAttr和FileSetAttr,看Help去
Top
3 楼dongge2000(目前叫西西了)回复于 2004-05-02 11:34:50 得分 0
TO:一楼
ByVal是为了安全,Wirte是我的个人习惯,不好的习惯!
TO:二楼
Help我不会看啊,我是自学的,不会英文。可否贴源码啊。Top
4 楼Eastunfail(龍子龍孫) (Serpent's Embrace)回复于 2004-05-02 12:11:35 得分 0
ByVal是传值啊,那样的话你的程序不能正确的得到文件属性啊,因为
OutAtt = GetFileAttributes(PathName)
这里的OutAtt的作用域只在这个函数内,这个式子是没意义的。Top
5 楼tresss(破天惊)回复于 2004-05-02 17:10:43 得分 0
On Error Resume Next
这一句,在delphi中有解吗??(有相应实现的语句吗?)Top
6 楼Eastunfail(龍子龍孫) (Serpent's Embrace)回复于 2004-05-02 19:16:06 得分 0
On Error Resume Next实际上是个垃圾之举,VB好不容易把Basic从过程化语言提升到基于对象语言的层次,而错误处理却仍然采用史前文明文华遗产,没有引入结构化异常处理机制。
Delphi中用try...catch..end或者try...finally....end代替Top




