SURVEILLER VOTRE MESSAGERIE

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 24 févr. 2007 à 18:23
galaad545 Messages postés 11 Date d'inscription dimanche 12 février 2006 Statut Membre Dernière intervention 8 septembre 2018 - 10 oct. 2007 à 20:56
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/41617-surveiller-votre-messagerie

galaad545 Messages postés 11 Date d'inscription dimanche 12 février 2006 Statut Membre Dernière intervention 8 septembre 2018
10 oct. 2007 à 20:56
je viens d'avoir le meme pb quel ect la manip à accomplir?siou plé?
cs_Michel34 Messages postés 79 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 27 juin 2011
28 févr. 2007 à 18:38
Salut Cantador,
a priori ca viendrais du fichier AVI , je vais mettre en place les
fichiers modifiés , et comme ma conseillé Foxi , j'ai elimine le compo
TRegistryEdit et j'ai incorporé des procedures maison , avec ca je vais
mettre 4 AVI pour avoir le choix.

je lance tout ca ,vers 21 heures , il me faut verifier quand meme si tous
les fichiers sont OK, il restera encore un peu de taf , mais ca ne gene
pas le prog tel quel.
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
28 févr. 2007 à 13:04
je ne parlerai qu'en présence de mon avocat !

salut Michel34,
euh, d'abord, ta source est en niveau "débutant" et il aurait été
préférable d'indiquer qu'il faut installer le compo TRegistryEdit.
je travaille sous XP/SP2, DELPHI 7.
la compil OK, mais à l'exécution j'ai un os dans le module Uvisuel.
"exception dans le module facteur.exe, impossible d'ouvrir l'AVI".

et j'aimerais bien pouvoir tester ton truc, car ça sent bon à priori..

@+
cs_Michel34 Messages postés 79 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 27 juin 2011
28 févr. 2007 à 12:19
Salut Cantador

Peux tu en dire un peu plus !!!
quel defaut ? que se passe t'il ? sur quel system est tu? quelle version de Delphi?
je demande car j'ai commencer les modifs que Foxi m'a indique
et en meme temps quelques ameliorations.
Alors toutes infos sur d'eventuels disfonctionnements sont les bienvenues.
A+
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
27 févr. 2007 à 22:40
Michel34,
J'ai un truc qui cloche avec Logo.avi.
???
cs_Michel34 Messages postés 79 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 27 juin 2011
24 févr. 2007 à 18:37
Voila une analyse comme je les aimes, ca me permet de comprendre
un peu plus les methodes a employer.
je te remercie et je vais commencer a entreprendre les modifs.

A+
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
24 févr. 2007 à 18:29
ah aussi,
vus que l'unité Regedit est une Surcouche de TRegistry, pourquoi ne pas utiliser TRegistry directement ?

surtout que cette unité n'est pas parfaite et qu'il y a pas mal d'erreur dedans. bref t"etonne pas si un jours tu as des problemes avec ce composant.
surtout qu'il n'ameliore en rien les performances de ton programme, bien au contraire.
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
24 févr. 2007 à 18:23
ça m'as l'air pas mal, sauf qu'il y'a deux ou trois trucs qui ne vonts pas ou qui peuvent etre ameliorer :


>> nouveau parametre : OnlyCurrentUser, permet de selectionner
>> si le demarrage automatique a lieu pour toute les sessions ou seulement celle en cours.

procedure ExecutionAutomatique(const Valeur: Boolean; const OnlyCurrentUser : boolean = false);
const
// selecteur de clef
KSM : array[boolean] of HKEY = (HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER);
begin
with TRegistry.Create do
// on oublis pas de proteger le code avec Try Finally qui
// assure la liberation des objets créer dynamiquement
try
RootKey := KSM[OnlyCurrentUser];
if OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', false) then
begin
if Valeur then
WriteString(ExtractFileName(ParamStr(0)), ParamStr(0))
else
DeleteValue(ExtractFileName(ParamStr(0)));
// on oublis pas de fermer la clef en cours meme si c'est fait de façon automatique
CloseKey;
end;
finally
Free;
end;
end;

>> on mets toujours les "String" en parametres "Const" ceci ameliore les performances.
on ne passe pas TMemo mais TStrings ce qui est plus rapide et permet une compatibilitée
avec d'autres objets de texte comme TRichEdit, ComboBox, ListBox ect...
le parametre OverWrite permet d'ecraser l'ancien journal
utilisation :
SauverJournal('c:\monappli.log',Memo1.Lines);
SauverJournal('c:\monappli.log',ListBox1.Items);

procedure SauverJournal(const Journal: string; Strings : TStrings; const Overwrite : boolean = false);
const
// selecteur de mode d'ouverture du fichier
OWM : array[boolean] of word = (fmOpenReadWrite, fmCreate);
begin
// on utilise un TFileStream, economie des ressources memoire et
// pas de gestion lourde et fastidieuse a coder.
// la condition assure l'ouverture du fichier dans le bon mode
with TFileStream.Create(Journal, OWM[OverWrite or (not FileExists(Journal))]) do
try
// on se positionne a la fin du fichier
Seek(0, soFromEnd);
// on ecrit le texte
WriteBuffer(PChar(Strings.Text)^, Length(Strings.Text));
finally
// on libere le stream
Free;
end;
end;

>> comme pour SauverJournal, on utilise TStrings et non TMemo
utilisation :
LireJournal('c:\monappli.log',Memo1.Lines);
LireJournal('c:\monappli.log',ListBox1.Items);

procedure LireJournal(const Journal: string; Strings : TStrings);
begin
// on prepare Strings pour les modification, performance ameliorée
Strings.BeginUpdate;

// pas besoin de plus
Strings.LoadFromFile(Journal);

// on signale a strings que les modifications sont finies.
Strings.EndUpdate;
end;



function LanceAppliAttenteFin(const NomFichier: string): boolean;
var
StartInfo : TStartupInfo;
ProcessInformation: TProcessInformation;
begin
ZeroMemory(@StartInfo, sizeof(StartInfo));
StartInfo.cb := sizeof(StartInfo);
if CreateProcess(nil, PChar(NomFichier), nil, nil, true, 0, nil, nil, StartInfo, ProcessInformation) then
// WaitForSingleObjet peu echouer, on renvois donc le resultat en consequence
result := WaitForSingleObject(ProcessInformation.hProcess, INFINITE) <> WAIT_FAILED
else
result := false;
end;


>> ne pas oublier de modifier les declarations d'interface des fonctions.

>> on peu eviter certains Case ... of

procedure TFOptions.T2Timer(Sender: TObject);
begin
if Mail.Connected then
begin
Mail.Disconnect;
T2.Enabled := False;
Tempo := 0;
T1.Enabled :T2.Tag 0;
end;
FOptions.Led;
end;


>> dans les procedures des fiches, evite d'appeler la Variable F{nom de la fiche} ça ne sert a rien et surtout cela crée une dependance a cette variable qui peu provoquer un disfonctionnement total si on tente de deriver la fiche en question :

var
FMessage: TFMessage;

PROCEDURE TFMessage.FormActivate(Sender: TObject);
...
BEGIN
Info.Clear; // ou Self.Info.Clear
...
VLigne := Info.Items.Add; // ou Self.Info.Items.Add
...
END;


voila, bon code.