Gros souci : Idhttp.get -> Range Check Error

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

Messages postés
1023
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
17 août 2008

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
Messages postés
1023
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
17 août 2008

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

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.
Messages postés
1023
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
17 août 2008

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...

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
Messages postés
1023
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
17 août 2008

Tiens, je serai curieux de savoir comment tu t'y prends... 30 lignes, ça me semble peu pour gérer un protocole entier !

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

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 :)

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