Total de mail dans mes boites (pop3)

Soyez le premier à donner votre avis sur cette source.

Vue 5 564 fois - Téléchargée 1 006 fois

Description

permet de connaitre en permanence le nombre total de mail qui sont dans les différentes boites.
Cette exemple utilise le module POP3 Indy 9.00.17.
Petit es routines de cryptographie maison simple (utilisant des veux principe mais qui pourrait être utile pour certain débutants comme moi)

Conclusion :


pour télécharger Indy 9.00.17 allez à l'adresse suivante :
http://www.indyproject.org/download/Borland.iwp
La version actuelle tient compte des premieres remarques (Merci à JulioDelphi Particulièrement) .
Un petit plus , possibilité d'avoir un son à chaque détection du changement du nombre de Mail

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

JulioDelphi
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
12 -
Oups, aucune unité =), voici ces fonctions utiles :
----------------------------------------------------------------------

Interface

{ Immediate If }
{ IIF renvoyant un entier }
function IIF(ACondition: boolean; ATruePart, AFalsePart: integer): integer; overload;
{ IIF renvoyant un extended }
function IIF(ACondition: boolean; ATruePart, AFalsePart: Extended): Extended; overload;
{ IIF renvoyant une string }
function IIF(ACondition: boolean; ATruePart, AFalsePart: string): string; overload;
{ IIF renvoyant un objet }
function IIF(ACondition: boolean; ATruePart, AFalsePart: TObject): TObject; overload;

Implémentation
function IIF(ACondition: boolean; ATruePart, AFalsePart: integer): integer;
{ Immediate IF pour les entiers }
begin
if ACondition then
Result := ATruePart else
Result := AFalsePart;
end;

function IIF(ACondition: boolean; ATruePart, AFalsePart: Extended): Extended;
{ Immediate IF pour les flottant }
begin
if ACondition then
Result := ATruePart else
Result := AFalsePart;
end;

function IIF(ACondition: boolean; ATruePart, AFalsePart: string): string;
{ Immediate IF pour les chaînes }
begin
if ACondition then
Result := ATruePart else
Result := AFalsePart;
end;

function IIF(ACondition: boolean; ATruePart, AFalsePart: TObject): TObject;
{ Immediate IF pour les objets }
begin
if ACondition then
Result := ATruePart else
Result := AFalsePart;
end;

Utilisation des fonctions:

procedure TMyObject.TestIIF;
var idx: integer;
MyString: String;
begin
idx := 10; { Par exemple }
MyString := IIF(idx=0,'Zero','Différent de Zero');
end;


est équivalent à

procedure TMyObject.TestIIF;
var idx: integer;
MyString: String;
begin
idx := 10; { Par exemple }
if idx=0 then MyString = 'Zero' else MyString = 'Différent de Zéro';
end;

Merci delphi.developpez.com =)
cs_grandvizir
Messages postés
1237
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
10 -
function IFF(Value:boolean; Fls, Tre : #TYPE#):#TYPE#;
begin
if Value then IFF:=Tre
else IFF:=Fls;
end;

#TYPE# est une déclinaison: remplacer par integer pour renvoyer des entiers, string pour des chaînes... Ainsi, voici un exemple avec les booleans:

function IFF_bool(Value:boolean; Fls, Tre : boolean):boolean;
begin
if Value then IFF_bool:=Tre
else IFF_bool:=Fls;
end;
cs_pepitto
Messages postés
22
Date d'inscription
jeudi 13 novembre 2003
Statut
Membre
Dernière intervention
25 juin 2008
-
Merci "JulioDelphi" pour c'est remarque je vais en profiter pour optimiser le code
Par contre la fonction << IIF >> n'est pas reconnue par ma version de delphi, Quelle est l'unité qui le contient merci
Frostizz
Messages postés
39
Date d'inscription
jeudi 30 août 2001
Statut
Membre
Dernière intervention
23 janvier 2005
-
Qualitée logiciel oblige !
JulioDelphi
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
12 -
Hello,
quelques petites remarques constructives de correction/optimisation de code :

1) Eviter ça :
H := ''; U := ''; P := '';
L1.Caption := H; L2.Caption := U;
L1.Visible := True; L2.Visible := True;
c'est pas lisible, vaut mieux ecrire 7 lignes, l'exe n'en sera pas plus gras.

2) je te propose la fonction Format() pour ça :

- if reg.ValueExists('H' + inttostr(M)) then H := Reg.ReadString('H' + inttostr(M));
qui donne ça :
- if reg.ValuesExists(format('H%d',[M])) then H := Reg.ReadString(format('H%d',[M]));

et aussi ça :
- Messag.Caption := inttostr(Nb_Mail) + 'Messages';
qui donne ça :
- Messag.Caption := Format('%d messages',[NB_MAIL]);
>> avec ton code, si NB_MAIL vaut "3", alors j'obtiendrais :
"3Messages" avec MAJUSCULE + texte collé !!

et aussi ça qui peut etre combiné avec IIF() :
- if NB_Mail = 1 then Notif.szTip := '1 message'
else begin
H := Inttostr(Nb_Mail) + ' messages';
qui peut donner ça :
- H :iif(NB_Mail 1,'1 message',format('%d messages',[NB_Mail]));

3) NOMME TES COMPOS ! je vois des timer1, timer2, timer3 je ne sais pas a quoi ils servent !! je devrais en avoir un petite idée grâce a son nom !

4) Notif.szTip := '0 Messages'; pas de "S" puisque "0" !
4bis) "Voullez" avec un seul L

5) A quoi sert le timer3 qui ne fonctionne qu'une seule fois 1/2 seconde apres le lancement de l'appli ? pourquoi ne pas déclarer une procedure tout simplement ! et si tu veux attendre 500ms, mets un sleep(500) ... mais bon explique moi

6) Il y a moyen de jouer avec les sender (en case ... of) pour les Moins1, plus2, plus1 etc

Infos sur les IIF :
{ Immediate If }
{ IIF renvoyant un entier }
function IIF(ACondition: boolean; ATruePart, AFalsePart: integer): integer; overload;
{ IIF renvoyant un extended }
function IIF(ACondition: boolean; ATruePart, AFalsePart: Extended): Extended; overload;
{ IIF renvoyant une string }
function IIF(ACondition: boolean; ATruePart, AFalsePart: string): string; overload;
{ IIF renvoyant un objet }
function IIF(ACondition: boolean; ATruePart, AFalsePart: TObject): TObject; overload;

Infos sur format :
%d = Decimal (integer)
%e = Scientific
%f = Fixed
%g = General
%m = Money
%n = Number (floating)
%p = Pointer
%s = String
%u = Unsigned decimal
%x = Hexadecimal

Je n'ai pas encore compilé la source, mais a part ces détails, je trouve le code bien fait ! je regarderais un peu plus ce soir ou demain. voila pour ma premiere contribution a ta source ! Bienvenue sur C-S !

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.