jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 2014
-
26 mai 2006 à 19:05
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 2014
-
29 mai 2006 à 13:10
bonsoir,
je viens de m'appercevoir que le code du module MAIL n'est pas portable
sous D2005 et INDY 10 (il ne se compile tout simplement pas)
Apparemment il y a eu une refonte complète du composant, comme il n'est
pas documenté ..... et que l'on ne peut pas installer la version
9 je ne sais plus à quel saint me vouer.
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 27 mai 2006 à 14:45
pour avoir renomer cette propriété : un vrai boulot de stagiaire la
seule utilité auraiit été le risque qu'elle fasse double emploi mais
lequel et avec quelle autre mystère toujours est-il que cela fait
sacrément Ch... de se retaper le code pour des modifs de ce genre.
je n'ose même pas imaginer un réseau ou il faudrait migrer sous indy10.
Tu me diras faire et défaire c'est toujours travailler au moins les
programmeurs réseau ne risquent pas le chomage!!!
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 27 mai 2006 à 14:59
TIdAttachment est devenue une classe de base abstaite
dont découle deux nouvelles classes
TIdAttachmentFile // pour un fichier sur le disque dur
TIdAttachmentMemory// pour un fichier en mémoire
ceci explique peut être cela
l'envoi de pièces jointes depuis la mémoire n'était pas prévue dans la version 9 (enfin je crois)
@+
Cirec
Vous n’avez pas trouvé la réponse que vous recherchez ?
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 27 mai 2006 à 15:07
rien ne les empêchait de laisser la procédure par défaut de la version
9 et de la surchrager et/ou d'en faire une autre différenciant les flux
au point ou ils était de la complexité cela ne cahgeait pas la face du
mode et cela restait transparent pour l'utilisateur. Il ne faut quand
même pas oublier qu'un composant est sensé simplifoer la tache du
programmeur pas la compliquer
Cirec je ne vois pas l'utilité d'utiliser un acces mémoire pour envoyer
une pièce jointe : tu imagines les serveurs utiliser ce genre de truc ??
Maintenant le probleme d'Indy 10 n'est pas lié qu'aux mails et j'irai
meme plus loin : INDY c'est pire que TSOCKET. En effet pour transmettre
un fichier d'un serveur vers un client : bah accroche toi, c'est à
passer par la fenetre. Alors evidemment cette team a du se dire : " bah
envoyer un fichier sur un serveur c'est inutle". Rien que cela, tu n'as
aucune source sur le net. C'est possible mais :
-C'est d'une difficulté extraordinaire (en effet tu n'as pas de
procedure OnExecute pour le client, ce qui manque cruellement ca me
parait evident).
-Est ce portable sur un autre serveur ? loin de là il faut mettre des
sleeps a tout bout de champs donc à la moindre fiante
d'oiseau sur la ligne ADSL tu as une grosse violation de mémoire.
En fait Indy10 vient de l'apparition du .net : manque de bol les mecs
auraient du débeuguer Indy9 et rajouter des options fondamentales; bien
non ils ont faits une succession de connerie sur conneries.
Quand aux composants ICS : j'en parle meme pas c'est encore pire
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 27 mai 2006 à 17:02
Salut Francky,
si toi tu ne vois pas l'utilité d'un accès mémoire pour envoyer un document où fichier joint, d'autre y trouveront une utilité :
et justement quand tu fais une application qui doit envoyer des messages pour information sur l'état d'un pc (par exemple) et bien tu peux envoyer le texte d'un mémo (par Ex.) directement sans l'enregistrer préalablement sur ton disque et il ne sera pas fusionné avec mail mais envoyé en piece jointe.
Deuxième exemple tu fais un logiciel de surveillance vidéo (tiens ça me rappel quelque chose non ?) et tu envoies une image à un moment précis : encore une fois pas besoin d'enregistrer l'image sur le disque pour la joindre au mail tu peux directement l'envoyé depuis le stream.
et des exemples comme ceux là il doit y en avoir une tone ça fonctionne avec les Stream et les String
ps: j'ai testé pour vous l'envoie par Stream et String et ça fonctionne très bien c'est même plus souple d'utulisation que la voie habituelle
Il y a un truc de très génant avec Indy : l'envois d'un client vers un
serveur avec les compsants IdTCP a été oublié par ces gens .
Si à chaque version d'Indy il faut tout réapprendre on est pas sortis de l'auberge .
Pour finir mon intervention sur ce topic, il y a pas mal de choses à
revoir avec cette suite de composants, et il me parait urgent que ces
gens travaillent sur les amélioration plutot que de tout refaire.
J'ai voulu mailer cette team pour leur signaler certains disfonctionnement mais le lien sur la boite mail, ne fonctionne pas.
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 27 mai 2006 à 17:22
je ne doute pas de l'intérêt d'envoyer diectement à patir du stream (il
faudrait d'ailleurs que je regarde pour envoyer directemnt le flux
video mais passons).dans le cas d'une photo l'interêt est assez faible
du moins dans le cas de delphi :
toute les images sont traitées en bitmap on ne les converties qu'au
moment de l'enregistrement et intercepter le flux à ce moment là est
plutot périlleux . en plus dans le cas de la surveillance il fallait
garder une trace des anomalies et je n'envoie qu'une seule photo ou une
photo toutes les x minutes et comme on n'est en temps réel (vu le délai
entre l'envoi et la réception du mail on n'est pas à quelques dixièmes
de soconde) il est donc de toute façon plus simple de prendre le
fichier sur le disque de d'intercepter le flux .
Surtout JLen si on commence à bouffer les ressources mémoires des
serveurs SMTP, qui sont simplement des bureaux de postes, ils vont etre
content les FAI . Je vous laisse devenir ce que pourrait faire quelqu'un mal attentionné
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 27 mai 2006 à 18:49
Oui effectivement je n'avais pas pensé à ça,
mon exemple pour les images était assez mal choisi mais bon vous avez compris ou je voulais en venir, tout ça pour dire que l'envoie par MemoryStream peut avoir des avantages certains où certains avantages.
La modification des composants Indy nous échappes encore mais une chose est certaine c'est que nous devons composer avec ou nous en passer.
Bien sur on pourrais en discuter des heures mais ça ne fera pas avancer le schmilblick enfin c'est mon avis
Bon sur ce bonne chance pour la suite ...
<hr />
Chaque problème à sa solution ... le tout c'est de la trouver
<hr />
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 27 mai 2006 à 18:56
Attention Francky,
quand je parle de stream c'est sur le pc de l'expéditeur que ça ce passe
dans le fonctionnement ça reste identique à un mail avec piece jointe normal
Je veux dire qu'a la reception du mail il n'y a pas de différence le tout est mis dans un fichier Zip
Il n'y a donc pas de ressources supplémentaires utilisée pour réaliser ce genre d'opération
*Tu peux te passer des composants Indy et utiliser notre bon vieux
shell pour transferer ton mail. Par contre c'est bcp bcp plus c...t. à
faire.
*Pourquoi utiliser un mail ? Et oui obliger d'aller dans sa boite mail c'est long. Pourquoi ne pas transferer via TCP tes photos et envoyer un message d'alerte en cas de réception??
Ca serait plus simple pour l'utilisateur et il me semble que les
composants TCP des version 9 et 10 sont identiques. Voici un code
fonctionnel pour downloader ou Uploader d'un client vers un serveur.
Normalement tu peux utiliser ce code directement il ne devrait pas y
avoir de beug et le transfert est rapide .Pour une alerte il suffit en fin dde procedure d'rajouter un WriteLn et un showmessage . Si tu veux le projet pour le tester sous D 2005 D7 et D6, je te le passe
////////////
//UPLOADER//
////////////
procedure TForm1.Button1Click(Sender: TObject);
begin
IdTCPClient1.Host:=Edit1.text; //L'adresse IP est le contenu de l'Edit1
IdTCPClient1.Connect; //On connecte le client
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
IdTCPClient1.DisConnect; //On déconnecte le client
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
IdTCPServer1.Active:=true; //On active le serveur
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
IdTCPServer1.Active:=false; //On désactive le client
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
Uploader; //On lance la procédure «Uploader»
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Opendialog1.execute; //On execute l'Opendialog1
Edit2.text:=Opendialog1.FileName;//L'Edit2 est le nom du fichier sélectionné dans l'Opendialog1
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
Savedialog1.execute; //On execute le Savedialog1
Edit3.text:=Savedialog1.FileName; //L'Edit3 est le nom du fichier sélectionné dans le Savedialog1
end;
Procedure TForm1.Uploader;
var
Fs1 : TFileStream; //On définit Fs1 comme un TFileStream
begin //On commence
if (Edit2.text<>'Fichier Client') and (Edit3.text<>'Fichier Serveur') then
//Si Edit2 est différent de 'Fichier Client' et Edit3 est différent de 'Fichier Serveur' alors
try //On essaye
Fs1 := TFileStream.Create(Edit2.text,fmOpenRead,fmShareDenyWrite); //De créer le flux
IdTCPClient1.WriteLn('Upload|'+Edit3.text); //De transmettre 'Upload|'+le nom du fichier cible
IdTCPClient1.WriteInteger(Fs1.Size); //D'écrire la taille
IdTCPClient1.WriteStream(Fs1); //D'écrire le flux
finally //Finalement
FreeAndNil(Fs1); //On libère le flux
IdTCPClient1.Disconnect; //On déconnecte le client
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 28 mai 2006 à 08:51
salut francky,
et merci, mais comme je n'ai pas envore les yeux bien en face des trous
et que ce que tu m'as passé est assez copieux je regarde ça dans
la journée et je te tiens au courant
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 28 mai 2006 à 18:39
salut francky,ça m'a l'air pas mal , je n'ai pas encore pu tester mais l'apprche me semble bonne.
toutefois par rapport aux mails il y a un bemol (enfin si je ne
me plante pas)en effet il faut ici avoir un pc client sur lequel est
installé le dowloader ce qui limite les possibilités de consultation
alors que que dans le cas du mail il peut êter lu sur n'importe PC
connecté.
Ensuite je ne suis pas trop partisan pour ce genre d'utilisation des
alertes par Email dont les délais de transmission sont tout à fait
incontrolables cela peut peut prendre plusieurs minute voir plusieurs
heures ensuite on n'est pas toujours rivé à son écran ce qui fait que
les chances de pouvoir intrevenir (ne serait ce qu'avertir les képis
sont bien mince)je leur préfère nettement les alertes
téléphoniques ( avec les protables on est joignable presque partout et
même sans modem vocal s'il y a un applel qui vie,t de chez toi alors
qu'il est sensé n'y avoir personne c'est qu'il y a un problème!!)
par contre cela m'intéresse quand même pour ajouter une fonctionnalité au programme.
en effet puisque l'on est capable de récupérer des images on peut
interroger chaque caméra pour s'assurer que tout se passe bien même
sans alerte.
dernière petite question (mais là je crois que je rêve) : penses tu
qu'il serait possible de mettre l'application client dans une clef USB
et de la lancer sur n'importe quel PC (ce serait le pieds: tu arrives à
l'hotel à l'autre bout du monde et avant d'aller faire un plongeon dans
la piscine tu jettes un oeil pour voir si tout est OK chez toi!!
*Par rapport au bémol, tu as entièrement raison. Donc les mails est solution meilleure c'est vrai.
*Le délai des emails, il me semble que dans le cas d'indy tu peux controler la priorité d'envois.
* "Par contre cela m'intéresse quand même pour ajouter une
fonctionnalité au programme.en effet puisque l'on est capable de
récupérer des images on peut
interroger chaque caméra pour s'assurer que tout se passe bien même
sans alerte.". Oui c'est vrai donc si tu veux rajouter cette
fonctionnalité , ca pourrait etre un plus. Il est possible de
transferer l'image directement par un TMemoryStream et de l'afficher
sur un TImage sans passer par un TFileStream (j'ai un code sous la main
qui fonctionne, si tu veux je te le passe). Tu peux aussi visualiser
directement la webcam via un systeme client/serveur. J'ai aussi une
source la dessus qui fonctionne avec TCamera mais le TCamera se trouve
sur le client (Quand il est sur le serveur il y a un probleme au niveau
du timing : violation de mémoire. Problème du aux composants Indy).
*Pour la clé USB, rien ne t'empeche de mettre ton application client
sur une clé USB et de l'installer sur n'importe quel PC. Niveau taille
l'application n'est pas grosse et ne consomme pas beaucoup en CPU donc
pas besoin d'avoir un PC du tonnerre de Dieu. Cependant il y a une
restriction de taille : connaitre son adresse IP internet si tu es
derrière un proxy ca risque de poser probleme (comme toujours). Sinon
mettre le client ou le serveur (je parle pour le Download et le Upload)
dans une clé USB et l'utililiser sans installation sur le HDD je dis
OUI si tes images sont des JPEG (et encore meme avec une bmp ca doit
fonctionner). En effet l'utilisation des TFileStream "ne consomme pas
de ressources mémoires" à la différence des Blocks ou TMemoryStream.
N'ayant pas de clé USB je ne peux pas te dire. Si tu as une adresse
mail passe la moi en PV et je te file le source comme ca tu pourras
tester et de plus tu pourras essayer l'histoire de la clé USB si tu en
as une.
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 28 mai 2006 à 21:10
oui on peut controler la rpiorité de l'envoi mais pour la transmission
réelle c'est un eautre histoire. Ceux qui veulent uitiliser cette
possibilité ils le peuvent comme on dit c'est "tendance' mais pour
l'efficacité .....
visualiser directement la webcam n'est pas nécessaire la plupart du
temps on a une image fixe de la pièce (heureusement!!) et une fréquence
de scan de 5/6 iimages/s est largement suffisante (en sureveillance
c'est bien souvent 2/3) en plus systématiquement je passe en jpeg
surtout que l'adsl n'est pas encore présent partout (à 500m de chez moi
il est out) alors dans certains pays n'en parlons pas j'avais regarder
TCamera mais pour la visualisation il n'utilise que le preview et il
n'implémente pas la capture à partir du memorystream prévu dans la dll
AVICAP. (il faudrait que je me penche dessus pour le compléter dans le
style de TVideocapture)
Pour l'adresse IP je crois qu'on doit pouvoir la récupérer (là je m'avance peut être un peu!!)
pour la clef USB j'en ai qui me serve de dongle sur les machines
que je loue : le client n'a pas accès à windows et à la sortie du
programme d'exploitation je coupe le PC si la clef n'est pas présente.
si on arrive à intégrer ce module ce serait sans aucun doute un plus et
comme tout est fait en module l'intéragration ne devrait pas êter trop
compliquée d'autant que tout les traitements utilise déjà un tableau de
bitmap et qu'il suffira d' envoyer les images en JPEG dans un
Tfilestream (le tableau est déjà dans l'interface et je l'utilise pour
les alertes)