09. februar 2003 - 14:02Der 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?
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
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
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..
Om der så er en nemmere måde, er ikke godt at vide... Hovedsagen er vel at det virker.
Synes godt om
Ny brugerNybegynder
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.