open fileName for Binary Access Read (Write) Lock (Read) Write as FileNumber
1.
Do while not EOF(FileNumber)
Get FileNumber, ByteNumber, MyByte
'еще вариант чтения: MyString=Input(NumberOfBytes, FileNumber)
Loop
2.
For ByteNumber=1 to LOF(FileNumber)
Get FileNumber, ByteNumber, MyByte
Next ByteNumber
FileNumber=FreeFile
ALX_2002 писал(а):В кратце - мне нужно сделать DLL, к которой можно будет
обратиться из ASP.
При использовании FSO возникла проблема одновременного чтения из файла
Я думал, что при "open fileName for Binary Access Read" 2
пользователя, подключившиеся к ASP смогут чиать файл.
tyomitch писал(а):Побитовое бывает, и иногда полезно - например, для тех же GIF-ов. Но у ALX_2002 имхо именно побайтовое.
ANDLL писал(а): Продемонстрируй-ка код, считывающий бит "158 из файла text1.txt
ANDLL писал(а):tyomitch писал(а):Побитовое бывает, и иногда полезно - например, для тех же GIF-ов. Но у ALX_2002 имхо именно побайтовое.
Продемонстрируй-ка код, считывающий бит № 158 из файла text1.txt
Public Function GetBit(ByVal bn As Long) As Boolean
Dim b As Byte
Get #1, 1 + (bn \ 8), b
GetBit = b And (2 ^ (bn Mod 8))
End Function
ALX_2002 писал(а):Удивительно, как только я произношу кодовое слово ASP, тут же в пост перестают писать
Это закономерность такая ?
tyomitch писал(а):ANDLL писал(а):tyomitch писал(а):Побитовое бывает, и иногда полезно - например, для тех же GIF-ов. Но у ALX_2002 имхо именно побайтовое.
Продемонстрируй-ка код, считывающий бит № 158 из файла text1.txt
- Код: Выделить всё
Public Function GetBit(ByVal bn As Long) As Boolean
Dim b As Byte
Get #1, 1 + (bn \ 8), b
GetBit = b And (2 ^ (bn Mod 8))
End Function
В реальном коде, конечно, последний считанный байт запоминается, а не пересчитывается 8 раз.
ANDLL писал(а):Ну, Темыч, это побайтовое чтение из файла...
Function ReadFile(BYTES)
End Function
Do
Bits=ReadFile(100)
Loop Until Bits=""
Private Sub Form_Load()
MsgBox RF(1)
End Sub
Public Function RF(ByVal nBytes As Long) As String
Static nCurPos As Long, fNum As Long, nFileSize As Long
If fNum = 0 Then
fNum = FreeFile
Open "C:\file.txt" For Binary Access Read As #fNum
nCurPos = 1
End If
If nCurPos > LOF(fNum) Then
RF = ""
Close #fNum
fNum = 0
Exit Function
End If
Dim nStr As String
nStr = Space(nBytes)
Get #fNum, nCurPos, nStr
nCurPos = nCurPos + nBytes
RF = nStr
End Function
dim A as string,B() as Byte
A="ABC"
B=A
ANDLL писал(а):Попробуй:
- Код: Выделить всё
Private Sub Form_Load()
MsgBox RF(1)
End Sub
Public Function RF(ByVal nBytes As Long) As String
Static nCurPos As Long, fNum As Long, nFileSize As Long
If fNum = 0 Then
fNum = FreeFile
Open "C:\file.txt" For Binary Access Read As #fNum
nCurPos = 1
End If
If nCurPos > LOF(fNum) Then
RF = ""
Close #fNum
fNum = 0
Exit Function
End If
Dim nStr As String
nStr = Space(nBytes)
Get #fNum, nCurPos, nStr
nCurPos = nCurPos + nBytes
RF = nStr
End Function
Private Sub Form_Load()
MsgBox RF(1)
End Sub
Public Function RF(ByVal nBytes As Long) As String
Static fNum As Long
If fNum = 0 Then
fNum = FreeFile
Open "C:\file.txt" For Binary Access Read As #fNum
End If
If EOF(fNum) Then
RF = ""
Close #fNum
fNum = 0
Else
RF = Space(nBytes)
Get #fNum, , RF
End If
End Function
tyomitch писал(а):ANDLL писал(а):Попробуй:
- Код: Выделить всё
...
Способ короче:
- Код: Выделить всё
...
Сравни длину
dim A as string,B() as Byte
A="ABC"
B=strconv(A,vbFromUnicode)
Попробуй такой код:ALX_2002 писал(а):2) Трабл... ваш код не до конца файл читает. Из-за того что длина файла произвольная, а делим его равными кусками, лезут глюки
Private Sub Form_Load()
MsgBox RF(1)
End Sub
Public Function RF(ByVal nBytes As Long) As String
Static fNum As Long
If fNum = 0 Then
fNum = FreeFile
Open "C:\file.txt" For Binary Access Read As #fNum
End If
If EOF(fNum) Then
RF = ""
Close #fNum
fNum = 0
Else
If nBytes > (LOF(1) - Seek(1)) Then nBytes = (LOF(1) - Seek(1))
RF = Space(nBytes)
Get #fNum, , RF
End If
End Function
Public Function RF(ByVal nBytes As Long,ResStr As String) As Boolean
Static fNum As Long
RF = False: ResStr = ""
If fNum = 0 Then
fNum = FreeFile
Open "C:\file.txt" For Binary Access Read As #fNum
End If
If EOF(fNum) Then
Close #fNum
fNum = 0
Else
If Loc(fNum) + nBytes > LOF(fNum) then
nBytes = LOF(fNum) - Loc(fNum)
EndIf
ResStr = Space(nBytes)
Get #fNum, , ResStr
RF = True
End If
End Function
Do While RF(BytesNumber,Str)
.......
Loop
Сейчас этот форум просматривают: AhrefsBot и гости: 36