Newsgroup: it.comp.lang.visual-basic
Titolo: File di configurazione!!!!

Ecco Velocemente il Mio Problema,
  devo creare un file di configurazione per un'applicazione per poterla
pesonalizare e in modo che tale personalizzazione permanga alle chiusure e
riavvii ho scritto questo codice:
Const ForReading = 1, ForWriting = 2, ForAppending = 3
Dim fs, cfgFile
Set fs = CreateObject("Scripting.FileSystemObject")
Set cfgFile = fs.OpenTextFile("c:\MatrixControl.cfg", ForReading, True,
TristateFalse)
Do While cfgFile.AtEndOfStream <> True
    LineReaded = cfgFile.ReadLine
    If LineReaded = "[Numero Pulsanti]" Then  --- e qui mi trova la riga
riguardante il dato che devo memorizzare
posizionandosi subito sotto (almeno la documentazione così dice)
       Exit Do
    End If
Loop
cfgFile.WriteLine (ValoreCheDevoMemorizzare) ----Il Problema sorge qui,
poichè il file è stato aperto per lettura e non per
scrittura, ma se chiudo il file e riapro per scrittura perdo la posizione
che ho cercato col ciclo do while!
cfgFile.Close
Qualcuno ha qualche soluzione o qualche metodo diverso? Inoltre vorrei
sapere se quando si posiziona nella riga e scrivo, come posso fare per
aggiungerne una sotto/sopra per evitare che venga sovrascritta?
Grazie per L'aiuto!

Grazie per L'aiuto!
La mia soluzione non è sicuramente la migliore dal punto di vista
dello "sfuttamento delle risorse" ma io per creare dei file di
configurazione creo un database "configurazione.mdb" e all'interno ci
metto, nella maggior parte dei casi una sola tabella,
"configurazione".
In questo modo evito di dover andare a trovare righe precise in un
ipotetico file txt di configurazione e cose simili.
Ciao.

    Public 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
    Public 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
Public Function xLeggiFileINI(ByVal FileName As String, ByVal Sezione As
String, ByVal Voce As String, ByVal ValoreDefault As String) As String
    '--funzione che legge una voce dal file .INI
    Dim risp As Long
    Dim vDefault As String
    Dim Valore As String
    Dim Chiave As String
    vDefault = ValoreDefault
    Valore = Space(144)
    risp = GetPrivateProfileString(Default, Voce, vDefault, Valore,
Len(Valore), FileName)
    xLeggiFileINI = Trim(Valore)
End Function
ora per la scrittura fa una funzione o routine vedi tu simile a cui passi le
voci
al suo interno c'e' ad esempio
    Dim risp As Long
    risp = WritePrivateProfileString("PERCORSI", "ARCHIVIO",
Percorsi.DBLavoro, "COMMESSE.INI")
ps.
le voci che ho messo in writeprivateprofilestring sono fasulle ok??!
CIAUZ

 Set fs = CreateObject("Scripting.FileSystemObject")
Ecco un pessimo punto di partenza per lavorare con i file!
VB mette a disposizione tante belle funzioncine più appropriate per
leggere/scrivere i files.
Usa quelle!
Ciao

 ha scritto nel messaggio
news:3c628e3d$1...@news.cis.it...

Perchè cos'hai contro l'FSO????
Leggi questo thread:
http://groups.google.com/groups?threadm=zyhG6.7597$sb5.8...@news.infostrad
a.it
Ciao
--
Timothy Redaelli

  i files. Usa quelle!
A parte il problema che è (a parte alcuni casi) decisamente
trascurabile, di dover utilizzare un componente in più, perché
ritieni più appropriate le funzioni del VB? Sinceramente mi paiono
qualcosa di veramente osceno...
Ciao.
--
BSD is for UNIX-lovers -- linux is for Windows-haters.

 Perchè cos'hai contro l'FSO????
il File System Object è praticamente indispensabile per scrivere i virus in
VBScript tipo "I Love You", quindi è buona norma tenerlo sempre disabilitato
sulle macchine degli utenti. Se puoi evitare di usarlo, fai un favore a
tutti, e ti assicuri che il tuo programma giri anche in ambiti "corporate"
dove i livelli di protezione degli utenti sono alti.
Prova a dare una occhiata a questo esempietto:
http://groups.google.com/groups?q=disable+fso+virus&hl=it&selm=92u3fb%243eu%
241%
40nnrp1.deja.com
&rnum=8
Ciao
*Roby*

 Perchè cos'hai contro l'FSO????
Es.: Prova a scrivere un file binario col FSO.
Ciao

 qualcosa di veramente osceno...
Un'altro esempio: prova a gestire i lock di file con il FSO.
E poi... saranno meglio le funzioni delphi!
Ciao

 E poi... saranno meglio le funzioni delphi!
Sinceramente non ne ho la minima idea, non conosco affatto Delphi...


 cosa migliore è una classe che incapsuli qualche chiamata all'API di
ehmmm io credo di non aver afferrato.
classi, non classi... se e' un file contenente info organizzate
a sezioni (mi sembra di aver capito questo) la cosa +
comoda che ci sia e' l'ini... no?
due chiamate e fa tutto... anche creare le voci che non ci sono.
boh.

 Qualcuno ha qualche soluzione o qualche metodo diverso? Inoltre vorrei
premetto è solo un approccio diverso ... potrebbe essere quello di usare le
funzioni di vb : savesetting, getsetting, deletesetting
varDiRitorno = GetSetting(appname, section, key[, default])
SaveSetting appname, section, key, setting
DeleteSetting appname, section[, key]
in questa maniera non usi nessun file e salvi le voci in chiavi del registro
riservate solo alla tua applicazione.
x l'utilizzo guarda un po la guida...
io lo avevo trovato nel codice di un tetris (carino) :-)) che avevo
scaricato non mi ricordo dove...
bye by luigi

 che ci sia e' l'ini... no?
Direi che l'XML in questo caso è meglio.


 BSD is for UNIX-lovers -- linux is for Windows-haters.
:)
non hai tutti i torti...
bsd mi spaventa solo a vedere il cd pero'! meglio qualche
distro spartatana ma stile sysV per uno come me.
--
[ Penguin At Work ]
-> 
http://web.tiscali.it/penguinatwork/
-> aka Fustino Di Dixan while working

 bsd mi spaventa solo a vedere il cd pero'!
Non ti far spaventare ;-)
Quando l'ho affrontato per la prima volta (con FreeBSD), dopo
numerosi problematici (e falliti) tentativi di utilizzare linux,
nonostante fossi già prevenuto in partenza, mi ci sono affiatato
subito alla perfezione.
Ciao.
--
