Erreur de socket insoluble ! [Résolu]

Signaler
Messages postés
384
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
7 mai 2009
-
Messages postés
1
Date d'inscription
jeudi 14 septembre 2006
Statut
Membre
Dernière intervention
15 septembre 2006
-
Bonjour à tous.

Alors voilà, je souhaite récuperer un fichier sur un site à interval régulier, le problème est que je voudrais que le soft ne plante pas lorsque l'ordinateur n'est pas connecté à internet.

Voilà donc ce que j'ai ecrit ...

"function RecupFichier(Site:byte):string;
var
 AccesInternet:TIdHttp;
begin
 AccesInternet:= TIdHttp.Create(nil);
 AccesInternet.ReadTimeout:=5000;
 try
  try
   RecupFichier:=AccesInternet.Get(ListeDesAdresses[SiteDeRecherche]);
  except
   RecupFichier:='Non connecté';
  end;
 finally
  AccesInternet.Free;
 end;
end;"

Ben ça marche pas
Systematiquement, j'ai une erreur de socket quand l'ordi est déconnecté (impossible de trouver l'hôte).

Vous voyez ce qui manque à mon code ?
PS : j'utilise D7 et les compo indy livrés avec

6 réponses

Messages postés
384
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
7 mai 2009

Bon ben ça marche très bien en fait, l'erreur ne venait pas de cette portion de code

Salut,


Désolé mais ton code est incompréhensible comme ca, il manque trop de
choses. Il en va de meme de ta question : Donc tu devrais refomuler
tout ca.


Il faut pas oublier qu'on est pas dans  votre tete
donc c'est sympas de penser aux copains qui cherchent pour vous en
donnant un minimum d'infos pour que l'on puisse comprendre. A force
d'épurer les infos,  on dit des betises en plus. De plus le peu de
code que tu donnes est mal structuré pour pas dire mal coder :


"function RecupFichier(Site:byte):string;
 ET RecupFichier:=AccesInternet.Get(ListeDesAdresses[SiteDeRecherche]);


Tout ca pour la meme fonction ??  .
Autrement dit tu appelles ta fonction dans ta fonction et tu assimiles
la valeur retournée à une autre fonction ? Oua ca c'est de l'acrobatie . Il faut choisir entre le mondial et developper hein ?? les deux en meme temps ca conduit à des trucs chelous .


Je te chambre un peu John mais de ta part ca me surprend un peu que tu fasses un code aussi "cradosse " .C'est ca d'etre devenu une star : on te laisse rien passé


A+

Pour télécharger un fichier avec idHTTP voici un lien :

http://delphi.developpez.com/faq/?page=indy_idhttp#indyidhttpfichier


Rien n'avoir avec ton code . Il est possible d'utilise aussi un TMemoryStream et de récuperer ta page directos via le composant  HTMLLite


A+
Messages postés
384
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
7 mai 2009

LOL

C'est coder comme un cochon parce que je ne sais pas trop comment faire alors j'essaye un peu tout ce qui me passe par la tête pour voir si ça marche (et en l'occurence, ça marche ... pas ). Ce code marche très bien quand la connexion est présente, mais pas quand elle ne l'est pas

"Autrement dit tu appelles ta fonction dans ta fonction et tu assimiles la valeur retournée à une autre fonction ?"
Beuu 
En fait, je me sers du nom de la fonction comme valeur de retour, c'est pas un appel.

D'habitude, ce genre de bidouille marche, mais là ...
Vais essayer autre chose .

PS: vraiment sympa ton accueil

Oh c'était une petite blagounette : lol.


Regarde le lien que je t'ai passé ca va peut etre t'aider


A+ John
Messages postés
1
Date d'inscription
jeudi 14 septembre 2006
Statut
Membre
Dernière intervention
15 septembre 2006

Je cherche également a intercepter ce type d'erreur, mais pas sur un fichier. Je vais récupérer la souce d'une page Internet et ensuite je la traite. J'ai une fonction qui vérifie si je suis connectée a Internet, donc j'intercepte déjà les erreurs de sockets relié a ca. Par contre, ce que je ne peux pas gérer (encore), c'est si la page, elle, dont je vais chercher la souce, n'est pas disponible. Pour des raisons x, ca arrive.. lenteur du net (sympatico, au quebec, ca rame pas mal) etc...

comment je peux faire pour que ca popup pas les erreurs ? je veux juste qu'il fasse rien du tout au lieu de faire un message d'erreur. Au mieux, je vais faire changer l'icone dans mon systray de couleur pour dire qu'il y a une erreur reseau...

si quelqu'un peut m'aider, merci.