Hej. Det beror nog på att Arrayen är noll indexerad. Så det kommer ett extra tom byte på slutet. Testa istället med:Binärfil ändrar storlek vid skrivning till disk vid kopiering.
Jag skriver en filöverföringsrutin där jag vill kunna motringa en server för att uppdatera en exe-fil. för versionsuppdateringar med mera. exe-filen är ett datainsamlingsprogram som snurrar i en industri-pc med anslutet GSM-modem. Allt fungerar mycket bra men jag har funderingar som jag hoppas få svar på.
Jag testade följande kod för att kopiera en binär-fil, detta blir på samma dator, men det är ju tänkt att det är byte-arrayen som skall skickas över GSM modemet till mottagande sida.
Private Sub Form_Load()
Dim a() As Byte
Dim l As Long
l = FileLen("c:\program\bvxlnod\bvxlnod.exe")
ReDim a(l)
Open "c:\program\programmet\prg_1.exe" For Binary Access Read As #1
Get #1, , a
Close #1
Open "c:\program\programmet\prg_2.exe" For Binary Access Write As #1
Put #1, , a()
Close #1
End Sub
Jag noterar att filstorleken skiljer.. EXE-filen fungerar, men den är större efter
kopieringen. Det måste juh ha att göra med hur filen skrivs till disken eftersom
den öppnade filens binärdata har korrekt antal bytes och det är först när den
skrivits till disk som den är större filen.
/tack på förhand PeterhSv: Binärfil ändrar storlek vid skrivning till disk vid kopiering.
<code>
Private Sub Command1_Click()
Dim Data() As Byte
Dim Size As Long
Dim FileNo As Long
Dim SourceFile As String
Dim DestinationFile As String
'SourceFile = "c:\program\bvxlnod\bvxlnod.exe"
'DestinationFile = "c:\program\programmet\prg_2.exe"
SourceFile = "C:\WINDOWS\regedit.exe"
DestinationFile = "C:\regedit.exe"
FileNo = FreeFile()
Open SourceFile For Binary Access Read Shared As FileNo
Size = LOF(FileNo)
If Size Then
'ReDim Data(1 To Size)
ReDim Data(0 To Size - 1)
Get FileNo, , Data
Close FileNo
FileNo = FreeFile()
Open DestinationFile For Binary Access Write Lock Write As FileNo
Put FileNo, , Data()
End If
Close FileNo
End Sub
</code>