Avatar billede muuu Nybegynder
11. juni 2003 - 14:09 Der er 20 kommentarer og
2 løsninger

VB6 læs en linje

Jeg har et problem, det er at jeg godt vil have et program til at læse EN enkelt linje ud af mange i en txt fil (Eller en andre typer fil)
Avatar billede hiks Nybegynder
11. juni 2003 - 14:23 #1
Avatar billede hanstik Nybegynder
11. juni 2003 - 14:26 #2
Dette læser én linie ad gangen fra en .txt fil.

Copy - paste...

Dim dintekstfil As String
Dim fHandle As Integer
Dim tekstlinie As String
 
  dintekstfil = "C:\dintekstfil.txt"
 
    fHandle = FreeFile
    Open dintekstfil For Input As #fHandle
   
    While Not EOF(fHandle)
      Line Input #fHandle, tekstlinie
     
      Wend
   
    Close fHandle
Avatar billede martin_moth Mester
11. juni 2003 - 22:34 #3
Overvej evt. at bruge random access files, hvori du kan indlæse records - smart! Så kan du nappe lige den record fra din fil du ønsker, uden at skulle læse de første 1000 linier hvis du skal have fat i linie 1001

Åbne en typebestemt fil:
  Open Filnavn for RANDOM as filnummer Len=Recordlen)

Læse records til en variabel "Minvariabel" fra en typebestemt fil:
  Get #Filnummer, aktuelrecord, Minvariabel

Skrive records:
  Som at læse, skriv Put i stedet for Get

Mere om Rancom Access File (i modsætning til sekventielle filer):

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconusingrandomfileaccess.asp
Avatar billede martin_moth Mester
11. juni 2003 - 22:36 #4
NB: "Len=Recordlen)" var en fejl - slet det!
Avatar billede muuu Nybegynder
13. juni 2003 - 09:52 #5
Ps. jeg er verdens største noob! så kan i ikke skrive en kode der kan bruges med det samme?
Avatar billede hanstik Nybegynder
13. juni 2003 - 10:35 #6
Du skal bare copy og paste den stump kode ind som jeg skrev som svar til dig...

Du skal enten paste det ind i form_load eller f.eks. under en knaps click event.

Det virker.

Det eneste du skal rette er variablen: dintekstfil -> til den fil som du vil læse i...
Avatar billede muuu Nybegynder
13. juni 2003 - 11:04 #7
Ja det ved jeg men din kode læser kun den sidste linje, og jeg vil gerne være i stand til at kunne vælge en linje eks: linje 3 ud af 5.
Avatar billede hanstik Nybegynder
13. juni 2003 - 11:33 #8
OK. Men koden løber alle linierne i tekstfilen igennem og ikke kun den sidste :-)
Avatar billede muuu Nybegynder
13. juni 2003 - 11:41 #9
Ok men jeg vil have linje 3 af de 5!
hvordan gør jeg det ?
Avatar billede hanstik Nybegynder
13. juni 2003 - 12:08 #10
Du kan da bare sætte en counter på.
F.eks.
Dim i as Integer
Dim dintekstfil As String
Dim fHandle As Integer
Dim tekstlinie As String
 
  i = 1

  dintekstfil = "C:\dintekstfil.txt"
 
    fHandle = FreeFile
    Open dintekstfil For Input As #fHandle
   
    While Not EOF(fHandle)
     
    if i = 3 then
      'GØR ÈT ELLER ANDET...   
    end if

    Line Input #fHandle, tekstlinie
     
      i = i +1
    Wend
   
    Close fHandle
Avatar billede muuu Nybegynder
16. juni 2003 - 12:55 #11
Hvordan sætte jeg en counter?
Avatar billede muuu Nybegynder
16. juni 2003 - 12:56 #12
Og hvordan får jeg den viklet ind i koden?
Avatar billede martin_moth Mester
16. juni 2003 - 13:22 #13
Muuu: "Hvordan sætte jeg en counter? Og hvordan får jeg den viklet ind i koden?"

Kik på svaret fra hanstik. Han har gjort det for dig
Avatar billede muuu Nybegynder
18. juni 2003 - 09:30 #14
Hmmm (JEG ER DUM!!!)

Private Sub Command1_Click()
Dim i As Integer
Dim dintekstfil As String
Dim fHandle As Integer
Dim tekstlinie As String
 
  i = 1

  dintekstfil = "C:\dintekstfil.txt"
 
    fHandle = FreeFile
    Open dintekstfil For Input As #fHandle
   
    While Not EOF(fHandle)
     
    If i = 3 Then
      MsgBox i
    End If

    Line Input #fHandle, tekstlinie
     
      i = i + 1
    Wend
   
    Close fHandle

MsgBox ? Det input jeg skal bruge! ?

End Sub

I text filen har jeg skrevet:
11
22
33
44
55
66
77
88
99

Og jeg vil have linje 3 som input!
Altså: msgbox "33"
Avatar billede muuu Nybegynder
18. juni 2003 - 09:45 #15
Ps. Den løber alle linjer igennem MEN er der mere end 3 linjer bliver "tekstlinie", til den sidste linje den støder på.
Avatar billede muuu Nybegynder
18. juni 2003 - 09:46 #16
PsPs. :D  Altså: "99"
Avatar billede martin_moth Mester
18. juni 2003 - 12:27 #17
Ret "MsgBox i" til "MSgbox tekstlinie"
Og flyt Line input op OVER i= i+1
Og vælg så en Exit Sub i din If...
Og erklær tekstlinie som en global variabel

Altså

Option Explicit
Dim tekstlinie As String

Private Sub Command1_Click()
  Dim i As Integer
  Dim dintekstfil As String
  Dim fHandle As Integer
  i = 1
  dintekstfil = "C:\dintekstfil.txt"
  fHandle = FreeFile
  Open dintekstfil For Input As #fHandle
  While Not EOF(fHandle)
    Line Input #fHandle, tekstlinie
    If i = 3 Then
      MsgBox tekstlinie
      Exit Sub
    End If
    i = i + 1
  Wend
  Close fHandle
End Sub


Og få fat i en bog om VB - der sparer dig meget tid ;o)
Avatar billede muuu Nybegynder
19. juni 2003 - 09:53 #18
Tak!
Det virker!

:D
Avatar billede martin_moth Mester
19. juni 2003 - 10:45 #19
Giv de fleste points til hanstik - det er hans løsning jeg har brygget videre på
Avatar billede muuu Nybegynder
20. juni 2003 - 13:53 #20
hanstik = 40
martin_moth = 20

Ok?
Avatar billede martin_moth Mester
20. juni 2003 - 15:33 #21
:o)
Avatar billede martin_moth Mester
23. marts 2005 - 10:27 #22
Ved nærmere eftertanke bør det nok være

hanstik = 41
martin_moth = 19
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