tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
1650
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von real_benedikt
    real_benedikt real_benedikt ist offline Mitglied Bronze
    Registriert seit
    Jul 2007
    Beiträge
    43
    Hallo,

    ich habe mal eine Frage.
    Dieses "Script" habe ich auf einer Seite gefunden:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
      IdHTTP;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        IdHTTP1: TIdHTTP;
        EMailEdit: TEdit;
        TextMemo: TMemo;
        ResponseMemo: TMemo;
        Label1: TLabel;
     
        procedure Button1Click(Sender: TObject);
      private
        { Private-Deklarationen }
      public
        { Public-Deklarationen }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      PostStrings: TStringList;    //Zusammengesetze Post-Daten
      ResponseStream:TStringStream;//Ausgabe der Aufgerufenen Seite
      ausgabe:String;              //Ausgabe der aufgerufenen Seite als String
      zeile:String;                //Zum zeilenweisen Ausgeben der Rückgabe der Aufgerufenen Seite benutzte Zwischenvariable
      i:Integer;                   //Zähler für die For-Schleife
    begin
      ResponseStream:=TStringStream.Create('');//Rückgabe-Stream erstellen
      PostStrings := TStringList.Create;   //Post-Daten-StringList erstellen
      try
        PostStrings.Add('name='+EMailEdit.Text);    //Post-Daten in die StringList eintragen
        PostStrings.Add('password='+TextMemo.Lines.Text);
        try
          idHTTP1.Post('http://www.domain.de/get/', PostStrings,Responsestream);//Datei abrufen
          ausgabe:=ResponseStream.DataString; //Ausbage-Sring die zurückgegebenen Daten zuweisen
          zeile:=''; //Zwischenvariable leeren
          for i:=1 to Length(ausgabe) do begin //For-Schleife zum formatieren der Ausgabe (Zeilenumbrüche korrekt darstellen)
            if (ausgabe[i]=#13) and (ausgabe[i+1]=#10) then begin //Bei Zeilenumbruch
              ResponseMemo.Lines.Add(zeile);
              zeile:='';
            end else if ausgabe[i]<>#10 Then zeile:=zeile+ausgabe[i];
          end;
          ResponseMemo.Lines.Add(zeile);
        except //Fehlerbehandlung
         on E: Exception do
           showmessage('Error encountered during POST: ' + E.Message);
        end;
      finally
        PostStrings.Free;
        ResponseStream.Free;
      end;
    end;
     
     
    end.

    Und dazu dieses PHP Script:

    Code :
    1
    2
    3
    4
    5
    6
    
    <?php
    echo 'Name: '.$_POST["name"]; //Ausgeben der E-Mail-Adresse
    echo Chr(13).Chr(10); //Zeilenumbruch
    echo 'Passwort: '.$_POST["password"];
     
    ?>

    Nun angenommen das PHP Script soll aus einer MySQL Datenbank mehrere Daten holen, und ausgeben.

    Wie kann ich, wenn zum Beispiel der Wert Telefonnummer ausgegeben wird, die Antwort in eine leere Variable im Delphi Script speichern.

    (Es kommt aber nicht nur zum Beispiel Telefonnummer sondern noch viel mehr auf einmal raus...)
     
    ACHTUNG: Großer großer großer Anfänger am Arbeiten......

  2. #2
    Avatar von Kangaxx
    Kangaxx Kangaxx ist offline Mitglied Silber
    Registriert seit
    Mar 2005
    Ort
    Vaihingen an der Enz
    Beiträge
    88
    Hallo,
    Nachdem du dich, wie mir scheint, mit deinem Username/Passwort welche per POST
    übertragen werden angemeldet hast, wird der Quellcode, sprich der HTML-Code, der Seite
    (welche deine Telefonnummern, etc. enthält) in dem ResponseStream gespeichert.

    Da es sich hierbei um einen großen, langen String handelt wird dir nichts anderes übrigbleiben als die gewünschten Werte zu parsen, sprich "rauszuschneiden".
    Dafür suchst du dir bestimmte Anhaltspunkte im Quellcode.
    Beispiel:
    PHP-Code:
    <html>
      <
    h1>Überschrift</h1>
      <
    p>Tel01602674833</p>
      <
    p>OrtMünchen</p>
    </
    html

    In diesem Fall wären die <p>-Tags ein guter Anhaltspunkt. Die einzelnen Werte
    kannst du dann mit Copy ausschneiden. Abschliessend müsstest du vlt noch in andere Dateitypen casten, sprich beispielsweise mit StrToInt.

    mfg, Kangaxx
     
    Ahh, the Internet! Where men are men, women are men and little girls are FBI agents.

Ähnliche Themen

  1. Abfangen von HTTP Stream
    Von KGD92 im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 19.03.10, 20:18
  2. JPG als HTTP-Stream einbinden VC++ 6
    Von Baron Sengir im Forum VisualStudio & MFC
    Antworten: 0
    Letzter Beitrag: 03.03.06, 18:39
  3. HTTP - Stream lesen
    Von rauchmelder im Forum .NET Archiv
    Antworten: 5
    Letzter Beitrag: 25.03.05, 17:30
  4. HTTP Request schicken, aber keine Antwort erhalten
    Von MD1978 im Forum .NET Archiv
    Antworten: 20
    Letzter Beitrag: 29.12.04, 08:07
  5. Frage - Antwort Spielchen
    Von mouCe im Forum PHP
    Antworten: 5
    Letzter Beitrag: 18.05.04, 21:58