ashron54
Messages postés39Date d'inscriptionmardi 19 mai 2009StatutMembreDernière intervention26 juin 2009
-
10 juin 2009 à 09:35
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
11 juin 2009 à 14:18
Bonjour,
Voila j'ai un petit problème avec mon programme, en faite quand je fais un Wrtieln dans un fichier texte ou autre, il m'écrit 2fois le message que je voudrais, systématiquement.
Alors je cherche à supprimer une de ces 2 lignes à chaque fois, ou bien si vous avez une solution à mon problème je suis preneur :)
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 10 juin 2009 à 10:15
La ligne "Memo1.Lines[0] := '';" fait elle aussi appel a "memoonchange" puisque tu viens de changer le contenu de la ligne 0.
La procedure se lance donc une seconde fois. On entre pas dans le 1er IF MAIS le WriteLn se fait tout de meme car il n'est pas dans ce IF !
A mon avis c'est ça :]
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 10 juin 2009 à 09:57
Salut
Le fait que le message s'écrive 2 fois EST le problème, je te conseille de ne pas chercher à bidouiller une suppression alors que c'est l'ajout qui semble mal fonctionner.
Peut être peux tu donner plus de code qu'on vois pourquoi ça ajoute 2 fois ?
a+
ashron54
Messages postés39Date d'inscriptionmardi 19 mai 2009StatutMembreDernière intervention26 juin 2009 10 juin 2009 à 10:05
voila le code en entier, j'ai bien chercher et personnelement je ne trouve rien d'anormal ...
procedure TForm1.Memo1Change(Sender: TObject);
begin
if Memo1.Lines[0] <> ''
then
begin
assignfile(FichierCode ,'Test.txt');
code := Memo1.Lines[0];
CodeID := StrToInt(code);
case CodeID of
1234 : begin
if Travail = 0
then begin
Nom := 'Fabrice';
Travail := 1;
HeureDeb := DateTimeToStr(Now);
mes := Nom+' commence a '+HeureDeb;
Label1.Caption := mes;
end
else begin
Nom := 'Fabrice';
Travail := 0;
HeureFin := DateTimeToStr(Now);
mes := Nom+' fini à '+HeureFin;
Label1.Caption := mes;
end;
end;
4321 : begin
if Travail = 0
then begin
Nom := 'Thierry';
Travail := 1;
HeureDeb := DateTimeToStr(Now);
mes := Nom+' commence à '+HeureDeb;
Label1.Caption := mes;
end
else begin
Nom := 'Thierry';
Travail := 0;
HeureFin := DateTimeToStr(Now);
mes := Nom+' fini à '+HeureFin;
Label1.Caption := mes;
end;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// Repertoire de l'application
Path := ExtractFilePath(Paramstr(0));
// Location fichier log
LogFile := Path + 'Test.txt';
// Definition du RadioGroup pour le choix (debut/fin)
RadioGroup1.Enabled := false;
RadioGroup1.Caption := '';
RadioGroup1.Items.BeginUpdate;
try
RadioGroup1.Items.Clear;
RadioGroup1.Items.Add('Début');
RadioGroup1.Items.Add('Fin');
finally
RadioGroup1.Items.EndUpdate;
end;
// Vidage du Label1
Label1.Caption := '';
// Definition du Bouton OK
Button1.Enabled := false;
Button1.Caption := 'Ok';
// Definition d'Edit1
Edit1.Clear;
Edit1.Enabled := true;
// N'accepte que des nombres
SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER);
end;
procedure TForm1.FormShow(Sender: TObject);
begin
// Donne le focus a Edit1
Edit1.SetFocus;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// Désactive le bouton
(Sender as TButton).Enabled := false;
// Definition du message a enregistrer et afficher
case RadioGroup1.ItemIndex of
0 : Label1.Caption := RadioGroup1.Caption + ' commence à ' + DateTimeToStr(Now);
1 : Label1.Caption := RadioGroup1.Caption + ' fini à ' + DateTimeToStr(Now);
end;
// Enregistrement du message
with TStringList.Create do
try
if FileExists(LogFile) then
LoadFromFile(LogFile);
Add(Label1.Caption);
SaveToFile(LogFile);
finally
Free;
end;
// Retour a l'etat de depart
RadioGroup1.Caption := '';
RadioGroup1.Enabled := false;
Edit1.Clear;
Edit1.Enabled := true;
Edit1.SetFocus;
end;
procedure TForm1.Edit1Change(Sender: TObject);
var Next : boolean;
begin
// Test la convertion de l'entrée de Edit1 en CodeID
if not TryStrToInt((Sender as TEdit).Text, CodeID) then
exit;
// Control pour aller a l'etape suivante
Next := false;
// On definit le nom de l'utilisateur par son CodeID
case CodeID of
1234 :
begin
RadioGroup1.Caption := 'Fabrice';
Next := true
end;
4321 :
begin
RadioGroup1.Caption := 'Thierry';
Next := true;
end;
end;
// Si le CodeID est inconnus on sort.
if not Next then
exit
else
begin
// sinon etape suivante.
RadioGroup1.ItemIndex := 0;
RadioGroup1.Enabled := true;
RadioGroup1.SetFocus;
Button1.Enabled := true;
(Sender as TEdit).Enabled := false;
end;
end;