Avatar billede jens_bach Nybegynder
16. juni 2005 - 22:20 Der er 18 kommentarer og
1 løsning

Læs text fil.

Hej...

lige et til

jeg har en fil som ser sådan ud
-------------------------
#ini fil til program
[local]
Server=127.0.0.1
password=alkdjf

[remote]
server=5.5.5.5
side=svar.asp

[test]
val1=10.0.0.1
val2=10.0.0.10
--------------------

jeg vil gerne have verdierne så jeg kan læse dem i 3 areas
så remote.server="5.5.5.5" og fx test.va1="10.0.0.1"
Avatar billede jens_bach Nybegynder
16. juni 2005 - 22:28 #1
den er nok lidt mere vær end 30 point, 100 må kunne gøre det. :)
Avatar billede arne_v Ekspert
16. juni 2005 - 22:31 #2
sjov kombo - INI fil (Win16) i VB.NET (.NET)

du kan enten selv læse filen og parse den (StringReader ReadLine, String Split etc.)
eller du kan kalde de Win32 API funktioner som gør det

et par links:

http://www.experts-exchange.com/Programming/Q_21091756.html

http://www.codeproject.com/vb/net/VbNetClassIniFile.asp
Avatar billede arne_v Ekspert
16. juni 2005 - 22:32 #3
hvis du fortæller om du er til special parse elle rtil Win32 API så vil jeg
godt lave et eksempel
Avatar billede jens_bach Nybegynder
16. juni 2005 - 22:39 #4
det er nok til en win32 API.... takker og buker :)
Avatar billede jens_bach Nybegynder
16. juni 2005 - 22:41 #5
jeg er nok ikke den beste ko på isen når det gæller vb, og alt andet ;) hmmm programmering
Avatar billede arne_v Ekspert
16. juni 2005 - 22:42 #6
jeg prøver at bixe noget
Avatar billede arne_v Ekspert
16. juni 2005 - 22:53 #7
her kommer det:

Imports System
Imports System.Text

Public Class IniFileSupport
    Private Declare Ansi Function GetPrivateProfileString _
          Lib "kernel32.dll" Alias "GetPrivateProfileStringA" _
          (ByVal lpApplicationName As String, _
          ByVal lpKeyName As String, ByVal lpDefault As String, _
          ByVal lpReturnedString As System.Text.StringBuilder, _
          ByVal nSize As Integer, ByVal lpFileName As String) _
          As Integer
    Public Shared Function GetString(fnm As String, section As String, key As String) As String
          Dim sb As StringBuilder = New StringBuilder
          GetPrivateProfileString(section, key, "*", sb, 100, fnm)
          GetString = sb.ToString
    End Function
End Class

Module Main
    Sub Main()
        Console.WriteLine(IniFileSupport.GetString("C:\test.ini", "local", "server"))
    End Sub
End Module
Avatar billede arne_v Ekspert
16. juni 2005 - 22:54 #8
den der fjollede stjerne er en default value

i virkeligheden behøver du slet ikke den wrapper klasse da GetPrivateProfileString
kan kaldes direkte med næsten de samme argumenter - jeg synes dog at det måske
er lidt nemmere med den
Avatar billede arne_v Ekspert
16. juni 2005 - 22:54 #9
og et svar
Avatar billede arne_v Ekspert
16. juni 2005 - 22:56 #10
du har sikkert god grund til at bruge INI fil men ellers er det:

DOS  : binær config fil
Win16 : INI fil
Win32 : registry
.NET  : XML config fil
Avatar billede jens_bach Nybegynder
16. juni 2005 - 23:04 #11
grunde er at det er nemt :) og næsten til og overskue....
Avatar billede arne_v Ekspert
16. juni 2005 - 23:09 #12
skulle jeg lave et eksempel med "the .NET way" ?
Avatar billede arne_v Ekspert
16. juni 2005 - 23:51 #13
du får den anyway
Avatar billede arne_v Ekspert
16. juni 2005 - 23:52 #14
hvis din EXE hedder Foobar.exe så laver du en Foobar.exe.config i samme dir med:

<?xml version="1.0"?>
<configuration>
    <configSections>
        <section name="local" type="System.Configuration.DictionarySectionHandler"/>
        <section name="remote" type="System.Configuration.DictionarySectionHandler"/>
        <section name="test" type="System.Configuration.DictionarySectionHandler"/>
    </configSections>
    <local>
        <add key="Server" value="127.0.0.1"/>
        <add key="password" value="alkdjf"/>
    </local>
    <remote>
        <add key="server" value="5.5.5.5"/>
        <add key="side" value="svar.asp"/>
    </remote>
    <test>
        <add key="val1" value="10.0.0.1"/>
        <add key="val2" value="10.0.0.10"/>
    </test>
</configuration>

og så kan du hente konfig info som:

Imports System
Imports System.Collections
Imports System.Configuration

Module Main
    Sub Main()
        Dim local As IDictionary = CType(ConfigurationSettings.GetConfig("local"),IDictionary)
        Console.WriteLine(local("Server"))
    End Sub
End Module
Avatar billede jens_bach Nybegynder
17. juni 2005 - 00:01 #15
hvor skal man kave om hvis man nu vil bruge filen c:\conf.xlm
Avatar billede jens_bach Nybegynder
17. juni 2005 - 00:02 #16
xml
Avatar billede arne_v Ekspert
17. juni 2005 - 00:12 #17
det tror jeg faktisk ikke er nemt

det bygger på en "installation med XCOPY" filosofi, hvor alt ligger i samme directory
Avatar billede jens_bach Nybegynder
17. juni 2005 - 00:19 #18
det er også ok men hvorfor kan jeg ikke få det til og køre, ved minder jeg Build'er programmet
Avatar billede jens_bach Nybegynder
17. juni 2005 - 00:20 #19
fant selv us af det :) der ligger en fil app.config
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