Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    [Delphi] Usare un file di configurazione .INI: come?

    ciao gente,
    mi era venuta una curiosità:
    i file INI possono essere usati come files di configurazione del programma.

    mi pare di aver capito che se un programma deve memorizzare delle informazioni le scrive sul file .ini e all'avvio successivo, leggendolo le riporta allo stato corretto in accordanza con quanto scritto nel file... è vero?

    allora mi chiedevo:
    con delphi come leggo le informazioni e le rendo condizioni sul programma?

    avevo pensato una cosa del genere:
    codice:
    type TipoInI=array[1..10] of string;
    ...
    procedure Form.OnFormCreate(parametri);
    var f:textfile;
        valori: TipoINI;
        i:integer;
    begin
      i:=0;
      assignfile(f,'file.ini');
      reset(f);
      while not (eof(f)) do
       begin
         read(f,valori[i]);
         readln(f);
         i:=i+1;
       end;
    poi però non so come associare il valore dell'ini all'impostazione deel controllo nel programma.

    visto che immagino un ini scritto tipo:

    [Trasparenza Controlli]
    MainForm=1;
    Dialogs=0;

    [Checkbox]
    Checkbox1=1;

    volevo fare una cosa tipo:
    codice:
    procedure onformcreate(parametri);
    ...
      if (checkbox1=1) then
       CheckMio.Checked=true
    ...
    solo che non so se le due ipotesi sono raccordabili ne se si può fare come ho fatto...

    attendo VS risposte.

    ciao e grazie.

  2. #2
    codice:
    procedure TfrmOpt.FormActivate(Sender: TObject);
    var
    Ini: TIniFile;
    begin
      Ini := TIniFile.Create( ChangeFileExt( Application.ExeName, '.INI' ) );
      try
        Edit1.Text     := Ini.ReadString('Mail', 'Server', '');
        Edit2.Text     := Ini.ReadString('Mail', 'User', '');
        Edit3.Text     := Ini.ReadString('Mail', 'Paswd', '');
      finally
        Ini.Free;
      end;
    end;
    
    procedure TfrmOpt.Button1Click(Sender: TObject);
    var
    Ini: TIniFile;
    begin
    Ini := TIniFile.Create( ChangeFileExt( Application.ExeName, '.INI' ) );
      try
        Ini.WriteString( 'Mail', 'Server', Edit1.Text );
        Ini.WriteString( 'Mail', 'User', Edit2.Text );
        Ini.WriteString( 'Mail', 'Paswd', Edit3.Text );
      finally
        Ini.Free;
      end;
    
    end;
    
    end.
    Prendi spunto da questo mio stralcio
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  3. #3
    grazie.

    posso chiederti un altro paio di cose?
    il codice
    codice:
    Ini.ReadString('Mail', 'Server', '');
    vuol dire che:
    dalla sezione MAIL, leggi il valore di default impostato per SERVER
    vero?

    quindi in un ipotetico programma, all'avvio del form
    il controllo
    EDIT1 visualizzerebbe una cosa tipo NOME SERVER
    EDIT2 NOME UTENTE
    EDIT3 PWORD
    vero?

    ed al click del pulsante le impostazioni di cui sopra vengono salvate nello stesso file ini vero?

    ma è più veloce come sistema impostare le caratteristiche di un componente via INI oppure via codice?
    cioè se un componente deve ad esempio essere transparent, è melgio impostare la cosa a true via codice ad esempio su FormCreate oppure è meglio farlo via iNI?
    (anche a proposito di dimensione dell'exe)
    grazie e

  4. #4
    ho provato a smanettare un pò con gli ini e sono riuscito a fare tutto quello che volevo.
    l'uunico fatto è che se non avessi messo una stringa all'inizio del codice del tipo:

    codice:
    ini:=TINIFile.Create(ExtractFilePath(Application.EXEName) + 'MIOINI.ini');
    avrei continuato a ricevere un messaggio di Access Violation

    mi sapresti dire se l'avvio del programma è più veloce se devo leggere le impostazioni da file piuttosto che da codice?

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Per una trattazione completa dei file INI, puoi leggerti un intero articolo che ho scritto io stesso a questo indirizzo:
    http://www.programmazione.it/index.p...e=719&idArea=7.

    Per quanto riguarda la velocità dell'esecuzione, è ovvio che sia più rapido impostare una proprietà tramite valori espliciti piuttosto che caricare questi ultimi da un file esterno (c'è l'interazione con il file esterno che si aggiunge)...però non mi farei troppe "pippe" mentali sulla velocità di esecuzione che mi sembra un aspetto totalmente trascurabile in questo caso: non stiamo parlando di un'applicazione in tempo reale per la gestione del sistema di sicurezza di una centrale nucleare.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    grazie alka.

    ora il sito è down e non riesco ad entrare, appena potrò bitterò un occhio.

    visto che progrgammi da un sacco di tempo, secondo te è conveniente usare un INI per impostare certe proprietà oppure è meglio lasciare tutto su codice?
    se non a livello di velocità di applicazione, mi chiedevo se potesse servire per snellire le dimensioni dellìexe capisci?



    PS:
    non stiamo parlando di un'applicazione in tempo reale per la gestione del sistema di sicurezza di una centrale nucleare.
    :quote: :gren: (rido!)

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Originariamente inviato da Lyll0
    visto che progrgammi da un sacco di tempo, secondo te è conveniente usare un INI per impostare certe proprietà oppure è meglio lasciare tutto su codice?
    Non è questione di "meglio" o "peggio": i file INI sono utili quando si vogliono rendere configurabili alcune opzioni all'utente finale e pertanto serve un supporto di memorizzazione esterno (come il Registro di Configurazione) per contenere i valori delle impostazioni. La loro utilità si ferma lì.

    Originariamente inviato da Lyll0
    se non a livello di velocità di applicazione, mi chiedevo se potesse servire per snellire le dimensioni dellìexe capisci?
    L'aumento delle dimensioni con l'uso di file INI o meno è irrilevante; ad ogni modo, è difficile che l'eseguibile diventi più snello se si aggiunge ad esso codice che carica da un file INI diverse impostazioni, senza considerare che è una complicazione in più.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Il sito di Programmazione.it sembra essere giù; in alternativa, l'articolo sui file INI è stato pubblicato anche sul sito DevSpy.com.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    L'aumento delle dimensioni con l'uso di file INI o meno è irrilevante; ad ogni modo, è difficile che l'eseguibile diventi più snello se si aggiunge ad esso codice che carica da un file INI diverse impostazioni, senza considerare che è una complicazione in più.
    giusto.
    non stavo pensando a tutte le istruzioni che dovrei cmq dare al codice per fare caricare le impostazioni dal file INI

    grazie

  10. #10
    complimenti per l'articolo.

    l'ho appena letto sul sito DEVSPY ed è veramente chiaro ed esaustivo per un niubbo come me!

    laddove dovessi salvare qualche informazione in più sul file ini mi riferirò all'articolo per delucidazioni sulla lettura delle intere sezioni! (ReadSection insomma)
    (sulla guida c'è qualche cosa, ma gli esempi di codice che tu riporti dalla guida stessa hanno il vantaggio di essere commentati e dunque di più facile riutilizzo)

    PS: tanto per parlarne, visto che sempre di programmazione si parla, qualcuno vocifera sulla comodità di salvare le impostazioni addirittura su file XML... ma altri dicono che sia sconveniente perchè la potenza di XML sta nella capacità di scambiare informazioni e non di memorizzarle: sarebbe uno spreco..
    era così tanto per dire!

    ciao e grazie


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.