Toon posts:

[VB6] wil bestaande file niet meer openen... :?

Pagina: 1
Acties:

Verwijderd

Topicstarter
een heel raar probleem.... ben nog een newbie programmeur maar een bestand openen zou ik toch wel moeten kunnen...

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
FileNummer = FreeFile()
Debug.Print strDataPad
Rem open de database en interpreteer de inhoud:
On Error GoTo Err_Geen_Database
Open "c:\Visual Basic projecten\samples\database.txt" For Input As #FileNummer
Teller = 1

Do
    Input #FileNummer, intTemp1, strTemp2, strTemp3, strTemp4, strTemp5, strTemp6, strTemp7, strTemp8, strTemp9, strTemp10, strTemp11, strTemp12
    Contact(Teller).intContactId = intTemp1
    Contact(Teller).strPersoonsNaam = strTemp2
    Contact(Teller).strBedrijfsNaam = strTemp3
    Contact(Teller).strAdres = strTemp4
    Contact(Teller).strPostcode = strTemp5
    Contact(Teller).strPlaats = strTemp6
    Contact(Teller).strLand = strTemp7
    Contact(Teller).strTelVast = strTemp8
    Contact(Teller).strTelMobiel = strTemp9
    Contact(Teller).strTelFax = strTemp10
    Contact(Teller).strKlasse = strTemp11
    Contact(Teller).strOpmerkingen = strTemp12
    Teller = Teller + 1
Loop Until VBA.EOF(FileNummer)

Close #FileNummer


dit staat gewoon in een public sub in een module. het bestand staat gewoon precies op het aangegeven pad, maar toch gaat de errorhandler in werking, en als ik de error-handling even weghaal, geeft ie aan dat er een runtime error optreedt bij de "Input". :? :?

Eerder werkte dit wel gewoon, verder heb ik deze code niet veranderd... het bestand database.txt is gewoon toegankelijk, niet 'hidden' oid. iemand enig idee wat dit kan zijn??

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 18:39

RayNbow

Kirika <3

Wat is de Run Time error?

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Verwijderd

Topicstarter
"Input past end of file"... dus hij is druk bezig een nieuw bestand te openen of zo... iig niet het bestaande...

Verwijderd

Topicstarter
Hmmm.. nu lijkt het er eerder op dat ie het bestand wel kan vinden en openen, maar dat ie de eof niet op tijd vindt, want hij leest nu wel de data uit de file in maar geeft de runtime error als ie probeert de 6e regel (die er idd niet is in dat file) in te lezen...

Verwijderd

Staat er misschien een lege regel aan het einde van die file? Hij geeft dan geen EOF na het lezen van de vorige regel, maar tijdens de volgende Input klapt ie dan omdat ie tijdens het lezen van de kolommen een EOF tegenkomt.

Verwijderd

En als je je do until loop wijzigt in

Visual Basic:
1
2
3
Do Until VBA.EOF(FileNummer)
    'code
Loop

Verwijderd

Topicstarter
Verwijderd schreef op 02 May 2003 @ 12:14:
En als je je do until loop wijzigt in

Visual Basic:
1
2
3
Do Until VBA.EOF(FileNummer)
    'code
Loop
nee dat helpt niet, maar ik weet nu ieg zeker da het te maken heeft met de eof. Als ik zo'n bestand bekijk in notepad, hoe moet het aan het eind dan eruit zien om eof goed te laten werken? moet er een return na de laatste regel, of juist niet?

Verwijderd

Topicstarter
Verwijderd schreef op 02 May 2003 @ 11:53:
Staat er misschien een lege regel aan het einde van die file? Hij geeft dan geen EOF na het lezen van de vorige regel, maar tijdens de volgende Input klapt ie dan omdat ie tijdens het lezen van de kolommen een EOF tegenkomt.
oh sorry, k had je reply nog niet gezien, maar daar dacht ik dus ook aan. dus ik moet gewoon zorgen dat er na de laatste regel van de txt-file geen return gegeven staat, zodat eof aan het einde van die laatste regel true wordt?

edit: dat helpt niet... hoe kan ik in notepad ervoor zorgen dat die eof dan aan het eind van de laatste regel optreedt?

[ Voor 11% gewijzigd door Verwijderd op 02-05-2003 12:58 ]


Verwijderd

Plaats een bijzonder karakter aan het einde van je file die niet gebruikt wordt. Zoals ╚ of zoiets. En loop dan door je file heen tot aan dat karakter en behandel die als eof.

Verwijderd

Topicstarter
ik heb het probleem gevonden :) in vb kun je in een stringvariabele quotes gebruiken door "" in te geven, maar blijkbaar werkt dat bij het input statement niet, want dan ziet hij die dubbele quote gewoon als eind van block en begin van nieuw block. dus maar ff iets schrijven om " te vervangen door '... bedankt voor de moeite :)

Verwijderd

Ik zie dat je het probleem al gevonden hebt maar zet mijn post toch nog maar even neer omdat deze code iets anders is en zo bij mij prima werkt.

Visual Basic:
1
2
3
4
5
6
7
Dim iFileNum as Integer
iFileNum = FreeFile
Open "filename.txt" For Input Access Read As iFileNum
Do While Not EOF(iFileNum) ' Loop until end of file.
   Line Input #iFileNum,   ... rest van je code
Loop
Close iFileNum ' Close file.
Pagina: 1