Nhattanktnn
Thành viên gắn bó
Chào các bác, các anh chị!
Em vừa viết code liên quan đến lấy hình ảnh trên một máy khác trong mạng Lan (mạng nội bộ công ty), phần lấy hình ảnh thì em không đề cập vào đây, chỉ có vấn đề ở chỗ xác định file đó tồn tại hay không thì có vấn đề thế này:
- Nếu là máy cần lấy ảnh (trong mạng nội bộ) đang mở thì mọi việc diễn ra suôn sẻ
- Nếu máy đó đã tắt, tức không kết nối được thì code xác định file tồn tại hay không lại xử lý quá lâu
Chạy lần đầu tới 43 giây, lần sau không hiểu nó có nhớ gì hay không nhưng chạy nhanh hơn
Trong code xác định sự tồn tại của file thì em tìm hiểu có 3 kiểu: dùng Dir, FSO hoặc API. Vì dùng Dir không áp dụng cho đường dẫn tiếng Việt nên em không nghiên cứu gì thêm nó
Nói thêm là đường dẫn phải là một máy có thật trên mạng LAN thì nó mới lâu, còn lấy đường dẫn giả thì nó cũng vài giây thôi
Câu hỏi của em là: Có cách nào xử lý vấn đề này cho nó nhanh hơn không? Tầm 1,2 giây gì đó thì trong khoảng chấp nhận được chứ 43 giây thì quá lớn
Em vừa viết code liên quan đến lấy hình ảnh trên một máy khác trong mạng Lan (mạng nội bộ công ty), phần lấy hình ảnh thì em không đề cập vào đây, chỉ có vấn đề ở chỗ xác định file đó tồn tại hay không thì có vấn đề thế này:
- Nếu là máy cần lấy ảnh (trong mạng nội bộ) đang mở thì mọi việc diễn ra suôn sẻ
- Nếu máy đó đã tắt, tức không kết nối được thì code xác định file tồn tại hay không lại xử lý quá lâu
Chạy lần đầu tới 43 giây, lần sau không hiểu nó có nhớ gì hay không nhưng chạy nhanh hơn
Trong code xác định sự tồn tại của file thì em tìm hiểu có 3 kiểu: dùng Dir, FSO hoặc API. Vì dùng Dir không áp dụng cho đường dẫn tiếng Việt nên em không nghiên cứu gì thêm nó
Nói thêm là đường dẫn phải là một máy có thật trên mạng LAN thì nó mới lâu, còn lấy đường dẫn giả thì nó cũng vài giây thôi
Câu hỏi của em là: Có cách nào xử lý vấn đề này cho nó nhanh hơn không? Tầm 1,2 giây gì đó thì trong khoảng chấp nhận được chứ 43 giây thì quá lớn
Mã:
Private Declare Function GetFileAttributesW Lib "kernel32.dll" (ByVal lpFileName As Long) As Long
Public Function FileExistsAPI(ByRef sFileName As String) As Boolean
Select Case (GetFileAttributesW(StrPtr(sFileName)) And vbDirectory) = 0&
Case True
FileExists = True
Case Else
FileExists = False
End Select
End Function
Function FileExistsFSO(ByVal filename As String) As Boolean
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
FileExistsFSO = fso.FileExists(filename)
Set fso = Nothing
End Function
Sub a()
Dim xpath As String, t As Double
t = Timer
xpath = "\\plan10\01234.jpg"
MsgBox "FileExistsAPI : " & FileExistsAPI(xpath) _
& vbCrLf & "Time : " & Timer - t
t = Timer
'MsgBox "FileExistsFSO : " & FileExistsFSO(xpath) _
& vbCrLf & "Time : " & Timer - t
End Sub
Lần chỉnh sửa cuối: