Gros souci : Idhttp.get -> Range Check Error

minoxor Messages postés 3 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 13 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

    Exit;

  end;
  end;

11 réponses

florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
12 juin 2008 à 20:28
Salut !
Bah, c'est normal en fait !

Ton StringStream est initialisé à '' donc c'est comme si tu lui donnais zéro octet de mémoire.

Enfin, j'en suis plus tro psûr, mais je pense que le problème vient de par là.
Et si tu met un TMemoryStream, ça donne quoi ?

A+
Flo
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
12 juin 2008 à 20:33
Ah non, pardon, je confonds avec un autre stream.
Du coup, je me suis emmêlé les pinceaux.

D'ailleurs, je viens de tester, ton code fonctionne ! (Indy v.9)
Y'a surement un hic ailleurs, on peut voir le "vrai" code, stp ?
0
minoxor Messages postés 3 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 13 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.
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
13 juin 2008 à 13:39
Salut,

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
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
13 juin 2008 à 15:26
Tiens, je serai curieux de savoir comment tu t'y prends... 30 lignes, ça me semble peu pour gérer un protocole entier !
0
Utilisateur anonyme
13 juin 2008 à 16:27
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 ).
0
Utilisateur anonyme
13 juin 2008 à 16:29
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é.
0
minoxor Messages postés 3 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 13 juin 2008
13 juin 2008 à 18:38
Bon ça a le mérite d'être clair vos réponses.
Merci en tout cas , je vais passer à indy 9 ça me parait de mon niveau :)
0
Utilisateur anonyme
13 juin 2008 à 20:16
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
0
Utilisateur anonyme
13 juin 2008 à 20:18
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
0
Rejoignez-nous