Editbox

Résolu
cs_valkyrie Messages postés 60 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 13 décembre 2004 - 17 nov. 2004 à 08:02
cs_valkyrie Messages postés 60 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 13 décembre 2004 - 19 nov. 2004 à 08:57
Bonjour a tous les gens

j ai une question docteur

j ai une fenetre avec plein d editboxes et j aimerais pouvoir sauvegarder les valeurs qu il y a a l interieur de ces editbox dans un fichier texte que je cree en meme temps.

deuxieme chose
ces editbox ont des valeurs par defaut...il faudrait lorsqu on les modifie qu elles restent identiques a la derniere modification lors de la prochaine reouverture du programme.....je ne sais pas si je suis clair....en fait je change la valeur et elle reste la meme a la prochaine reouverture....

pouvez vous m indiquer le chemin vers la liberation
merci pour votre aide sans laquelle mon radeau aurait deja coule... ;)
aimez vous les uns les autres

7 réponses

JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
18 nov. 2004 à 12:09
hello,

alors j'ai rebossé dessus, j'ouvre une form via une autre form, je sauvegarde le .ini a l'endroit désiré, et il charge (seul ou via un clik comme l'exemple) les données.

voici le nouveau fichier zip de source :
http://diabloporc.free.fr/delphi/valkyrie2.zip (avec .exe inclus pour test)

le code pour les 'pas-envie-de-dl' :D

la difference de code :
j'enregistre le chemin choisi (via un SaveDialog) ds un .ini, qd on charge, il ouvre ce ini, garde le chemin de L'AUTRE fichier ini, puis ouvre celui ci et charge les données.

Unit1.pas (la form qui nous interesse):
unit Unit1;

interface

uses
  inifiles, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    GroupBox1: TGroupBox;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    Label4: TLabel;
    Edit3: TEdit;
    Label3: TLabel;
    Edit4: TEdit;
    Label6: TLabel;
    Edit5: TEdit;
    GroupBox2: TGroupBox;
    Label5: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    SaveDialog: TSaveDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;
  pMonFichierIni: TMemIniFile;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 i: integer;
begin
 if not SaveDialog.Execute then exit;
 pMonFichierIni := TMemIniFile.Create(changefileext(application.ExeName,'.ini'));
 pMonFichierIni.WriteString('Sauvegarde','Chemin',SaveDialog.FileName); // je sauvegarde le chemin ds un fichier ini qui sera lu plus tard
 pMonFichierIni.UpdateFile;  // on mets a jour le fichier ini (sinon ça reste en MEMoire)
 pMonFichierIni.Free;
 pMonFichierIni := TMemIniFile.Create(SaveDialog.FileName); // creation du fichier ini
 for i:=0 to ComponentCount-1 do  // on fait une boucle qui va compter les composants
  begin
   if (Components[i] is TEdit) then  // on verifie qu'on est bien sur un tedit
    pMonFichierIni.WriteString('Valkyrie',(Components[i] as TEdit).name,(Components[i] as TEdit).text); // on ecrit dans le fichier ini
  end;
 pMonFichierIni.UpdateFile;  // on mets a jour le fichier ini (sinon ça reste en MEMoire)
 pMonFichierIni.free;
 if fileexists(SaveDialog.FileName) then showmessage('Configuration sauvegardée');
end;

procedure TForm1.Button2Click(Sender: TObject);
var
 Chemin: string;
 i: integer;
begin
 if not fileExists(changefileext(application.ExeName,'.ini')) then exit; // si ce fichier ini n'existe pas, on ne continue pas
 pMonFichierIni := TMemIniFile.Create(changefileext(application.ExeName,'.ini'));
 chemin := pMonFichierIni.ReadString('Sauvegarde','Chemin','c:\fichier.ini'); // je chch le chemin du l'autre fichier ini
 pMonFichierIni.Free;
 if not fileexists(chemin) then exit; // si le fichier ini contenant le chemin n'existe plus, on ne continue pas
 pMonFichierIni := TMemIniFile.Create(Chemin);
 for i:=0 to ComponentCount-1 do  // on fait une boucle qui va compter les composants
  begin
   if (Components[i] is TEdit) then  // on verifie qu'on est bien sur un tedit
    (Components[i] as TEdit).text := pMonFichierIni.ReadString('Valkyrie',(Components[i] as TEdit).name,''); // on lis depuis le fichier ini
  end;
 pMonFichierIni.free;
end;

end.


N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)

-------------------------------------------
http://diabloporc.free.fr : mon site refait ! Delphi power !
3
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
17 nov. 2004 à 11:43
hello,
voici ma soluce :

J'ai posé des labels et des TEdit (et non des EditBox), puis un button, quand je clic sur mon bouton, je sauvegarde, qd j'ouvre a nouveau le prog, les données sont celle de mon fichier.
j'ai utilisé un fichier ini.

voici le source :
http://diabloporc.free.fr/delphi/valkyrie.zip (avec .exe inclus pour test)

et le voici pour ceux ki ont la flemme :
unit Unit1;

interface

uses
  inifiles, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label6: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;
  pMonFichierIni: TMemIniFile;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 i: integer;
begin
 for i:=0 to ComponentCount-1 do  // on fait une boucle qui va compter les composants
  begin
   if (Components[i] is TEdit) then  // on verifie qu'on est bien sur un tedit
    pMonFichierIni.WriteString('Valkyrie',(Components[i] as TEdit).name,(Components[i] as TEdit).text); // on ecrit dans le fichier ini
  end;
 pMonFichierIni.UpdateFile;  // on mets a jour le fichier ini (sinon ça reste en MEMoire)
 if fileexists('fichier.ini') then showmessage('Configuration sauvegardée');
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 i: integer;
begin
 if fileExists('fichier.ini') then  // si le fichier ini existe ...
  begin                                // on charge ce qu'il contient
   for i:=0 to ComponentCount-1 do  // on fait une boucle qui va compter les composants
    begin
     if (Components[i] is TEdit) then  // on verifie qu'on est bien sur un tedit
      (Components[i] as TEdit).text := pMonFichierIni.ReadString('Valkyrie',(Components[i] as TEdit).name,''); // on lis depuis le fichier ini
    end;
  end;
end;

initialization;
 pMonFichierIni := TMemIniFile.Create('fichier.ini'); // creation du fichier ini

finalization;
 pMonFichierIni.Free; // liberation de la memoire allouée au fichier ini

end.


N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)

-------------------------------------------
http://diabloporc.free.fr : mon site refait ! Delphi power !
0
cs_valkyrie Messages postés 60 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 13 décembre 2004
18 nov. 2004 à 02:11
E-XCE-LLENT

alors la bravissimo!impressionne

Cependant est ce qu on peut ajouter une sauvegarde des labels et contenus des TEdit dans un fichier .txt sur le onclick du meme bouton?

merci bien tu m aide a ecope mon frele esquif sauve in extremis de la noyade
aimez vous les uns les autres
0
cs_valkyrie Messages postés 60 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 13 décembre 2004
18 nov. 2004 à 03:30
ARRGHH j ai essaye et ca ne marche pas ...
mais je dois preciser:
1/la form sur laquelle j ai mes tedit n est pas la form principale....j y accede en cliquant sur un boutton de la form principale justement

2/mes tedit sont dans des groupbox separees est ce que ca influe sur le resultat?ouest ce que c est autre chose?
j ai donc plusieurs tedit dans differentes groupbox
j ai essaye de mettre le boutton en dehors de toutes les groupbox et a l interieur mais toujours rien

si je met le boutton en dehors je n ai plus le message congiguration sauvegardee....

aie aie aie desole
aimez vous les uns les autres
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_valkyrie Messages postés 60 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 13 décembre 2004
18 nov. 2004 à 07:29
ok j ai eclairci mon pb desole julio de te harceler mais l avantage c est qu avec le decalage horaire j ai le temps de reflechir pendant le dodo des francais!

en fait dans le fichier ini il y a bien le bon enregistrement mais c est a la reouverture que les valeurs ne s affectent pas selon celles enregistrees....en gros a la reouverture ca n a pas pris en compte les parametres enregistres....

sinon question bete pour les bon:je veux copier mon fichier ini sous un autre nom dans un autre repertoire......comment kon fait dokteur?

aimez vous les uns les autres
0
cs_valkyrie Messages postés 60 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 13 décembre 2004
19 nov. 2004 à 08:32
Ok impec mais derniere petite question

c est dans ta deuxieme proc:

if not fileExists(changefileext(application.ExeName,'.ini')) then exit; // si ce fichier ini n'existe pas, on ne continue pas

...

je n ai pas mis application.ExeName mais un autre nom style'bidule'par exemple et le pb c est que bidule et le ini qui contient les donnees enregistrees sont dans le MEME repertoire et donc quand je clique sur charger il ne se passe rien car le soft cherche le premier ini dans le repertoire du projet(dans ton exemple mon bidule c est ton project et il est dans le repertoire de ton projet)

donc j imagine que c est a cause de ca que ca ne marche pas(deux ini dans le meme rep au lieu d un seul )

donc en fait si je ne veux pas appeler mon premier ini avec le nom de l application application.ExeName,'.ini' comment est ce que je peux faire??(en fait il y a un autre ini avec le nom de l appli je ne veux pas en faire un deuxieme ca va faire conflit je pense)

merci bien pour ta patience julio

aimez vous les uns les autres
0
cs_valkyrie Messages postés 60 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 13 décembre 2004
19 nov. 2004 à 08:57
ok je viens de realiser que dans le writestring la premiere chaine indique le nom entre crochet donc pas de conflit ca s additionne

excuse pour ma question bidon!!!
Bon bin voila je te remercie grandement Julio tu m a fait economiser mon budget antidepresseur!!

merci et bonne journee a toi!!

plus que jamias aimez vous les uns les autres
0
Rejoignez-nous