Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi idHTTP1.Get eingrenzen (https://www.delphipraxis.net/94970-idhttp1-get-eingrenzen.html)

Cheffu 28. Jun 2007 18:08


idHTTP1.Get eingrenzen
 
Hallo,
gibt es eine Möglichkeit, den Befehl idHTTP1.Get auf nur Zeieln der Seite einzugrenzen?
Das ich es erst ausführen kann un dann eingrenzen weis ich, aber ich will damit bezwecken, dass der Ladevorgang nicht so lang dauert.
(in der Suche habe ich nichts passenden gefunden)

mfg
Cheffu

mkinzler 28. Jun 2007 18:34

Re: idHTTP1.Get eingrenzen
 
Du bekommst doch einen Stream zurück, den brauchst du ja nicht bis zum Ende auslesen.

arbu man 28. Jun 2007 18:36

Re: idHTTP1.Get eingrenzen
 
Auf Zeilen nicht aber auf Zeichen schau dir mal mit HTTP Header die Direktive Content-Range an.

mfg, Björn

Cheffu 28. Jun 2007 18:50

Re: idHTTP1.Get eingrenzen
 
@mkinzler das is glaub ich genau das was ich gesgat hab was nicht passieren soll. Ich denke das es lange dauert den Stream erstmal komplett zu laden und eben nicht die Bearbeitung dessen. Deshalb würde das an der geschwindigkeit nichts machen.

@arbu man was meinst du mit nach Zeichen?

Konkret lade ich die Seite per Get.1HTTP runter in eine Memo-Datei und dort lass ich dann prüfen ob etzwas bestimmtes drinsteht oder nicht.

arbu man 28. Jun 2007 18:56

Re: idHTTP1.Get eingrenzen
 
Mit Zeichen meine ich Zeichen:

Bsp:
123456
89

Du kannst nun per Content Range sagen ich möchte Zeichen 6-9 in diesen Fall wäre dann einen Zeilenumbruch drin.

mkinzler 28. Jun 2007 18:58

Re: idHTTP1.Get eingrenzen
 
Der Vorteil eines Streams ist doch gerade, daß man zeichenweise Lesen kann.

SirThornberry 28. Jun 2007 19:16

Re: idHTTP1.Get eingrenzen
 
@mkinzler: Aber der Stream ist doch komplett clientseitig! Da wird nicht per Streamzugriff das vom server geladen was man aus dem Stream liest sondern es wird der komplette Content geladen und in einen Stream gepackt nach dem der Content fertig geladen ist.

Cheffu 28. Jun 2007 19:26

Re: idHTTP1.Get eingrenzen
 
könnte mir jemand einen Code sagen, der vom Server die HTML Datei nur von Zeichen x bis zu Zeichen y liest und läd?

SirThornberry 28. Jun 2007 19:29

Re: idHTTP1.Get eingrenzen
 
du musst idhttp.Request.ContentStart und idhttp.Request.ContentRange setzen bevor du die Anfrage absetzt (wurde übrigens schon gepostet).

Cheffu 28. Jun 2007 19:40

Re: idHTTP1.Get eingrenzen
 
ja, dass dies schon gepostet wurde weis ich, aber ich kann als Anfänger nicht viel damit anfangen.
Soll dies vor den Get befehl oder danach und wie genau?

Deshalb hoffte ich das jemand einfach ein Codeschnipsel hat in dem die Befehle drin steht, sammt get Befehl halt von Zeichen 10 bis 100 oder irgendwas

arbu man 28. Jun 2007 19:46

Re: idHTTP1.Get eingrenzen
 
Der Get Befehl sendet den HTTP Request. Also musst du den Content-Range davor bestimmen!

mfg, Björn

mkinzler 28. Jun 2007 19:47

Re: idHTTP1.Get eingrenzen
 
Zitat:

Zitat von SirThornberry
@mkinzler: Aber der Stream ist doch komplett clientseitig! Da wird nicht per Streamzugriff das vom server geladen was man aus dem Stream liest sondern es wird der komplette Content geladen und in einen Stream gepackt nach dem der Content fertig geladen ist.

Ich dachte es wäre der stream, der direkt vom Webserver kommt :oops:

Cheffu 28. Jun 2007 22:17

Re: idHTTP1.Get eingrenzen
 
Ich find weder in de Delphi Hilfe ContentStart noch ContentRange noch, etwas nernünftiges bei Google. Kann mir keiner sagen wie der Code genau heißen muss?

DGL-luke 28. Jun 2007 22:19

Re: idHTTP1.Get eingrenzen
 
Delphi-Quellcode:
//wir lesen von Zeichen 42 an die nächsten 42 zeichen. Oder lesen wir von Zeichen 42 bis Zeichen 42? Selbst ist der Coder...

IdHTTP1.Request.ContentStart := 42;
IdHTTP1.Request.ContentRange := 42;

IdHTTP1.Get;

Cheffu 28. Jun 2007 22:33

Re: idHTTP1.Get eingrenzen
 
Das sieht ja schonmal super aus und ich wollte grad probiren ob man dann dioe nächsten 42 oder eben garnichts einliest, aber ich kann es nicht compilieren, denn cih bekomme folgende Fehlermeldung bei "IdHTTP1.Request.ContentStart := 42;":
Undefinierter Bezeichner 'ContentStart'. Das bedeutet doch das ich variablen vergeben muss oder?

PS: Ich habe Delphi 7

DGL-luke 28. Jun 2007 22:56

Re: idHTTP1.Get eingrenzen
 
hrmpf... benutze mal CodeInsight ;-)

Hab jetzt selber mal die IDE hochgefahren: Es gibt folgende Eigenschaften:

- Request.ContentRangeStart
- Request.ContentRangeEnd
- Request.ContentLength

Cheffu 28. Jun 2007 23:16

Re: idHTTP1.Get eingrenzen
 
perfekt, perfekt :)

der korrigierte Code-Schnipsel lautet also
Delphi-Quellcode:
IdHTTP1.Request.ContentRangeStart := 42;  // Ab welchem Zeichen beginnen
IdHTTP1.Request.ContentRangeEnd := 200;   // Bis zu welchem Zeichen

Memo1.Text:=IdHTTP1.Get('http://www.web.de/')
Danke an alle die geantwortet haben :)

Cheffu 2. Jul 2007 16:06

Re: idHTTP1.Get eingrenzen
 
Sorry, für den Doppelpost, aber ich muss mich korrigieren und das würde sonst nicht auffallen.

Das funtkioniert doch überhaupt nicht. Es Läd trotzdem alles einfach in das Memo Feld bei dem Code, den ich geschrieben habe.
Weis jemand eine Lösung?

DGL-luke 2. Jul 2007 20:39

Re: idHTTP1.Get eingrenzen
 
Hallo,

wenn der Server es unterstützt funktioniert es so.
Das solltest du irgwendwo mitkriegen können, ob er das tut...


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz