hur gör man om man vill loppa in allt som finns i en fil till en sträng i binärt läge? Hej Tack för ditt inlägg SvenPon. Har lite förslag far att conkratenera ihop strängen. Innebär ju att den måste dimensioneras om för varje tecken. Eftersom strängen växer i storlek. Använd då istället mid(). Har också laggt till en funktion för koden. Den läser tills den första radbrytning.:Binär fil hantering....
Eller hämta data som jag inte har positioner av... i Binärt läge..Sv: Binär fil hantering....
Tar det fritt ur minnet.
Dim tmpChar As String *1,tmpStr As String
Dim FileNum As Long
FileNum = FreeFile
Open "C:\Netlog.txt" for Binary As #FileNum
Do Until EOF(FileNum)
Get #FileNum,,tmpChar
tmpStr = tmpStr & tmpChar
Loop
Close#FileNum
Kommer att stega genom hela filen byte för byte
Tror att det mesta är rätt.Man kan även hämta hela
filen i en "chunk" , kommer inte på just nu hur det var med det.
mvh
SvenSv: Binär fil hantering....
<code>
Private Sub Command1_Click()
Dim strChar As String * 1
Dim strFile As String
Dim strResult As String
Dim FileNum As Long
Dim Index As Long
FileNum = FreeFile()
Open "C:\Netlog.txt" For Binary As #FileNum
strFile = String(LOF(FileNum), 0)
For Index = 1 To LOF(FileNum)
Get #FileNum, Index, strChar
If strChar = vbCr Then
strResult = Left(strFile, Index)
Exit For
Else
Mid(strFile, Index, 1) = strChar
End If
Next
Close #FileNum
End Sub
</code>
Detta är effektivare i många falla att läsa in hela filen till minnet då man söker efter en position. Eftersom fil operationer är långsamma. Det är bara när det gäller stora filer som man tjänar på att läsa filen en bit(tårtbit, inte databit 1/0) i taget. Dock ej så små bitar som en byte i detta fallet. Vilket är oeffektivt.
<code>
Private Sub Command2_Click()
Dim strFile As String
Dim strResult As String
Dim FileNum As Long
Dim Index As Long
FileNum = FreeFile()
Open "C:\Netlog.txt" For Binary As #FileNum
strFile = String(LOF(FileNum), 0)
Get #FileNum, , strFile
Close #FileNum
Index = InStr(strFile, vbCr)
If Index Then
strResult = Left(strFile, Index - 1)
End If
End Sub
</code>