minoxor
Messages postés3Date d'inscriptionjeudi 12 juin 2008StatutMembreDernière intervention13 juin 2008
-
12 juin 2008 à 18:48
Utilisateur anonyme -
13 juin 2008 à 20:18
Bonjour à tous,
Voila je bosse pas mal avec le composant Tidhttp et voila que je tombe sur un os..Je me fais un get sur l'url 'www.google.fr' pour tester et pouf Range Check Error..
J'ai chercher pas mal sur le net et dans les forum et apparement je ne suis pas le seul avec ce problème , mais voila je n'ais pas trouvé de solution au problème. Si quelqu'un de plus compétent que moi pouvez m'aider ce serait super..
En simplifiant à mort le code voici ce que ça donne. Normalement ça doit vous générer l'erreur.
procedure TForm1.Button1Click(Sender: TObject);
var
Fs: TStringStream ; Fbuffer: string;
IdHTTP1:Tidhttp;
begin
Fs := Tstringstream.Create(Fbuffer);
IdHTTP1:=Tidhttp.Create(nil);
Try
IdHTTP1.get('http://www.google.fr',Fs);
except
minoxor
Messages postés3Date d'inscriptionjeudi 12 juin 2008StatutMembreDernière intervention13 juin 2008 13 juin 2008 à 09:36
Merci pour ta réponse.
Je commence à cerner un peu le problème. L'erreur apparait quand je teste en édition mais si je lance l'exe sur le disk , il n'y a pas d'erreur et le get fonctionne parfaitement.
J'utilise indy 10 et le code fourni plus haut ne marche pas dans l'éditeur..
J'ai aussi testé avec un Tmemorystream et ça fait pareil.
Ce serait bien si quelqu'un qui posséde indy 10 pouvait tester sur sa machine.
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20083 13 juin 2008 à 10:28
Mouais, en tout cas, Indy 10 pose beaucoup plus de problèmes que Indy 9 (y'a qu'a demander à 36-15, hein Francky ?)
Si tu as la version 9, je te conseille d'y retourner SAUF si tu as absolument besoin des nouveautés apportées par la version 10.
Si le code plante dans l'éditeur mais marche avec l'exécutable seul, c'est sûrement une des ces exceptions "normales" que génère Indy.
Normalement, tu as plusieurs messages d'erreurs et puis ça t'emmène vers le bout de code qui fait planter, et là, les dev de Indy laissent toujours un message pour expliquer le pourquoi du comment.
Tu devrais essayer de regarder par là aussi, des fois que...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Oui la version 10 n'est pas stable. Du reste je n'ai plus Indy d'installer. Je préfère tout coder en dur. Et c'est ce que je conseille à notre ami surtout vu la simplicité du HTTP : C'est reglé en 30 lignes de code
Salut Flo, je n'ai pas dis gérer un protocole entier . A priori il n'a pas besoin de grand chose : il suffit juste de créer un socket et d'implanter la commande get. Avec la gestion des erreurs ca ne fait peut etre pas 30 lignes (c'était une façon de parler) mais ce n'est pas non plus un travail monstrueux : ca te permet en plus d'avoir le strict nécessaire et donc ca limite la taille de ton appli.
Pas le temps de faire ca en ce moment : je plugin Catherine Zeta Jones (Et c'est hachement plus rigolot à faire ).
Pour une idée, tu peux toujours regarder le source que j'avais fais sur le protocole SMTP. La partie socket est tres proche. Question protocole : c'est du meme niveau de difficulté pour gérer le HTTP en intégralité.
Ah oué mais attend là : IdHTTP1:=TIdHTTP.Create(nil) : ca serait pas le nil qui fout le dawa. Essaye de le remplacer par self ou mieux Application voir
Je dis ca parce que si ca plante en Edition c'est lié au Try Except : le déclenchement de l'exception conduit à ce genre de chose. Ca expliquerai peut etre pourquoi quand tu lances l'exe tout semble normal