[vb6] inhoud file1 regel voor regel naar file2

Pagina: 1
Acties:

  • cappie
  • Registratie: Februari 2000
  • Laatst online: 17-05-2025

cappie

all lowercase

Topicstarter
Hoe kan ik in vb6 regel per regel een bestandje overzetten naar een andere file?

Dit is wat ik nu heb, maar dat corrupt m'n data:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
On Error Resume Next
Open CUS_source For Input As #1
Open CUS_target For Append Lock Write As #2

If Err.Number <= 0 Or Err.Number = 55 Then '55 is file already open...
  Do While Not EOF(1)
    Input #1, fileline
    Print #2, fileline
  Loop
  Close #1
  Close #2
 Else
  Err.Clear
End If

Dit verknalt m'n data dus.. eigenlijk heb ik liever iets wat een binary filecopy doet (ik moet de bestand (de newline commandos) in UNIX format houden (chr(13), chr(10)), en het is ERG belangrijk dat m'n data intakt blijft..

Kan het uberhaupt wel met Visual Basic??

Aspire to inspire before we expire | profiel | systeem


  • cappie
  • Registratie: Februari 2000
  • Laatst online: 17-05-2025

cappie

all lowercase

Topicstarter
oplossing al gevonden.. erg ranzig, maar 't werkt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Open CUS_source For Input As #1
Do While Not EOF(1)
    Line Input #1, content
    For X = 1 To Len(content)
      content2 = content2 & Chr(Asc(Mid(content, X, 1)))
    Next X
    content2 = content2 & Chr(13) & Chr(10)
Loop
Close #1
Open CUS_target For Append Lock Write As #2
content2 = Left(content2, Len(content2) - 2)
Print #2, content2
Close #2

Aspire to inspire before we expire | profiel | systeem


  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 16:48

johnwoo

3S-GTE

Tuurlijk kan dat in VB... Ik zou een string variabele gebruiken om de file per block binair te copyen. Je kunt dan per block fftjes de <cr><lf>'s (Windows) omzetten in <cr> (UNIX).

ff snel in pseudocode:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const blocksize = 1024 ' 1K blockgrootte
dim block as string * blocksize, blockje as string, r as integer

open file1
open file2

for r = 1 to len(file1) \ blocksize
  ' Blok voor blok copyen
  get file1, block
  process block
  put file2, block
next r
if not eof(1) then
  ' Nog een klein reststukje kleiner dan 1 block
  get file1, blockje
  process blockje
  put file2, blockje
end if

close file1
close file2

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


Verwijderd

en:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
On Error Resume Next
Open CUS_source For Input As #1
Open CUS_target For Append Lock Write As #2
If Err.Number <= 0 Or Err.Number = 55 Then '55 is file already open...
  Do While Not EOF(1)
    Line Input #1, fileline
    Print #2, fileline
  Loop
  Close #1
  Close #2
 Else
  Err.Clear
End If

:?

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Zou het niet handig zijn om de file for "Binary" te openen? en dan met "Get" en "Put" via Byte arrays de boel over te zetten? Dan heb je zeker weten de goede data.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!