Avatar billede ripley Nybegynder
17. maj 2004 - 11:39 Der er 7 kommentarer og
1 løsning

Conf-fil

Hej!

Jeg er blevet bedt om at lave en ASP-appl., der skal ned og hente nogle mail-adresser i en såkaldt CONF-fil.
Jeg er kendt med ASP, men hvad er en CONF-fil? Kan ASP bruge en sådan fætter?
Avatar billede medions Nybegynder
17. maj 2004 - 11:45 #1
En conf fil er vel blot en configuration file, ligesom så mange andre, blot med endelsen .conf. Normalt plejer man i applikationsprogrammering at kalde filerne for .cfg eller .ini, men ok, hvis de vil have en .conf må du jo gøre det.

Du skal blot have fat i noget FileSystemObject og så ellers bare lade som om at filen egentlig hedder .txt. Det er nemlig nøjagtig samme fremgangsmåde.

Så ja, det kan godt lade sig gøre. :)

//>Rune
Avatar billede ripley Nybegynder
17. maj 2004 - 11:46 #2
OK, så prøver vi det - det lyder jo rimelig straigthforward :o)
Avatar billede medions Nybegynder
17. maj 2004 - 11:51 #3
Det ER meget staightforward :)

Hvis vi fx. siger at din .conf fil ser således ud:

Mailadresser = *rune@medions.dk;camilla@medions.dk*

Så kan du bare sige:

Dim fso, f, filespec
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("projektnavn.conf")
Set f = fso.OpenTextFile(filespec,1)

' Læs linie for linie indtil slutningen af filen
Do While not f.AtEndOfStream
  If Left(f.ReadLine, 12) = "Mailadresser" Then
      '...Her splitter du så mailadresserne op som der skal bruges.
  End If
Loop

Håber du kan bruge det. :)

//>Rune
Avatar billede ripley Nybegynder
17. maj 2004 - 12:57 #4
Det ser umiddelbart OK ud, men hvis jeg må spørge lidt extra, hvad er det så for noget med at assigne en variabel til en bestemt mailadr. og så bagefter sammenligne med linje for linje i filen?
Jeg forstår heller ikke det med at splitte op?
Undskyld, hvis jeg spørger dumt :o/
Avatar billede ripley Nybegynder
17. maj 2004 - 13:02 #5
Nå, undskyld - nu fattede jeg det.
Den øverste linje er selvfølgelig indholdet af din konf-fil :o)
Jamen, så tror jeg næsten, jeg fatter det!
Avatar billede medions Nybegynder
17. maj 2004 - 13:06 #6
Ok :)
Jamen held og lykke med det hr. ;)

//>Rune
Avatar billede ripley Nybegynder
17. maj 2004 - 15:11 #7
Øhm, ikke hr. - "fru", tak :o)
Avatar billede cpccorp Juniormester
17. maj 2004 - 17:55 #8
Lige her og nu:

Sub WriteINIString(Section, KeyName, Value, FileName)
  Dim INIContents, PosSection, PosEndSection
 
  'Get contents of the INI file As a string
  INIContents = GetFile(FileName)

  'Find section
  PosSection = InStr(1, INIContents, "[" & Section & "]", vbTextCompare)
  If PosSection>0 Then
    'Section exists. Find end of section
    PosEndSection = InStr(PosSection, INIContents, vbCrLf & "[")
    '?Is this last section?
    If PosEndSection = 0 Then PosEndSection = Len(INIContents)+1
   
    'Separate section contents
    Dim OldsContents, NewsContents, Line
    Dim sKeyName, Found
    OldsContents = Mid(INIContents, PosSection, PosEndSection - PosSection)
    OldsContents = split(OldsContents, vbCrLf)

    'Temp variable To find a Key
    sKeyName = LCase(KeyName & "=")

    'Enumerate section lines
    For Each Line In OldsContents
      If LCase(Left(Line, Len(sKeyName))) = sKeyName Then
        Line = KeyName & "=" & Value
        Found = True
      End If
      NewsContents = NewsContents & Line & vbCrLf
    Next

    If isempty(Found) Then
      'key Not found - add it at the end of section
      NewsContents = NewsContents & KeyName & "=" & Value
    Else
      'remove last vbCrLf - the vbCrLf is at PosEndSection
      NewsContents = Left(NewsContents, Len(NewsContents) - 2)
    End If

    'Combine pre-section, new section And post-section data.
    INIContents = Left(INIContents, PosSection-1) & _
      NewsContents & Mid(INIContents, PosEndSection)
  else'if PosSection>0 Then
    'Section Not found. Add section data at the end of file contents.
    If Right(INIContents, 2) <> vbCrLf And Len(INIContents)>0 Then
      INIContents = INIContents & vbCrLf
    End If
    INIContents = INIContents & "[" & Section & "]" & vbCrLf & _
      KeyName & "=" & Value
  end if'if PosSection>0 Then
  WriteFile FileName, INIContents
End Sub

Function GetINIString(Section, KeyName, Default, FileName)
  Dim INIContents, PosSection, PosEndSection, sContents, Value, Found
 
  'Get contents of the INI file As a string
  INIContents = GetFile(FileName)

  'Find section
  PosSection = InStr(1, INIContents, "[" & Section & "]", vbTextCompare)
  If PosSection>0 Then
    'Section exists. Find end of section
    PosEndSection = InStr(PosSection, INIContents, vbCrLf & "[")
    '?Is this last section?
    If PosEndSection = 0 Then PosEndSection = Len(INIContents)+1
   
    'Separate section contents
    sContents = Mid(INIContents, PosSection, PosEndSection - PosSection)

    If InStr(1, sContents, vbCrLf & KeyName & "=", vbTextCompare)>0 Then
      Found = True
      'Separate value of a key.
      Value = SeparateField(sContents, vbCrLf & KeyName & "=", vbCrLf)
    End If
  End If
  If isempty(Found) Then Value = Default
  GetINIString = Value
End Function

'Separates one field between sStart And sEnd
Function SeparateField(ByVal sFrom, ByVal sStart, ByVal sEnd)
  Dim PosB: PosB = InStr(1, sFrom, sStart, 1)
  If PosB > 0 Then
    PosB = PosB + Len(sStart)
    Dim PosE: PosE = InStr(PosB, sFrom, sEnd, 1)
    If PosE = 0 Then PosE = InStr(PosB, sFrom, vbCrLf, 1)
    If PosE = 0 Then PosE = Len(sFrom) + 1
    SeparateField = Mid(sFrom, PosB, PosE - PosB)
  End If
End Function


'File functions
Function GetFile(ByVal FileName)
  Dim FS: Set FS = CreateObject("Scripting.FileSystemObject")
  'Go To windows folder If full path Not specified.
  If InStr(FileName, ":\") = 0 And Left (FileName,2)<>"\\" Then
    FileName = FS.GetSpecialFolder(0) & "\" & FileName
  End If
  On Error Resume Next

  GetFile = FS.OpenTextFile(FileName).ReadAll
End Function

Function WriteFile(ByVal FileName, ByVal Contents)
 
  Dim FS: Set FS = CreateObject("Scripting.FileSystemObject")
  'On Error Resume Next

  'Go To windows folder If full path Not specified.
  If InStr(FileName, ":\") = 0 And Left (FileName,2)<>"\\" Then
    FileName = FS.GetSpecialFolder(0) & "\" & FileName
  End If

  Dim OutStream: Set OutStream = FS.OpenTextFile(FileName, 2, True)
  OutStream.Write Contents
End Function
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger Business Relationship Manager

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Solution Manager til Cyberdivisionen