1. 2009. 8. 30. 12:19 프로그래밍 언어/Basic
Public Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Public Declare Function ReadFile Lib "kernel32.dll" (ByVal hFile As Long, ByRef lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, ByRef lpNumberOfBytesRead As Long, ByVal lpOverlapped As Long) As Long
Public Declare Function WriteFile Lib "kernel32.dll" (ByVal hFile As Long, ByRef lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, ByRef lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Long) As Long

Public Declare Function SetFilePointer Lib "kernel32.dll" (ByVal hFile As Long, ByVal lDistanceToMove As Long, ByRef lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
Public Declare Function SetFilePointerEx Lib "kernel32.dll" (ByVal hFile As Long, ByRef liDistanceToMove As Currency, ByRef lpNewFilePointer As Currency, ByVal dwMoveMethod As Long) As Long

Public Declare Function GetFileSize Lib "kernel32.dll" (ByVal hFile As Long, ByRef lpFileSizeHigh As Long) As Long
Public Declare Function GetFileSizeEx Lib "kernel32.dll" (ByVal hFile As Long, ByRef lpFileSize As Currency) As Long

Const FILE_ATTRIBUTE_NORMAL = 128&

Sub main()
Dim H As Long
Dim Co As Currency
Co = 10736865428#
Dim fSize As Currency
H = CreateFile("파일명", _
  GENERIC_READ Or GENERIC_WRITE, _
  FILE_SHARE_READ Or FILE_SHARE_WRITE, _
  0&, _
  OPEN_EXISTING, _
  FILE_ATTRIBUTE_NORMAL, _
  0&)
Call GetFileSizeEx(H, fSize)
fSize = fSize * 10000
MsgBox fSize & _
  Chr(13) & Chr(10) & _
  Co
CloseHandle H
End Sub

대용량 파일을 처리하기위해서 Currency 와 소숫점이 되버린 값을 수정 하여 표시합니다.
대용량 파일을 다루는 소프트웨어에서 필수적으로 필요한 부분입니다.


Posted by Nightly Luna
,
® © Tanny Tales
/ rss