[Delphi]Writeln etc.. :(

Writeln etc.. :( [Delphi] - Programmation

Marsh Posté le 03-07-2002 à 01:40:05    

je veux écrire dans un fichier le contenue d'un Edit1 ,pour cela, je fais ça :
 
[pascal]
procedure TestEcriture(nomfichier:string);
var
  F: TextFile;
  Edit1: TEdit;
  begin
  AssignFile(F,nomfichier);
  Rewrite(F);
  Writeln(F,Edit1.text);  
  CloseFile(F);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
TestEcriture('c:\test.txt';)
end;
[/pascal]
 
Le programme se lance tranquillement, je clique sur "button2",j'ouvre mon fichier test.txt, et la je vois "button2" , au lieu de ce que j'ai écris dans l'édit1. :(


Message édité par tssstare le 03-07-2002 à 01:59:37
Reply

Marsh Posté le 03-07-2002 à 01:40:05   

Reply

Marsh Posté le 03-07-2002 à 01:47:02    

a mon avis ca ecrit rien et ca te fais un gros plantage vu que tu declares une Edit1 en local , que tu ne le crees pas et que tu essayes apres de l'utiliser !
[pascal]procedure TestEcriture(nomfichier:string);  
var  
 [...]
 Edit1: TEdit;  
begin  
 [...]
 Writeln(F,Edit1.text);  
 [...]
end;[/pascal]


Message édité par JWhy le 03-07-2002 à 01:47:32

---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 03-07-2002 à 01:55:42    

j'ai remodifié un peu:
cette fois le fichier text est vide et le texte "button2" n'apparaît plus...  
 
[pascal]
var
  Form1: TForm1;
  Edit1: TEdit;
  memo: string;
 
implementation
 
{$R *.dfm}
 
procedure TestEcriture(nomfichier:string);
var
  F: TextFile;
 
  begin
  memo := Edit1.text;
  AssignFile(F,nomfichier);
  Rewrite(F);
  Writeln(F,memo);
  CloseFile(F);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
TestEcriture('c:\test.txt';)
end;
 
end.
[/pascal]


Message édité par tssstare le 03-07-2002 à 01:57:27
Reply

Marsh Posté le 03-07-2002 à 02:36:46    

euh... ca devrait planter encore une fois...
 
ta procedure TestEcriture n'est pas une methode de TForm1 et donc ne "connait" pas le Edit1 que tu as posé sur ta Form.
 
ta procedure TestEcriture utilise donc le Edit1 que tu as déclaré en variable globale et qui, encore une fois, n'a pas été créé .
 
Si tu veux utiliser le Edit1 de ta form et non celui que tu redeclare, il faut que TestEcriture soit une methode de Form1
 
[pascal]
  TForm1 = class(TForm)
    Button2: TButton;
    Edit1: TEdit;
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    procedure TestEcriture(nomfichier:string);
  public
    { Public declarations }
  end;
 
procedure TForm1.TestEcriture(nomfichier:string);
[...]
[/pascal]


Message édité par JWhy le 03-07-2002 à 02:37:55

---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 03-07-2002 à 09:41:02    

ou alors en garde le même style de fonction que ce que tu avais fait :
 
Writeln(F, Form1.Edit1.Text);
 
(sans redéclarer Edit1 dans la fonction, puisque ça ne sert à rien)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed