Avatar billede kasperh Nybegynder
11. januar 2001 - 19:24 Der er 24 kommentarer og
1 løsning

hente fra tekstfil og smide i variabler.

Hejsa!

Jeg skal bruge en bid Visual Basic Macro kode som henter en linie komma separeret tekst fra en tekstfil og laegger det i nogle strings.

Eksempel paa tekst:
Jacob Hansen,32324545
Kim Hansen,32324556

og smide dem ind i variablen navn og tlfnr.

Bonus for hurtigt svar!
Avatar billede tdaugaard Nybegynder
11. januar 2001 - 19:30 #1
Open \"dinfil.txt\" Fro Input As #1
  Do
    Input #1, strNavn
    Input #1, TlfNr

    \'udskriver i debug vinduet (immediate)
    Debug.Print strNavn & \" - \" & TlfNr
  Loop Until Eof(1)
Close #1
Avatar billede stigc Nybegynder
11. januar 2001 - 19:32 #2
Public Function StrParse(Source As String, PChar As String) As Variant
  \'This Function take the \'Source\' parameter and a separater charater
  \'and creates an Array with each element containing a string ending
  \'where each PChar\' was found.
  \'This Function works great for parsing command lines and/or
  \'Nested Path Strings.

    Dim pos As Integer, i As Integer
    \'Make sure we get the last element in string.
    Source = Left(Source, Len(Source) - 1) + PChar
    \'begin a loop
    Do
   
        \'find the first separating PChar
        pos% = InStr(Source, PChar)
     
        \'if there\'s one, then...
        If pos% Then
          ReDim Preserve TmpArray(i%)
          \'extract the string up to the PChar
          TmpArray(i%) = Trim(Left$(Source, pos% - 1))
       
          \'and remove that from the Source string,
          \'so it won\'t be checked again
          Source = Mid$(Source, pos% + 1, Len(Source))
          i% = i% + 1
        End If
    Loop Until Source = \"\" Or Source = Chr(0)
    \'Return a New Populated Array.
    StrParse = TmpArray           
End Function
Avatar billede tdaugaard Nybegynder
11. januar 2001 - 19:34 #3
stigc:> ehm .. er det ikke lidt overkill ?
Avatar billede stigc Nybegynder
11. januar 2001 - 19:35 #4
Det var både noget jeg fandt om parsing i Visual Basic! Jeg rører aldrig selv det sprog, tænkte det måske kunne bruges til noget :)
Avatar billede stigc Nybegynder
11. januar 2001 - 19:35 #5
Avatar billede stigc Nybegynder
11. januar 2001 - 19:37 #6
Kiggede lige på din kode. Hvorfra ved den at det skiller ved \",\"?
Avatar billede tdaugaard Nybegynder
11. januar 2001 - 19:38 #7
stigc:> nåå .. okay .. men ellers så har vi Split() i VB 6 som kan det samme :-)
Avatar billede tdaugaard Nybegynder
11. januar 2001 - 19:39 #8
stigc:>

Input #1, var - henter indtil et komma
Line Input #1, var - henter en hel linie
Avatar billede stigc Nybegynder
11. januar 2001 - 19:40 #9
Og den er jo så unægtelig god i denne sammenhæng......
Avatar billede tdaugaard Nybegynder
11. januar 2001 - 19:43 #10
*S* det er jo lige det :-)
Avatar billede kasperh Nybegynder
11. januar 2001 - 20:03 #11
Kan jeg paa nogen maade vaelge hvilken nummer linie den skal hente?
Avatar billede tdaugaard Nybegynder
11. januar 2001 - 20:05 #12
Med lidt omkoding, ja ..

Open \"dinfil.txt\" Fro Input As #1
  For I = 1 To DEN_LINIE_DU_VIL_HAVE - 1
    Line Input #1, Dummy
    If Eof(1) Then Exit For
  Next

  Do Until Eof(1)
    Input #1, strNavn
    Input #1, TlfNr

    \'udskriver i debug vinduet (immediate)
    Debug.Print strNavn & \" - \" & TlfNr
  Loop
Close #1
Avatar billede kasperh Nybegynder
11. januar 2001 - 20:18 #13
hvad hvis jeg gerne vil s\'ge i den ved sige at jeg vil finde Kim Hansens telefonnummer?
Avatar billede tdaugaard Nybegynder
11. januar 2001 - 20:21 #14
Noget a\'la:

strFindNavn = \"Kim Hansen\"

Open \"dinfil.txt\" Fro Input As #1
  Do
    Input #1, strNavn
    Input #1, TlfNr

    If LCase(strNavn) = LCase(strFindNavn) Then Exit Do
  Loop Until Eof(1)
Close #1

Avatar billede tdaugaard Nybegynder
11. januar 2001 - 20:21 #15
Med LCase() kan du søge efter \"KiM HanSen\" eller \"kim hansen\" dte er ligemeget .. den vil stadig finde ham
Avatar billede kasperh Nybegynder
11. januar 2001 - 21:58 #16
hvad hvis man filen ser saadan her ud med det f0rste eksempel:

123456 ; 123123
231321 ; 234654

???
Avatar billede kasperh Nybegynder
11. januar 2001 - 21:59 #17
altsaa \" 123456 ; 12456 \"
med mellemrum mellem dem og saa et ;
Avatar billede tdaugaard Nybegynder
11. januar 2001 - 22:01 #18
hmm .. jeg er ikke helt med ..
Avatar billede tdaugaard Nybegynder
11. januar 2001 - 22:04 #19
nåå .. vent din fil er adskilt af semikoloner og ikke kommaer ?
Avatar billede kasperh Nybegynder
11. januar 2001 - 22:15 #20
okay.. hvad hvis dataene er sepereret med en tabulator istedet for ,

Avatar billede kasperh Nybegynder
11. januar 2001 - 22:17 #21
excel har jo 2 m[de man kan eksportere sine data paa. enten semikolon eller tabulator.
med semikolon kommer der et mellemrum ind f0r og efter semikolon: \" 213 ; 123 \".
Med tabulator er der \"123[tab]213\".
Avatar billede tdaugaard Nybegynder
11. januar 2001 - 22:20 #22
Nåå .. okay .. så skal du nok gøre det på en lidt anden måde da jeg ikke er sikker på om Input #1, var slutter ved ; .. jeg prøver lige at lave noget der funker OK
Avatar billede kasperh Nybegynder
11. januar 2001 - 22:22 #23
jeg tror jeg foretr;kker tabulator versionen
Avatar billede tdaugaard Nybegynder
11. januar 2001 - 22:27 #24
oki...
Avatar billede tdaugaard Nybegynder
11. januar 2001 - 23:13 #25
Der går nok lige et par timer før jeg har noget til dig da jeg lige sidder og beskæftiger mig med http://www.eksperten.dk/spm/43074
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