Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem mit Google web APIs (https://www.delphipraxis.net/39318-problem-mit-google-web-apis.html)

popserias 31. Jan 2005 23:40


Problem mit Google web APIs
 
Hiho Board!

Die Suche habe ich verwendet. Ich habe wohl Threads zur google-suche gefunden, aber keinen, der mein Problem behandelte.

Ich hab mir die Google Web APIs gezogen, einen LicenseKey erworben und folgende Unit dazu geschrieben (mit dem einen oder anderen Blick auf ein Tutorial ;) ):
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, SoapHTTPClient, GoogleSearch;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

function GetGoogleSearchPort(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): GoogleSearchPort;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var gsp: GoogleSearchPort;
    result: GoogleSearchResult;
    i: integer;
    rea: ResultElementArray;
begin
   gsp:=GetGoogleSearchPort(True, '', nil);
   result:=gsp.doGoogleSearch('MeinLicenseKey', Edit1.Text, 0, 10, true, 'countryDE', false,
                              'lang_de', 'UTF-8', 'UTF-8');
   if Assigned(result) then
      begin
         Label1.Caption:='Insgesamt '+IntToStr(result.estimatedTotalResultsCount)+' Ergebnisse, die
                         ersten 10 werden angezeigt';
         Memo1.Clear;
         rea:=result.resultElements;
         for i:=0 to high(rea) do
            begin
               Memo1.Lines.Add(rea[i].Title);
               Memo1.Lines.Add(rea[i].Summary);
               Memo1.Lines.Add(rea[i].URL);
               Memo1.Lines.Add(' ');
           end;
      result.Free;
      end;
end;

end.
Beim Compilen meldet er: "Ungenügende Forward- oder External-Deklaration: 'GetGoogleSearchPort'".

Die Unit GoogleSearch entstammt dem WSDL-Import, an der habe ich nichts verändert.
SoapHTTPClient hab ich bei den uses wegen der Verwendung von THTTPRIO deklariert.
Vielleicht ist da ja schon irgendwo der Wurm drin, ich blick jedenfalls nicht so wirklich durch und imo bin ich jetzt auch echt schon lang genug daran gesessen.

In diesem Sinne hoffe ich, dass mir jemand helfen kann,
vielen Dank schonmal,
popserias.

HeikoAdams 1. Feb 2005 00:20

Re: Problem mit Google web APIs
 
Da liegt der Fehler:
Delphi-Quellcode:
function GetGoogleSearchPort(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): GoogleSearchPort;
Der Delphi-Compiler scheint entweder external 'xxx' oder eine lokale (d.h. in der selben Unit) Funktionn "GetGoogleSearchPort" zu erwarten.

Oder um es anders zu formulieren: Du musst dem Compiler auch sagen, wo er die Funktion GetGoogleSearchPort findet.


Gruß

Heiko

popserias 1. Feb 2005 18:00

Re: Problem mit Google web APIs
 
Delphi-Quellcode:
function GetGoogleSearchPort(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): GoogleSearchPort;
external 'GoogleSearch.pas';
habe ich versucht, geht nicht, weil's keine DLL ist.
Oder habe ich das falsch eingebunden?

Füge ich allerdings die function aus GoogleSearch.pas in den implementation-Teil meiner Unit ein, klappt alles tadellos!
Vielen Dank!

Zwei neue Fragen hätte ich allerdings noch:
1) Sollte das Programm nicht zu google connecte können, kommt folgende Fehlermeldung:
Zitat:

The server name or adress could not be resolved - URL:http://api.google.com/search/beta2 -
SOAPAction:urn:GoogleSearchAction.
Wenn ich diese Fehlermeldung ändern möchte, was muss ich denn umschreiben?
Die unit "SoapHTTPClient"?

2) In den Suchergebnissen im Memo-Feld wird der Suchbegriff im 'rea[i].Title' und in der 'rea[i].Summary' (falls vorhanden) immer mit einem ...-Tag versehen.
Gibt es eine einfache Möglichkeit diesen Tag so interpretieren zu lassen, dass er Wörter innerhalb dieses Tags fett schreibt? Oder, dass er diese Tags weglässt?
Um sich das besser vorstellen zu können habe ich für alle Fälle ein Bild [1] hochgeladen.

[1] http://www.audio-recorder.org/PopsCr...etc/b-tags.jpg


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:15 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