Avatar billede noaz Nybegynder
09. februar 2003 - 14:02 Der er 13 kommentarer og
1 løsning

open file for binary as #1

mit problem er at når jeg åbner en fil, redigere den, og lukker den igen, opdager, at der er 2 extra bytes, som jeg ikke har bedt om.
ligesom asp's writeline tilføjer et linefeed så skriver mit program også 2 extra bytes.

ok, her er det loop jeg har brugt til at skrive filen med:

'start
Open Filename For Binary As #1
Open Output For Binary As #2

If mode = 1 Then
    For zx1 = 1 To LOF(1)
        Test1 = String(1, " ")
        Get #1, zx1, Test1
        Put #2, zx1 + bit, Asc(Test1)
    Next
Else
    For zx = (bit + 1) To LOF(1)
        Get #1, zx, Test1
        Put #2, zx - bit, Asc(Test1)
    Next
End If

Close #1
Close #2
'slut

ok. som i nok kan se bruger jeg to 'modes'.. den ene skriver lidt inde i filen, den anden læser lidt inde i filen.. ok.. men hvorfor kommer tog bytes for meget?
Avatar billede noaz Nybegynder
09. februar 2003 - 14:05 #1
ps.. lad os bare antage at 'bit = 0'
Avatar billede scb Praktikant
09. februar 2003 - 14:09 #2
Det er sansynligvis EOF (end of file)
Avatar billede scb Praktikant
09. februar 2003 - 14:11 #3
Ups så ikke at det var en eksisterende fil du åbnede..
Så må det være CR / LF der kommer med.
Avatar billede noaz Nybegynder
09. februar 2003 - 14:14 #4
ja.. men hvordan undgår jeg det.. ?
Avatar billede scb Praktikant
09. februar 2003 - 14:19 #5
Jeg har selv bøvlet med det samme problem, og endte med at afkorte filen med 2 pladser hver gang jeg åbner den.
Ved hjælp af Len.
Test1 = Left(Test1,(Len((Test1)-2)) 'Gør Test1 2 tegn mindre
-SCB
Avatar billede noaz Nybegynder
09. februar 2003 - 14:23 #6
men jeg læser den jo byte for byte..
Avatar billede scb Praktikant
09. februar 2003 - 14:25 #7
Så må det være noget med:
For zx1 = 1 To (LOF(1)-2)
Ved ikke om det virker
Avatar billede noaz Nybegynder
09. februar 2003 - 14:26 #8
jeg prøver lige..
Avatar billede noaz Nybegynder
09. februar 2003 - 14:30 #9
den sidste char i min text fil forsvandt..
Avatar billede noaz Nybegynder
09. februar 2003 - 14:33 #10
hmm.. den sidste byte forsvandt også da jeg prøvede:
For zx1 = 1 To (LOF(1)-1)
Avatar billede noaz Nybegynder
09. februar 2003 - 14:37 #11
jeg har testet lidt.. og jeg fatter ikke en sk*d.. følgende ser dog ud til at virke..
If mode = 1 Then
    For zx1 = 1 To (LOF(1) - 0)
        Test1 = String(1, " ")
        Get #1, zx1, Test1
        Put #2, zx1 + bit, Asc(Test1) Xor Asc(Mid(Password, az, 1))
        az = az + 1
        If az > Len(Password) Then
            az = az - Len(Password)
        End If
        ProgressBar1.Value = zx1
    Next
Else
    For zx = (bit + 1) To (LOF(1) - 1)
        Test1 = String(1, " ")
        Get #1, zx, Test1
        Put #2, zx - bit, Asc(Test1) Xor Asc(Mid(Password, az, 1))
        az = az + 1
        If az > Len(Password) Then
            az = az - Len(Password)
        End If
        ProgressBar1.Value = zx
    Next
End If
Avatar billede noaz Nybegynder
09. februar 2003 - 14:43 #12
nu tilføjede den én byte..
Avatar billede noaz Nybegynder
09. februar 2003 - 14:48 #13
HURRA!..
følgende kode virker..
If mode = 1 Then
    For zx1 = 1 To (LOF(1) - 1)
        Test1 = String(1, " ")
        Get #1, zx1, Test1
        Put #2, zx1 + bit, Asc(Test1) Xor Asc(Mid(Password, az, 1))
        az = az + 1
        If az > Len(Password) Then
            az = az - Len(Password)
        End If
        ProgressBar1.Value = zx1
    Next
Else
    For zx = (bit + 1) To (LOF(1) - 1)
        Test1 = String(1, " ")
        Get #1, zx, Test1
        Put #2, zx - bit, Asc(Test1) Xor Asc(Mid(Password, az, 1))
        az = az + 1
        If az > Len(Password) Then
            az = az - Len(Password)
        End If
        ProgressBar1.Value = zx
    Next
End If

trækker en byte fra i længden første gang den åbner, og en til byte anden gang.. fino.. det virker.. tak for hjælpen.. du får pointene nu..
Avatar billede scb Praktikant
09. februar 2003 - 15:26 #14
Om der så er en nemmere måde, er ikke godt at vide...
Hovedsagen er vel at det virker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester