Avatar billede steffansteffan Nybegynder
21. maj 2007 - 00:03 Der er 10 kommentarer og
1 løsning

Læse fra INI fil

Hej

Jeg opretter en ini fil med følgene informationer:

[FTP]
Username=Username
Password=Password

[Side]
Site1=www.site1.com
Site2=www.site2.com

Jeg vil så gerne søge efter f.eks. [FTP] og så udskrive:
Username=Username
Password=Password

Hvordan gør jeg dette i VBscript, TAkker..
Avatar billede thesurfer Nybegynder
21. maj 2007 - 10:18 #1
Man kunne vælge at gøre det på følgende måde:

1) Læs hele filen ind, og split ved vbCrLr (linieskift), så du får en array.
2) Læs 1 linie ad gangen

-- I en FOR-NEXT loop:

Nuværende linie: enten index'et i arrayen eller linien man lige har indlæst.

Man checker så om nuævrende linie indeholder "[" + søgeordet + "]". Hvis den gør det, sættes et flag/bool variable til TRUE, eller en anden værdi.

Hvis flag er lig TRUE
  start loop
    hvis "ny nuværende linie" ikke er tom
      gør et eller andet med teksten (f.eks. "Username=Username")
    ellers
      man er nået til en tom linie, dvs, det er f.eks. ikke længere "FTP", så afslut funktion
      Med "afslut funktion" mener jeg: returner de fundne data
    slut hvis
  slut loop
slut hvis

:-)
Avatar billede thesurfer Nybegynder
21. maj 2007 - 10:20 #2
PS: Jeg går ud fra, at du mener VBS til Windows, og ikke Interntettet (Internet Explorer)..

Man kan ikke få adgang til filsystemet fra Internet-udgaven af VBS..

Så skal man igennem noget ActiveX..
Avatar billede steffansteffan Nybegynder
21. maj 2007 - 10:31 #3
TheSurfer, Ja det er Windows.. :)

Ja lige præcis har været inde over en liggende løsning. Men problemet er jeg kan ikke få indholdet ud når jeg f.eks. finder [FTP] og til næste [XXXX].
kan du prøve at komme med et mere "Færdigt" eksempel :) Ville hjælpe mig meget. Takker Surfer.
Avatar billede morten_leth Nybegynder
21. maj 2007 - 10:44 #4
strRunIni  = "C:\Users\azksaj1b\Desktop\test.txt"
ReadSetupFile(strRunIni)

arrRunIni = ReadSetupFile(strRunIni)
   
    'Opretter arrays med alle keys fra ini-filen. Tjekker foerst om det er Citrix eller WinXP.
    arrRunAlleKeys = GetKeys(arrRunini,"FTP")
    arrRunAlleKeys = GetKeys(arrRunini,"Side")
    msgbox arrRunAlleKeys

Function ReadSetupFile(strSetupFile)

    Const OPEN_FILE_FOR_READING = 1

    Set objFileSystem = CreateObject("Scripting.fileSystemObject")
    Set objInputFile = objFileSystem.OpenTextFile(strSetupFile, OPEN_FILE_FOR_READING)

    arrSetupFile = Split(objInputFile.ReadAll, vbNewline)
   
    If Not arrSetupFile(UBound(arrSetupFile) -1) = "" then
        ReDim Preserve arrSetupFile(UBound(arrSetupFile) +1)
    End If
   
    ReadSetupFile = arrSetupFile
    objInputFile.Close
    Set objFileSystem = Nothing
   
End Function

Function GetKeys(arrSetupFile,strSection)
    For i=0 to Ubound(arrSetupFile)
            if Instr(1,arrSetupFile(i),"[" & strSection & "]") = 1 then
                i=i+1
                while Instr(1,arrSetupFile(i),"[") = 0 And i < (UBound(arrSetupFile))
                        if Len(arrSetupFile(i)) > 0 then
                            if instr(1,arrSetupFile(i), ";") = 0 Then
                            msgbox left(arrSetupFile(i), (Instr(1,arrSetupFile(i),"=")-1))
                            msgbox mid(arrSetupFile(i), Instr(1,arrSetupFile(i),"=")+1, len(arrSetupFile(i)))
                            strKeys = Left(arrSetupFile(i), (Instr(1,arrSetupFile(i),"=")-1))
                           
                            GetKeys = trim(GetKeys & strKeys  & ",")
                            end if
                        end if
                        i=i+1
                    Wend
                exit Function
            end If
    Next
End Function
Avatar billede morten_leth Nybegynder
21. maj 2007 - 10:46 #5
Man kunne jo også bare gøre følgende.. :D
Havde lige det her til at ligge.. håber du kan bruge det... du bliver nødt til selv lige at tilrette det så det passer til det du skal bruge men det her er så tæt på et færdig eksempel som jeg lige kan komme med.. :D
Avatar billede steffansteffan Nybegynder
21. maj 2007 - 14:57 #6
Perfekt Morten, Lige hvad jeg mangelde nu er den der næsten.
Jeg er kommet frem til dette:

strRunIni  = "C:\Documents and Settings\SJJ\Desktop\test\config.ini"
ReadSetupFile(strRunIni)

arrRunIni = ReadSetupFile(strRunIni)
 
    'Opretter arrays med alle keys fra ini-filen. Tjekker foerst om det er Citrix eller WinXP.
    arrRunAlleKeys = GetKeys(arrRunini,"FTP")
    'arrRunAlleKeys = GetKeys(arrRunini,"Side")
    'msgbox arrRunAlleKeys

Function ReadSetupFile(strSetupFile)

    Const OPEN_FILE_FOR_READING = 1

    Set objFileSystem = CreateObject("Scripting.fileSystemObject")
    Set objInputFile = objFileSystem.OpenTextFile(strSetupFile, OPEN_FILE_FOR_READING)

    arrSetupFile = Split(objInputFile.ReadAll, vbNewline)

    If Not arrSetupFile(UBound(arrSetupFile) -1) = "" then
        ReDim Preserve arrSetupFile(UBound(arrSetupFile) +1)
    End If
 
    ReadSetupFile = arrSetupFile
   
    objInputFile.Close
    Set objFileSystem = Nothing
 
End Function

Function GetKeys(arrSetupFile,strSection)
    For i=0 to Ubound(arrSetupFile)
            if Instr(1,arrSetupFile(i),"[" & strSection & "]") = 1 then
                i=i+1
                while Instr(1,arrSetupFile(i),"[") = 0 And i < (UBound(arrSetupFile))
                        if Len(arrSetupFile(i)) > 0 then
                            if instr(1,arrSetupFile(i), ";") = 0 Then
                               
                var1 = left(arrSetupFile(i), (Instr(1,arrSetupFile(i),"=")-1))
                                var2 = mid(arrSetupFile(i), Instr(1,arrSetupFile(i),"=")+1, len(arrSetupFile(i)))

                                strKeys = strKeys & var1 & "=" & var2 & VbCrLf
               
                            end if
                        end if
                        i=i+1
                    Wend

            Wscript.echo strKeys

                exit Function
            end If
    Next
End Function

-----------------------------------------

Når jeg udskriver Wscript.echo strKeys. for jeg:
Username=Username
Password=Password

Så det er helt perfekt. Det jeg ønsker.

Så mangler jeg bare at "Få denne ned i mit script" så jeg kan arbejde videre med disse "Variabler" og ikke bare en fejlbox :).
f.eks. arbejde videre sådan her.
If Username = "Peter" Then
    Wscript.echo "Ja"
Else
    Wscript.echo "Nej"
End if

Det er første gang jeg koder til windows har altid kodet web så det er en ny verden, og sikkert et nemt spørgsmål :)
Men hvordan gør jeg dette.
Avatar billede morten_leth Nybegynder
22. maj 2007 - 09:47 #7
strRunIni  = "C:\Users\azksaj1b\Desktop\test.txt"
ReadSetupFile(strRunIni)

arrRunIni = ReadSetupFile(strRunIni)
 
    'Opretter arrays med alle keys fra ini-filen.
    arrRunAlleKeys = GetKeys(arrRunini,"FTP")
    'arrRunAlleKeys = GetKeys(arrRunini,"Side")
    strTest = split(arrRunAlleKeys, VbCrLf)
    for each thing in strTest
        If mid(thing,10,len(thing)) = "Peter" Then
            Wscript.echo "Ja"
        Else
            Wscript.echo "Nej"
        End if   
        msgbox  mid(thing,10,len(thing))
    next

Function ReadSetupFile(strSetupFile)

    Const OPEN_FILE_FOR_READING = 1

    Set objFileSystem = CreateObject("Scripting.fileSystemObject")
    Set objInputFile = objFileSystem.OpenTextFile(strSetupFile, OPEN_FILE_FOR_READING)

    arrSetupFile = Split(objInputFile.ReadAll, vbNewline)

    If Not arrSetupFile(UBound(arrSetupFile) -1) = "" then
        ReDim Preserve arrSetupFile(UBound(arrSetupFile) +1)
    End If
 
    ReadSetupFile = arrSetupFile
   
    objInputFile.Close
    Set objFileSystem = Nothing
 
End Function

Function GetKeys(arrSetupFile,strSection)
    For i=0 to Ubound(arrSetupFile)
            if Instr(1,arrSetupFile(i),"[" & strSection & "]") = 1 then
                i=i+1
                while Instr(1,arrSetupFile(i),"[") = 0 And i < (UBound(arrSetupFile))
                        if Len(arrSetupFile(i)) > 0 then
                            if instr(1,arrSetupFile(i), ";") = 0 Then
                               
                var1 = left(arrSetupFile(i), (Instr(1,arrSetupFile(i),"=")-1))
                                var2 = mid(arrSetupFile(i), Instr(1,arrSetupFile(i),"=")+1, len(arrSetupFile(i)))

                                strKeys = strKeys & var1 & "=" & var2 & VbCrLf
               
                            end if
                        end if
                        i=i+1
                    Wend

                  GetKeys = strKeys

                exit Function
            end If
    Next
End Function


tjah jeg er ikke helt med på hvad det helt præcis er du mener men jeg tog mig den frihed lige at skrev det her...
Som du kan se har jeg sat funtionen til at returnere en værdi i stedet for...
Den værdi splitter jeg så op og tjekker på hver linje... prøv du at kigge lidt på det jeg har lavet her... håber det hjælper dig nærmere en løsning...
Avatar billede steffansteffan Nybegynder
30. marts 2008 - 17:20 #8
Hej morten_leth

Jeg fandt en anden løsning på denne, men kan se din virker. Så det er besvarelse på mit spørgsmål.
Smæk et svar så lukker vi her.
Tak for din besvarelse.

mvh
Steffan
Avatar billede morten_leth Nybegynder
30. marts 2008 - 21:02 #9
Det lyder fair :D
Avatar billede morten_leth Nybegynder
30. marts 2008 - 21:04 #10
Du får godt nok ryddet op i dine spørgsmål hva. :D
Avatar billede steffansteffan Nybegynder
30. marts 2008 - 21:11 #11
hehe ja, men folk bliver jo surer når man for lidt for mange af dem. :)
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