Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [VBNET05]classe StreamReader

    Ciao a tutti...
    ho bisogno di un aiutino

    Dim file As String

    With ofdDSN
    .Filter = "Text files (*.txt) | *.ini "
    .InitialDirectory = "C:\Windows\"
    End With

    ofdDSN.FileName = "C:\Windows\ODBC.ini"

    file = ofdDSN.FileName

    Dim objfile As StreamReader = New StreamReader(file)

    txtDSN.Text = objfile.ReadToEnd

    objfile.Close()
    objfile = Nothing


    con questo codice riesco tranquillamente ad aprire il file ODBC.INI...
    lo leggo nella prop text della textbox...

    ora devo estrapolare dalla stessa dei valori da salvare...
    vi posto l'esempio :
    [File di dBASE]
    Driver32=C:\WINDOWS\System32\odbcjt32.dll
    [micros]
    Driver32=C:\Sybase\SQL Anywhere 9\win32\dbodbc9.dll
    [microstest]
    Driver32=C:\Sybase\SQL Anywhere 9\win32\dbodbc9.dll

    ho bisogno appunto di estrapolare i dati in rosso senza però [ ] le quadre..e inserire
    i valori in una ComboBox...

    come posso fare?
    grazie e un saluto

  2. #2
    Perché non usi le normali API di gestione dei file INI?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    hai qualche dritta? non ne ho sentito parlare...

  4. #4
    Questa farebbe proprio al caso tuo:
    http://msdn.microsoft.com/library/en...asp?frame=true... ma bisogna lavorare con più null-terminated strings messe una in fila all'altra... temo che effettivamente sia più la fatica del guadagno.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    ho letto...
    è molto più versatile l'utilizzo in C++...

    aiutami un attimo a capire...
    alla fine devo solo estrapolare dei valori da un file che ho aperto tramite streamreader...

    aperto il file..dovrei creare un ciclo che mi conti le righe...
    dentro il ciclo devo mettere un controllo che quando trova [xxxx]
    una stringa con il formato esempio [test]
    lo prenda..tolga le [ ] e me lo schiaffi in una combobox...

  6. #6
    Ho scritto una soluzione funzionante con la funzione che ti ho citato:
    codice:
        Public Declare Ansi Function GetPrivateProfileSectionNames Lib "kernel32" Alias "GetPrivateProfileSectionNamesA" (ByVal lpszReturnBuffer As String, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
        Public Function GetINIFileSections(ByVal INIFile As String, Optional ByVal bufferSize As Integer = 16384) As String()
            Dim sb As New String(" "c, bufferSize)
            Dim ret As Integer
            ret = GetPrivateProfileSectionNames(sb, sb.Length, INIFile)
            Select Case ret
                Case 0
                    Throw New ArgumentException("Invalid INI file.", "INIFile")
                Case sb.Length - 2
                    Throw New ArgumentException("The buffer is too small.", "bufferSize")
            End Select
            sb = sb.TrimEnd(" "c).TrimEnd(ControlChars.NullChar)
            Return sb.Split(ControlChars.NullChar)
        End Function
    La funzione GetINIFileSections restituisce i nomi delle sezioni del file INI in un array di stringhe. Il nome (ed eventualmente il percorso) del file INI viene passato tramite il parametro INIFile, mentre la dimensione del buffer tramite il parametro bufferSize; quest'ultimo parametro è opzionale e la dimensione di default (16 KB) mi pare più che sufficiente per la maggior parte degli impieghi normali; in ogni caso puoi sempre passare un valore più grande (o più piccolo) specificando il parametro in questione. La funzione può sollevare due ArgumentException, una che informa che il file INI non è valido o non esiste, l'altra che notifica che il buffer non è sufficientemente grande. Possono essere distinte in un blocco Try...Catch dalla proprietà ParamName, che per la prima è "INIFile" e per la seconda "bufferSize".

    Ah, dimenticavo... un esempio:
    codice:
        Sub Main()
            Dim strArr() As String
            Try
                strArr = GetINIFileSections("win.ini")
            Catch ex As ArgumentException When ex.ParamName = "INIFile"
                Console.WriteLine("File INI non valido o non esistente.")
                Return
            Catch ex As ArgumentException When ex.ParamName = "bufferSize"
                Console.WriteLine("Buffer insufficiente.")
                Return
            End Try
            For Each str As String In strArr
                Console.WriteLine(str)
            Next
            Console.ReadLine()
        End Sub
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Lo Trayo subito!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.