Einzelnen Beitrag anzeigen

Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Mit IdHttp (Indy) Text in Feld auf Webseite eintragen

  Alt 11. Apr 2013, 12:31
Leider steht mir nur Delphi 7 Pers. und Lazarus 1.0.8 zur verfügung. Deshalb versuche ich das ganze mit der XML-Schnittstelle von Lazarus. Mit XML hatte ich allerdings bis jetzt nix wirklich zu tun.
... Klappt hinten und vorne noch nicht.
Es gibt einige XML-Libs die du statt TXMLDocument in Delphi 7 verwenden kannst. Z. B. OmniXML, XML Library

Allerdings könntest du für dein aktuelles Vorhaben das XML auch einfach manuell erzeugen:

Delphi-Quellcode:
var
  xml: TStrings;
  response: String;
  TextToCheck: String;
begin
  TextToCheck := Edit1.Text; // das Wort welches geprüft / korrigiert werden soll

  xml := TStringList.Create;
  try
    xml.Add('<?xml version="1.0" encoding="UTF-8"?>');
    xml.Add('<spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1">');
    xml.Add(' <text>' + TextToCheck + '</text>');
    xml.Add('</spellrequest>');

   // idhttp erzeugen
   // properties setzen...
   response := Idhttp.Post(URL, xml);
   // in Response steht nun die Antwort vom Server und kann ausgewertet werden.
  finally
    FreeAndNil(xml);
  end;
end;
So wirds übrigens auch im von sx2008 verlinkten Artikel gemacht: http://stackoverflow.com/questions/1...ll-checker-api

Die Auswertung der XML-Response kannst du evtl. mit Pos, PosEx, Copy oder RegEx machen. Ein richtiger XML-Parser ist da aber in den meisten Fällen die bessere Lösung

EDIT: Ich habe gerade bemerkt, dass in oben verlinkten Thread die Response mittels der Regular Expression <(.|\n)*?> ausgewertet wird. Jetzt musst du nur noch eine RegEx-Klasse deiner Wahl darauf los lassen und brauchst dir keine Gedanken mehr um XML-Parser machen (bis zum nächsten Kontakt mit XML zumindest )

Code:
retValue = Regex.Replace(data, @"<(.|\n)*?>",    string.Empty).Split('\t')[0];
Andreas Lauß
Blog

Geändert von Andreas L. (11. Apr 2013 um 12:49 Uhr)
  Mit Zitat antworten Zitat