''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Функция за четене на стойност от INI файл
Public Function Fun_ReadINIValue(strSection As String, _
strKey As String, _
strINIFileName, _
Optional strDefaultCaption As String = "") As String
Dim strRet As String
Dim lngSize As Long
Dim lngResult As Long
' Ако смятате че реда който ще прочитате е по-дълъг от 1024 символа, сменете цифрата в следващия ред
Const lngLongestValue As Long=1024
strRet = String(lngLongestValue, 0)
lngResult = GetPrivateProfileString(strSection, strKey, strDefaultCaption, strRet, lngLongestValue, strINIFileName)
strRet = Left$(strRet, lngResult)
Fun_GetCaption = Fun_ReadINIValue
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Процедура за запис на стойност в INI файл
Public Sub Sub_WriteINIValue(strSection As String, _
strKey As String, _
strValue As String, _
strINIFile As String)
WritePrivateProfileString strSection, strKey, strValue & Chr$(0), strINIFile
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Функция за четене на съдържанието на текстов файл
' Удобна е за не много големи файлове (например до 4000-5000 реда или 100-200 килобайта)
Public Function Fun_GetTextFileContents(strFileName As String) As String
Dim strLine As String
Dim strFileContents As String
Dim intFreeFile As Integer
Dim lngLOF As Long
intFreeFile = FreeFile()
Open strFileName For Input As #intFreeFile
lngLOF = LOF(intFreeFile)
If lngLOF > 0 Then
Do While Not EOF(intFreeFile)
Line Input #intFreeFile, strLine
strFileContents = strFileContents & strLine & vbCrLf
Loop
End If
Close #intFreeFile
Fun_GetTextFileContents = strFileContents
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Функция за четене от двоичен файл
' Ако за intFileNumber се изпрати 0, файла указан в strFileToOpen ще се
' отвори, ще се прочете и ще се затвори
' Ако за intFileNumber се изпрати >0, това значи че файл с такъв номер вече е
' отворен от друго място в програмата. Той трябва да е отворен "For Binary"
' Функцията връща броя на прочетените байтове а в параметъра byteData() е
' прочетеното съдържание
' Ако няма достатъчно данни (например ако са заявени да се прочетат
' например 1000 байта от отместване 500 а файла е с размер само 1300
' байта), функцията връща 0
Public Function Fun_ReadFileData(intFileNumber As Integer, _
lngStart As Long, _
lngLength As Long, _
byteData() As Byte, _
Optional strFileToOpen As String) As Long
Dim lngFileLen As Long
Dim strTemp As String
Dim intI As Integer
Dim boolInternalFileOpen As Boolean
If intFileNumber = 0 Then
intFileNumber = FreeFile()
Open strFileToOpen For Binary Access As #intFileNumber
boolInternalFileOpen = True
End If
lngFileLen = LOF(intFileNumber)
' Да се прочете от файла само ако съществуват lngLength байта данни от отместване lngStart
If (lngFileLen >= lngStart And lngFileLen >= (lngStart + lngLength - 1) And lngStart > 0 And lngLength > 0) Then
ReDim byteData(lngLength - 1) As Byte
Get #intFileNumber, lngStart, byteData
If boolDecryptData = True Then
Call Sub_DecryptByteArray(byteData, pbytePass, boolUseDateTimeDecryption)
End If
Fun_ReadFileData = UBound(byteData) + 1
End If
If boolInternalFileOpen = True Then
Close #intFileNumber
End If
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Процедура за запис в двоичен файл
' Ако за intFileNumber се изпрати 0, файла ще се отвори, ще се прочете и ще се затвори
' Ако за intFileNumber се изпрати >0, това значи че файл с такъв номер вече е
' отворен от друго място в програмата. Той трябва да е отворен "For Binary"
' В lngStart се задава отместването спрямо началото на файла от където да се запише byteData
Public Sub Sub_WriteFileData(intFileNumber As Integer, _
lngStart As Long, _
byteData() As Byte, _
Optional strFileName As String="")
Dim boolInternalFileOpen As Boolean
If intFileNumber = 0 Then
intFileNumber = FreeFile()
Open strFileName For Binary Access As #intFileNumber
boolInternalFileOpen = True
End If
Put #intFileNumber, lngStart, byteData
If boolInternalFileOpen = True Then
Close #intFileNumber
End If
End Sub
Редактирано от Щиpлиц на 30.09.03 20:27.