Avatar billede zaqas Nybegynder
26. august 2001 - 19:13 Der er 22 kommentarer og
1 løsning

Læse fra en txt fil...

Well... - jeg sidder og leger med lidt Vbasic, og tænkte på hvordan man kan læse linier ind fra en tekstfil... - f.eks. ind i et array af strings...
Avatar billede jelzin101 Praktikant
26. august 2001 - 19:15 #1
http://www.eksperten.dk/spm/100330
-her er hvordan man gemmer.
Avatar billede zaqas Nybegynder
26. august 2001 - 19:17 #2
Blæret... - men det jeg skal bruge er hvordan man læser... - og efter som jeg har lagt 70 pts ud til et svar, burde det være åbentlyst at jeg ikke gider til at tænke selv... :)
Avatar billede zaqas Nybegynder
26. august 2001 - 19:18 #3
Og husk det skal være en linie ad gangen...
Avatar billede jelzin101 Praktikant
26. august 2001 - 19:18 #4
og du kan åbne en fil sådan her :

Private Sub cmdOpen_Click()
Dim FileName As String
CommonDialog1.Action = 1
FileName = CommonDialog1.FileName
F = FreeFile
Open FileName For Input As #F
Text1.Text = Input$(LOF(F), F)
Close #F
End Sub


Avatar billede jelzin101 Praktikant
26. august 2001 - 19:19 #5
ok læste ikke lige det med en linie.... jeg finder lige på noget :)
Avatar billede zaqas Nybegynder
26. august 2001 - 19:20 #6
I pascal er det noget ´hen ad\' :

Readln(fil, string); for at læse en linie, forudsat at man læser filen som text...
Avatar billede zaqas Nybegynder
26. august 2001 - 19:22 #7
Men nu er basic jo også lidt anderledes... :) - for ikke at sige råddent... :) - kan man læse et tegn ad gangen (char) - så må det jo være linieskift hvis der kommer 13 og 10 efter hinanden...
Avatar billede joern Nybegynder
26. august 2001 - 19:24 #8
Hej.



Dim linie() as String
Dim p as Integer  \' hvis der er under 32000 linier

open sti & \"\\filnavn.txt\" for input as #1
  Do while EOF(1) = False
    Redim Preserve linie(p+1)   
      Line Input #1, linie(p)
      p=p+1
    Loop
  Close #1

M.v.h.  Jørn
Avatar billede zaqas Nybegynder
26. august 2001 - 19:27 #9
Joern > Well... - det ser fornuftigt nok ud... - checker det lige i morgen... oki?
Avatar billede jelzin101 Praktikant
26. august 2001 - 19:29 #10
nice jørn :) -det var det jeg selv havde gang i, men jeg måtte ikke ændre på array størrelsen - uden fejl. (glemte preserve)

//*Jelzin
Avatar billede joern Nybegynder
26. august 2001 - 20:33 #11
Tak  :-)  Håber jeg ikke har overset noget,  man kan jo godt holde array\'et mere end 1 større end antallet af indlæste værdier, men 1 skulle være nok.  Kig evt. på ubound for mulig anvendelse.
M.v.h.  Jørn
Avatar billede infojens Nybegynder
26. august 2001 - 21:24 #12
Jeg ville nu gøre sådan her

En ref til Microsoft Scripting Runtime også

Option Explicit

Dim fso As New FileSystemObject
Dim Streem As TextStream
Dim Tel As Long
Dim str(1000) As String

Private Sub Form_Load()

  Set Streem = fso.OpenTextFile(Filsti, ForReading)
 
  Tel = 1
  Do Until Streem.AtEndOfStream
    str(Tel) = Streem.ReadLine
    Tel = Tel + 1
  Loop
 
End Sub
Avatar billede infojens Nybegynder
26. august 2001 - 21:38 #13
Som Jørn var inde på sætte du

Dim Tel As Long
Dim str(1000) As String

Efter hvor mange du tror du skal bruge, men bruge ikke Integer da den er langsom, Long er ikke bare større men også hurtiger

Avatar billede jelzin101 Praktikant
26. august 2001 - 21:43 #14
ij>> int = langsom ???

btw hvor fandt du koden jeg mener jeg har set den for ikke længe siden (men har formateret og nu er alle mine foretrukne væk :)
Avatar billede joern Nybegynder
26. august 2001 - 21:55 #15
Infojens>>  Jeg skrev kode dengang man skulle spare på ram.  En integer fylder jo meget mindre end en long.  At der skulle være forskel i \"hastighed\" betvivler jeg, i hvert fald en forskel der betyder noget for et programs performance.  Men ellers...  At reservere et array på 1000, når man måske kun skal bruge 27 synes jeg er resurse-fråds.

Men det er altid godt med alternative svar på spørgsmålene, den ene har idéer, som den anden har overset eller ikke kender.  \"readline\" kender min VB5 vist ikke.  Som jeg har nævnt ofte her, bør de som stiller spørgsmål angive hvilken version af VB de anvender.  Jeg vedligeholder f.eks. stadig VB3-programmer!

M.v.h.  Jørn
Avatar billede jelzin101 Praktikant
26. august 2001 - 21:58 #16
Avatar billede infojens Nybegynder
26. august 2001 - 22:00 #17

Jeg har modtaget undervisning et dyrt sted :-)

Min lære fortalte at man bør bruge Long istedet for Integer også selvom man ved at man ikke kommer over... ved mega store programmer skulle man kunne mærke forskel
Avatar billede infojens Nybegynder
26. august 2001 - 22:06 #18
Fed debat vi skulle næsten have en chat bar her..

Til jørn
Jeg synes ikke mit virker hvis jeg skriver

Dim str() As String

så for jeg

Run-time error 9
Subscript out of range

hvad gør jeg forkert ?

Avatar billede infojens Nybegynder
26. august 2001 - 22:14 #19
Til jørn

Det kunne være sjovt at se hvis du overskrev din SCRRUN.DLL med en fra vb 6

Så tror jeg faktisk at det også vil virke hos dig

Skal jeg sende den til dig ?
Avatar billede joern Nybegynder
26. august 2001 - 22:17 #20
infojens>>
Denne kode er fra et program, der virker:

I et modul:
\'leverandører
Global a, e, levialt, naste As Integer
Global lev(20), lev0(), nylev

Jeg ser nu at typen ikke er angivet, så bliver den variant  (de fylder i øvrigt!)



Open netsti & \"lev.dat\" For Input As #3
    Do While EOF(3) = False
      ReDim Preserve lev0(e + 1)
      For a = 0 To 19
        Line Input #3, lev(a)
      Next
      lev0(e) = lev(0) & Space(30) & lev(9)
      If chkredsti(0).Value = 1 Then
          If lev(4) = \"ja\" Then lstlev.AddItem lev0(e)
        Else
          lstlev.AddItem lev0(e)
      End If
       
      e = e + 1
      Loop
  Close #3

Der læses fra en ascii-fil der fungerer som database med 20 felter pr. post.  Skilletegn er \"Enter\"

M.v.h.  Jørn
Avatar billede joern Nybegynder
26. august 2001 - 22:22 #21
Infojens>>  Jeg har 3 maskiner, der kører VB5, så det går nok med et lille eksperiment.  Send du bare til joern.thorsen@get2net.dk

M.v.h.  Jørn
Avatar billede joern Nybegynder
26. august 2001 - 22:29 #22
Infojens>> Filen er modtaget, kigger på det i morgen.  Så skriver jeg her om resultatet.
M.v.h.  Jørn, står af nu og går i seng.  En mandag truer :-(
Avatar billede zaqas Nybegynder
01. september 2001 - 16:09 #23
70 pts til joern... - det var hans kode der blev brugt...
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