Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    49

    [VB6] Salvataggio impostazioni: modificare il codice o servirsi di un file esterno?

    Salve,
    ho creato un programma che consente di visualizzare dei dati. L'unità di misura di partenza utilizzata per rappresentare i dati viene definita in fase di programmazione (in fase di scrittura del codice). L'utente tuttavia ha la possiblità di selezionare una differente l'unità di misura.

    Vorrei che, una volta effettuata la scelta riguardo quale unità di musiura utilizzare, questa venga "ricordata" per sempre in modo tale che riavviando il programma l'unità di misura di partenza non sia più quella definita in fase di programmazione ma quella scelta dall'utente.

    La mia domanda, forse banale, è la seguente: posso far si che la scelta effettuata dall'utente vada a modificare direttamente il codice o, per poter "ricordare" la scelta, mi devo per forza servire di un file di testo (es.: settings.txt) che venga scritto nel momento in cui la scelta viene effettuata e venga letto all'avvio del programma?
    La possiblità di modificare direttamente il codice, se possibile, la preferirei in quanto non vincolerebbe il programma ad un file esterno.
    Grazie!

  2. #2
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Dovresti usare Config.ini per salvare le impostazioni e fare in modo che al riavvio del prog. queste siano riproposte. Se vuoi ti posto un esempio.
    Ciao.
    LM

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    49
    Quindi è impossibile modificare direttamente il codice.
    Se fornissi un'esempio te ne sarei grato.
    Ciao!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da 08arco80
    Quindi è impossibile modificare direttamente il codice.
    No ... niente modifiche del codice ... e' vietato, non raccomandato, ogni tentativo del genere e' visto come una azione da "malware" ...

    Usa un file di configurazione o il registro.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Fai così, per la prova inserisci sulla Frm una Txt e poi copia nel modulo della Frm:
    codice:
    Option Explicit
    Private Const NOMEFILEINI As String = "Config.ini"
    Private Const NOMESEZIONE As String = "Main"
    ' Testo da modificare, ad esempio: "Percorso cartella DATI"
    Private Const NOMEITEM As String = "Percorso cartella DATI"
    Private Const MSG_IMPOSTAZIONIVUOTE As String = "(vuoto)"
    '-------------------------------------------------------
    Private Sub Form_Load()
        
        ' La Frm si avvia e
        ' carica le impostazioni salvate in precedenza nel config.ini:
        
        Dim strTesto As String
        'recupera info dal file ini:
        strTesto = INIRead(NOMEFILEINI, NOMESEZIONE, NOMEITEM)
        'controlla la risposta:
        If strTesto = vbNullString Then
            'è probabilmente la prima vola che si fa partire il prg:
            Text1.Text = MSG_IMPOSTAZIONIVUOTE
        Else
            'riporta le info trovate:
            Text1.Text = strTesto
        End If
    
    End Sub
    '-------------------------------------------------------
    Private Sub Form_Unload(Cancel As Integer)
    
        ' il form viene chiuso - vengono salvate le info
        ' inserite in text1.text sul file config.ini:
    
        If Text1.Text <> MSG_IMPOSTAZIONIVUOTE Then
            'ok: sono state fatte delle variazioni: le scrive su config.ini
            INIWrite NOMEFILEINI, NOMESEZIONE, NOMEITEM, Text1.Text
        Else
            'sollecito se non è stato fatto nulla:
            If MsgBox("Modifica prima il testo nella casella...", vbInformation + vbOKOnly, "Aspetta") Then
            End If
            'non permette la chiusura della frm:
            Cancel = True
        End If
    End Sub
    LM

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Mi sembra che manchi il codice di INIRead e INIWrite ...

    In ogni caso, dato che i dati da salvare sono pochi, mi sembra che sia meglio usare

    SaveSetting

    GetSetting
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Oregon hai ragione, mi hanno distratto e mi sono dovuto alzare dalla postazione; quindi in un modulo Bas inserisci:
    codice:
    Option Explicit
    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
    
    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 Function INIRead(File As String, Section As String, _
            Item As String) As String
        
        Dim sBuf As String, iRC As Integer
        sBuf = Space(255)
        iRC = GetPrivateProfileString(Section, Item, "Not Found", sBuf, 255, App.Path + "/" + File)
        sBuf = Left$(sBuf, iRC)
        If StrComp(sBuf, "Not Found") = 0 Then
            INIRead = vbNullString
        Else
            INIRead = sBuf
        End If
    
    End Function
    '--------------------------------------------------------------
    Public Sub INIWrite(File As String, Section As String, _
               Item As String, ItemValue As String)
        
        WritePrivateProfileString Section, Item, ItemValue, App.Path + "/" + File
    
    End Sub
    Il codice l'ho provato e funziona.
    Ciao e buon lavoro !
    LM

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    49
    Molto grato.
    A presto

  9. #9
    Sono profano di vb e pertanto chiedo scusa se la domanda risulterà banale...

    Sto imparando da poco a programmare in .NET, con visual studio 2008 non so come creare il modulo sopracitato.

    Qualcuno potrebbe darmi una dritta o una spiegazione più approfondita?


    Se può aiutare il lavoro che sto svolgendo tratta di un programma che faccia una semplice copia di file a scopo di backup su supporti esterni tramite comunicazione simil Wi-Fi. Il problema è quello di memorizzare l'elenco dei dati da copiare da qualche parte per durante i successivi avvii del programma.

    Come posso risolvere il problema???

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    1) E' inutile riprendere vecchi thread

    2) Questo e' per VB6 (come puoi leggere nel titolo) mentre tu usi VB.NET

    3) .NET ha altri meccanismi per il salvataggio dei dati di configurazione ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.