Newsgroup: it.comp.lang.visual-basic
Titolo: Dove sbaglio?? (spero sia semplice)

Ragazzi, dove sbaglio??
Premetto che non sono espertissimo di gestione di file di testo e voglio
imparare qualcosa.
Ho un file .ini contenente un valore (per esempio la cifra 12) e devo
semplicemente inserire questo valore in una variabile.
Il file ini contiene solo ed esclusivamente quel valore, a inizio pagina
(non ci sono altri caratteri: nè spazi, nè tab, nè invii).
io ho scritto le seguenti operazioni ma nessuna delle 2 funziona (per motivi
diversi)
soluzione 1)
    handle = Freefile
    Open App.Path & "\numero.ini" For Output As #handle
        Get #handle, , valore
    Close #handle
questa non funziona perchè mi genera il messaggio di errore "modalità file
non valida"
-----
soluzione 2)
    handle = Freefile
    Open App.Path & "\numero.ini" For Random As #handle
        Get #handle, , valore
    Close #handle
questa mi genera un valore totalmente casuale e quindi inutilizzabile
COME DIAVOLO SI FA???
Grazie mille!
Luca

     Close #handle
Se precedentemente hai scritto nel file cosi:
handle = Freefile
Open App.Path & "\numero.ini" For Output As #handle
Print#handle, valore
Close #handle
allora per leggerlo
handle = Freefile
Open App.Path & "\numero.ini" For Input As #handle
Input#handle, valore
Close #handle
_____________________________________________
James Tiberius Kirk, matricola SC 937-076 CEC
  Nato a Riverside, nello Iowa, USA, Terra
            il 1277.1 (26/03/2233)

 ha scritto

_se_ e' il tipico .ini di win3
ci dovrebbe essere qc, forse una classe, sul sito comune:
www.it-lang-vb.net
seno', se vuoi dare un'occhiata
gli .ini avevo provato a gestirli nel mio primo prog
palarm, coi sorgenti:
http://www.comune.modena.it/cittadini/apal
ciao, a.

 questa mi genera un valore totalmente casuale e quindi inutilizzabile
casuale ? :)
nello specifico la voce Random non sta per casuale ma per "diretto"
in pratica si puo' utilizzare per leggere file di testo con record a
lunghezza
fissa, pero' devi anche specificare quanto sia lungo il record..
Ciao
Enrico

Ci sono due API specifiche: una per leggere il file e l'altra per scriverlo.
Ti allego sotto tutto il codice necessario:
Questo lo metti tutto in un modulo:
'------------------------------------------------------------------------
'--- Chiamate routines di lettura e scrittura file .INI
'------------------------------------------------------------------------
Declare Function GetPrivateProfileString Lib "Kernel32" Alias
"GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal
lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As
String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Declare Function WritePrivateProfileString Lib "Kernel32" Alias
"WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal
lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
'------------------------------------------------------------------------
'--- Variabili di ambiente da file GABV.INI
'------------------------------------------------------------------------
'[GABV]
Global PathMDB
Global SplashScreen
'------------------------------------------------------------------------
Sub Main()
   Call File_INI_Carica
   frmLogin.Show 1
   If Not LoginSucceeded Then
      End
   End If
   If SplashScreen = 1 Then
      frmSplash.Show
   End If
   MDIGabv.Show
End Sub
'------------------------------------------------------------------------
'------------------------------------------------------------------------
'------------------------------------------------------------------------
'------------------------------------------------------------------------
'------------------------------------------------------------------------
'------------------------------------------------------------------------
'------------------------------------------------------------------------
'------------------------------------------------------------------------
Private Sub File_INI_Carica()
   Dim sezione As String
   Dim chiave As String
   Dim ritorno As String
   '-----------------------------------------------
   '--- Lettura file .INI
   '-----------------------------------------------
   sezione = "GABV"
   chiave = "PathMDB"
   ritorno = File_INI_Leggi(sezione, chiave)
   PathMDB = ritorno
   chiave = "SplashScreen"
   ritorno = File_INI_Leggi(sezione, chiave)
   SplashScreen = ritorno
   chiave = "License"
   ritorno = File_INI_Leggi(sezione, chiave)
   License = ritorno
   chiave = "CategIN"
   ritorno = File_INI_Leggi(sezione, chiave)
   CategIN = ritorno
   If CategIN = "Parametro non trovato" Then
      sezione = "GABV"
      chiave = "CategIN"
      ritorno = File_INI_Scrivi(sezione, chiave, "Y")
      CategIN = "Y"
   End If
   chiave = "CategOUT"
   ritorno = File_INI_Leggi(sezione, chiave)
   CategOUT = ritorno
   If CategOUT = "Parametro non trovato" Then
      sezione = "GABV"
      chiave = "CategOUT"
      ritorno = File_INI_Scrivi(sezione, chiave, "Z")
      CategOUT = "Z"
   End If
End Sub
Private Function File_INI_Leggi(sezione As String, chiave As String)
   Dim ritorno As String, funzione As Integer
   ritorno = String$(255, 0)
   funzione = GetPrivateProfileString(sezione, chiave, "", ritorno,
Len(ritorno), App.Path & "\" & "GABV.INI")
   If funzione = 0 Then
       File_INI_Leggi = "Parametro non trovato"
   Else
       File_INI_Leggi = Left(ritorno, funzione)
   End If
End Function
Private Function File_INI_Scrivi%(sezione As String, chiave As String,
valore As String)
   Dim X As Integer
   X% = WritePrivateProfileString(sezione, chiave, valore, App.Path & "\" &
"GABV.INI")
End Function
E questo č il contenuto del file GABV.INI
[GABV]
PathMDB=G:\SviluppoVB\AAAVecchiFiniti\Gabv\
SplashScreen=1
License=DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
DDDDD
CategIN=Y
CategOUT=Z
Ciao  a presto
Stephen