Hur söker jag efter en text i en binär fil och sedan få adressen där denna text står ??? Hej Tackar det fungerar men problemet kan bli om filen är större än 64 Kb. Hej Hej IgenNästa fråga. Hur söka efter en text i binär fil ?
Gärna lite kod.
AffeSv: Nästa fråga. Hur söka efter en text i binär fil ?
Testa det här
Option Explicit
'sökningen blir okänslig för stora och små bokstäver
Option Compare Text
Private Sub Command1_Click()
Dim tmpChunk As String, sOrd As String
Dim FileNum As Long, sLen As Long, pos As Long
FileNum = FreeFile
Open "C:\Test.txt" For Binary As FileNum
sLen = LOF(FileNum)
tmpChunk = Space$(sLen) 'buffer max 64 kb
Get #FileNum, , tmpChunk
Close #FileNum
sOrd = Text1.Text 'det sökta ordet
pos = InStr(tmpChunk, sOrd)
Label1.Caption = pos
End Sub
mvh
SvenSv: Nästa fråga. Hur söka efter en text i binär fil ?
Vad jag egentligen är ute efter är att kunna läsa filbeskrivningen och därefter eventullt kunna skriva in en annan beskrivning.
Idag gör jag det genom att jag vet adressen där beskrivningen står och ändrar sen den med put och adress. Nuvarande adressen har jag fått genom att söka igenom filen i en editor. Problemet med den lösningen är att om jag ändrar något i koden så kan filen bli större el mindre och då ändras ju också addressen till filens beskrivning. Sv: Nästa fråga. Hur söka efter en text i binär fil ?
När jag skrev 64 kb , så var nog detta en gammal siffra
Jag testade med en 100 kb textfil det funkade Ua
Sen kommer problemmet hur man gör om textfilen
är av typ unicode.Logga in någon och kommentera detta.
DSSv: Nästa fråga. Hur söka efter en text i binär fil ?
Efter Andreas tillrättaläggande beträffande VbTextCompare
Kan du skriva så här
Option Explicit
Private Sub Command1_Click()
Dim tmpChunk As String
Dim sOrd As String
Dim FileNum As Long
Dim sLen As Long, pos As Long
'**************************
FileNum = FreeFile
Open "C:\Test.txt" For Binary As FileNum
sLen = LOF(FileNum)
tmpChunk = Space$(sLen) 'buffer
Get #FileNum, , tmpChunk
Close #FileNum
sOrd = Text1.Text 'det sökta ordet
pos = InStr(1, tmpChunk, sOrd, vbTextCompare)
Label1.Caption = pos 'Startpunkt där du skall ingripa
End Sub
DSSv: Nästa fråga. Hur söka efter en text i binär fil ?
Testade att söka enl metod ovan i en 5.6 Mb stor fil
Det funkade men tog lite tid.
DS