Test si un memo est vide [Résolu]

xt3 23 Messages postés mardi 10 janvier 2006Date d'inscription 13 février 2006 Dernière intervention - 26 janv. 2006 à 09:46 - Dernière réponse : Matt 261 1201 Messages postés mercredi 2 novembre 2005Date d'inscription 10 septembre 2011 Dernière intervention
- 27 janv. 2006 à 18:21
Salut les gars,

J'ai encore un autre problème, je veux tester si le contenu d'un mémo est vide.

Est ce qu'il existe une fonction du genre memo5.lines.empty ou quelque chose comme ça qui pourrait m'aider?



PS : Je sais que je pose beaucoup de question mais ça ne fait que 10 jours que je fais de la programmation en delphi.

Veuillez m'excusez d'avance

@+
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 26 janv. 2006 à 09:55
3
Merci
salut,

test la propriete count de lines du memo

tu fais:

if Memo1.lines.count=0 then memovide



@+

jlen

Merci jlen100 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de jlen100
Meilleure réponse
xt3 23 Messages postés mardi 10 janvier 2006Date d'inscription 13 février 2006 Dernière intervention - 26 janv. 2006 à 10:49
3
Merci
Voici l'intégralité de mon script, je ne vois pas ce qui force l'envoie de l'e-mail.



unit Unit1;



interface



uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, StrUtils, IdMessage, IdBaseComponent, IdComponent, IdTCPConnection,

IdTCPClient, IdMessageClient, IdSMTP, Psock, NMsmtp;



type

TForm1 = class(TForm)

Memo1: TMemo;

Memo2: TMemo;

IdSMTP1: TIdSMTP;

IdMessage1: TIdMessage;

Button1: TButton;

Memo3: TMemo;

Memo4: TMemo;

Memo5: TMemo;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Déclarations privées }

public

{ Déclarations publiques }

end;



var

Form1: TForm1;



implementation



{$R *.dfm}



Uses

IniFiles, FileUtil;



Function strtotstr(const str: string): TStringList;

var

tstr: TStringList;

begin

tstr := TStringList.Create;

tstr.Text := StringReplace(str, ' ', sLineBreak, [rfReplaceAll]);

Result := tstr;

end;





procedure TForm1.FormCreate(Sender: TObject);



var

inifile : TIniFile;

nomfic : String;

writfic : String;

lengfic : String;

excfic : String;

erreur : String;

mel : String;

melrep : String;

melsuj : String;

melport : String;

melport2 : Integer;

melserv : String;

error1 : String;

error2 : String;

error3 : String;

error4 : String;

error5 : String;

error6 : String;

error7 : String;

error8 : String;

error9 : String;

error10 : String;

impos : String;

fic : TextFile;

fic2 : TextFile;

fic3 : TextFile;

exc : TextFile;

err : TextFile;

st : String;

st2 : String;

i : Integer;

IdMessage : TiDMessage;

IdSMTP : TiDSMTP;



begin

inifile :=
TIniFile.Create(NormalDir(ExtractFilePath(Application.ExeName)) +
'arcs.ini');

nomfic :=
NormalDir(inifile.ReadString('Fichier', 'rep','')) +
IniFile.ReadString('Fichier', 'Fich', '');

writfic :=
NormalDir(inifile.ReadString('Fichier', 'rep','')) +
IniFile.ReadString('Fichier', 'writ', '');

lengfic :=
NormalDir(inifile.ReadString('Fichier', 'rep','')) +
IniFile.ReadString('Fichier', 'wc', '');

erreur :=
NormalDir(inifile.ReadString('Fichier', 'rep','')) +
IniFile.ReadString('Fichier', 'err', '');

excfic :=
NormalDir(inifile.ReadString('Fichier', 'rep','')) +
IniFile.ReadString('Fichier', 'excep', '');

mel := inifile.ReadString('Mail', 'meldest','');

melrep := inifile.ReadString('Mail', 'melrep','');

melsuj := inifile.ReadString('Mail', 'melsujet','');

melport := inifile.ReadString('Mail', 'smtpport','');

melserv := inifile.ReadString('Mail', 'smtpserver','');

error1 := inifile.ReadString('Erreur', 'err1','');

error2 := inifile.ReadString('Erreur', 'err2','');

error3 := inifile.ReadString('Erreur', 'err3','');

error4 := inifile.ReadString('Exception', 'err4','');

error5 := inifile.ReadString('Exception', 'err5','');

error6 := inifile.ReadString('Exception', 'err6','');

error7 := inifile.ReadString('Exception', 'err7','');

error8 := inifile.ReadString('Exception', 'err8','');

error9 := inifile.ReadString('Exception', 'err9','');

error10 := inifile.ReadString('Exception', 'err10','');

impos := inifile.ReadString('Imposs', 'impo','');

inifile.Free;





if nomfic = 'C:\' then begin

ShowMessage('Fichier pas trouvé');

Exit;

end;



if not FileExists(nomfic) then begin


ShowMessage('Fichier ' + NomFic + ' introuvable');

exit;

end;



AssignFile(fic, nomfic);

Reset(fic);

AssignFile(fic2, writfic);

Rewrite(fic2);



while not Eof(fic) do begin

Readln(fic, st);

st2 := MidStr(st, 42, length(st));

writeln(fic2, st2);

end;



Reset(fic2);

AssignFile(fic3, lengfic);

Rewrite(fic3);



(Memo1.Lines.LoadFromFile(writfic));



for i := 0 to Memo1.Lines.Count do begin

if (Memo1.Lines[i] = error1) or

(Memo1.Lines[i] = error2) or

(Memo1.Lines[i] = error3) then begin

writeln(fic3, Memo1.Lines[i]);


writeln(fic3, Memo1.Lines[i+1]);

end;

end;



CloseFile(fic3);



Reset(fic3);

AssignFile(err, erreur);

Rewrite(err);

AssignFile(exc, excfic);

Rewrite(exc);



(Memo2.Lines.LoadFromFile(lengfic));



//Copie des lignes contenant les erreurs dans les fichiers correspondants

For i := 0 to Memo2.Lines.Count do begin

if(Pos(error4, Memo2.Lines[i])>0) or

(Pos(error5, Memo2.Lines[i])>0) or

(Pos(error6, Memo2.Lines[i])>0) or

(Pos(error7, Memo2.Lines[i])>0) or

(Pos(error8, Memo2.Lines[i])>0) or

(Pos(error9, Memo2.Lines[i])>0) or

(Pos(error10, Memo2.Lines[i])>0) then

Memo3.Lines.Append(Memo2.Lines[i-1] + ' ' + Memo2.Lines[i]) else

Memo4.Lines.Append(Memo2.Lines[i])

end;



for i := 0 to Memo3.Lines.Count do begin

writeln(exc, Memo3.Lines[i]);

end;



for i := 0 to Memo4.Lines.Count do begin


if(Pos(impos, Memo4.Lines[i])>0) then


Memo5.Lines.Append(Memo4.Lines[i-1]+ ' ' + Memo4.Lines[i]);

end;



for i := 0 to Memo5.Lines.Count do begin

Writeln(err, Memo5.Lines[i]);

end;



CloseFile(fic);

CloseFile(fic2);

CloseFile(fic3);

CloseFile(exc);

CloseFile(err);



IdMessage := TIdMessage.Create(nil);

IdMessage.From.Address := melrep; //@ émetteur

IdMessage.ReplyTo.Add.Address := melrep; //@ de réponse et / ou destinataire

IdMessage.Recipients.Add.Address := mel;

IdMessage.Subject := melsuj; //Sujet du message

IdMessage.ContentType := 'text/plain'; // Message texte

IdMessage.Body := Memo5.Lines; //corps du message



//Envoi du message

IdSMTP := TIdSMTP.Create(nil);

melport2 := StrToInt(melport);

IdSMTP.Port := melport2; //port smtp

IdSMTP.Host := melserv; //serveur smtp



//Connexion et envoi du message

Try

IdSMTP.Connect;

IdSMTP.Send(IdMessage);

finally

IdSMTP.Disconnect;

IdSMTP.Free;

IdMessage.Free;

end;

end;



procedure TForm1.Button1Click(Sender: TObject);

begin

close;

end;



end.





@+

Merci xt3 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de xt3
Meilleure réponse
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 26 janv. 2006 à 11:12
3
Merci
dans ton form.create tu n'as pas de test avant:



//Envoi du message

IdSMTP := TIdSMTP.Create(nil);

melport2 := StrToInt(melport);

IdSMTP.Port := melport2; //port smtp

IdSMTP.Host := melserv; //serveur smtp



//Connexion et envoi du message

Try

IdSMTP.Connect;

IdSMTP.Send(IdMessage);

finally

IdSMTP.Disconnect;

IdSMTP.Free;

IdMessage.Free;

end;

par conséquent tu envoies systématiquement un message

ensuite si tu mets

for i := 0 to Memo1.Lines.Count do begin

for i := 0 to Memo2.Lines.Count do begin

for i := 0 to Memo3.Lines.Count do begin

for i := 0 to Memo4.Lines.Count do begin

for i := 0 to Memo5.Lines.Count do begin



tu auras une erreur d'exécution (indice hors limites) count donnant le
nombre de lignes et commençant à l'indice 0 la dernière ligne est à
count-1

il faut donc écrire:

for i := 0 to MemoXX.Lines.Count -1 do begin



A mon avis tu n'as pas testé le code que tu nous donnes!!

@+

jlen

Merci jlen100 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de jlen100
xt3 23 Messages postés mardi 10 janvier 2006Date d'inscription 13 février 2006 Dernière intervention - 26 janv. 2006 à 10:16
0
Merci
Voilà mon problème, je suis toujours avec les rapports d'erreur
d'arcserve et donc je ne souhaite envoyer l'email contenant les erreurs
que quand il y a des erreurs.

Le problème ici étant que le programme envoie des e-mail meme quand il n'y a pas d'erreur.

Voici un bout de mon script :



if Memo5.Lines.Count <> 0 then

Try

IdSMTP.Connect;

IdSMTP.Send(IdMessage);

finally

IdSMTP.Disconnect;

IdSMTP.Free;

IdMessage.Free;

end

end;
Commenter la réponse de xt3
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 26 janv. 2006 à 10:21
0
Merci
essaye çà:

if Memo5.Lines.Count <> 0 then

begin

Try

IdSMTP.Connect;

IdSMTP.Send(IdMessage);

finally

IdSMTP.Disconnect;

IdSMTP.Free;

IdMessage.Free;

end;

end;

@+

jlen
Commenter la réponse de jlen100
xt3 23 Messages postés mardi 10 janvier 2006Date d'inscription 13 février 2006 Dernière intervention - 26 janv. 2006 à 10:30
0
Merci
Salut jlen100, ton script marche mais le résultat est le même il envoie quand même des e-mail vide.

@+
Commenter la réponse de xt3
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 26 janv. 2006 à 10:41
0
Merci
dans ce cas regardes dans ailleurs dans ton programme si tu n'as pas une instruction qui force l'envoi du mail.

attention aussi avant de de lancer la procedure de tri fait

Memo5.lines.free pour le vider.

pour vérifier que le test fonctionne

if Memo5.Lines.Count <> 0 then

begin

Try

IdSMTP.Connect;

IdSMTP.Send(IdMessage);

finally

IdSMTP.Disconnect;

IdSMTP.Free;

IdMessage.Free;

end;

end else MessageDlg('Pas de donnée à transmettre',mtError , [mbOk], 0);

@+

jlen
Commenter la réponse de jlen100
xt3 23 Messages postés mardi 10 janvier 2006Date d'inscription 13 février 2006 Dernière intervention - 26 janv. 2006 à 11:26
0
Merci
Ben si j'ai testé le code que je vous donne, le code marche parfaitement ( sauf qu'il envoie des e-mails même si ils sont vides ).

Delphi 6 me lance ce code et ne provoque aucune erreur, je reçois parfaitement les e-mails contenant les erreurs triés.

Sinon ben je vais tester ta méthode jlen, merci et @+
Commenter la réponse de xt3
xt3 23 Messages postés mardi 10 janvier 2006Date d'inscription 13 février 2006 Dernière intervention - 26 janv. 2006 à 11:56
0
Merci
C'est bon ça marche, jlen, t'avais raison pour le MemoXX.Lines.Count -1, ça marche nikel maintenant.

Je te remercie 15000 fois jlen t'es trop balèze.

@++
Commenter la réponse de xt3
Matt 261 1201 Messages postés mercredi 2 novembre 2005Date d'inscription 10 septembre 2011 Dernière intervention - 27 janv. 2006 à 18:21
0
Merci
Trops bien d'accepter tes réponses xt3... lol
Avec tous les logiciels de messagerie que j'ai téléchargé ici, il n'y en a pas en qui marche chez moi mais je vais essayer avec ton code xt3 on ne sait jamais...
@++++ et bonne prog
Matt
Commenter la réponse de Matt 261

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.