Avatar billede Jørgen Lund Nybegynder
16. november 2004 - 23:05 Der er 5 kommentarer og
2 løsninger

Text reader funktion

Har nogen en god ide til hvordan jeg får læst en text med linieskift ind i en collection. Filen ser således ud.
------------
jsl@test.dk
fornavn
Efternavn
Text
--------
Altså sådan at hver linie får sin egen plads i Collection'en.
Teksten er fra en mail hvor jeg modtager disse informationer
Avatar billede joern Nybegynder
16. november 2004 - 23:16 #1
Hej.

Jeg går ud fra at det er en ascii-fil og at der efter 'dk' og 'vn' o.s.v. er et hårdt linieskift.

Collections kender jeg ikke til, men her er et eksempel med array.
Dim a as integer, tekst(50) as string

a =0
Open mailfil.txt for input as #1
  Do while EOF(1) = false
    Line Input #1, linie
    tekst(a) = linie
    a = a + 1
  Loop
Close #1

Det er klart, at der skal dimmensioneres et array der er rummeligt nok, hvis også mailens indhold skal medtages.  Er det altid kun de første 4 linier af en fil kan du i stedet bruge en For / Next løkke.

Open mailfil.txt for input as #1
  For a = 0 to 3
    Line Input #1, linie
    tekst(a) = linie
    NExt a
  Loop
Close #1

M.v.h.  Jørn
Avatar billede Jørgen Lund Nybegynder
16. november 2004 - 23:22 #2
Det er faktisk ikke en fil der skal åbnes og læses, men en String variabel der indeholder mailens body.

Det er meget lidt tekst der skal overføres.
Avatar billede joern Nybegynder
17. november 2004 - 00:02 #3
Hej.

Jeg anvender VB5, der ikke har kommandoen split.  Hvis en string indeholder linieskift må du splitte den (eller bruge Instr i VB5) ved hver VbCrLf.

M.v.h. Jørn
Avatar billede martin_moth Mester
17. november 2004 - 08:03 #4
*Hvorfor skriver du "filen ser således ud" hvis det ikke er en fil, men en stringvariabel?

*collection - taler du om en collection af objekter?
*Hvilke objekter?

Joerns svar viser hvordan du gør hvis det var en fil.
Hvis du i stedet har en string-variabel, der indeholder tekst med linieskift, kan du splitte det op i et array på følgende måde (VB6):

    Dim splitArray() As String
    splitArray = Split(strText, vbcrlf )

Splitarray indeholder nu alle tekststumperne. Du kan evt. bruge en anden delimiter end vbcrllf, fx. chr(13)
Avatar billede martin_moth Mester
17. november 2004 - 08:05 #5
PS: joern: Man kan (i VB6) dimme et array dynamisk, og således hele tiden ændrer dets størrelse så det svarer til antal poster :o)
Avatar billede joern Nybegynder
17. november 2004 - 09:59 #6
Hej Martin.

Også i VB5 kan et array dimensioneres dynamisk, men desværre kun i én dimension.  Jeg bruger arrays meget i mine programmer, - op til 3 dimensioner. Jeg synes, at svarene  her på 'Eksperten' undertiden er ret avancerede på enkle spørgsmål, - i hvert fald for mig at se.  Man må lære det enkle før det avancerede.

M.v.h.  Jørn
Avatar billede martin_moth Mester
17. november 2004 - 10:13 #7
Nå ja, men så kompliceret er det vel ikke at bruge Redim Preserve :o)

Nå, over & out, Martin
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