TOTAL DE MAIL DANS MES BOITES (POP3)

JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Modérateur Dernière intervention 18 novembre 2010 - 22 janv. 2005 à 21:59
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Modérateur Dernière intervention 18 novembre 2010 - 23 janv. 2005 à 16:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29003-total-de-mail-dans-mes-boites-pop3

JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Modérateur Dernière intervention 18 novembre 2010 14
23 janv. 2005 à 16:13
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 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
23 janv. 2005 à 14:35
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
23 janv. 2005 à 14:27
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
23 janv. 2005 à 12:05
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 14
22 janv. 2005 à 21:59
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 !