Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi URL herausfinden (https://www.delphipraxis.net/27032-url-herausfinden.html)

Die Muhkuh 3. Aug 2004 09:33


URL herausfinden
 
Hi,

ich hab hier eine kleine Function geschrieben um eine URL herauszufinden. Kleines Beispiel:

Man gibt als URL: http://www.delphipraxis.net/internal...bc21bc1cdbb6c7

an und raus kommt: http://www.delphipraxis.net/


So hier ist die Function:

Delphi-Quellcode:
function GetURL(URL: String): String;
const
  URLType: Array[0..13] of String = ('.de', '.com', '.org', '.net', '.at',
                                     '.info', '.biz', '.us', '.co.uk', '.dk',
                                     '.it', '.ws', '.be', '.name');
var
  I: Integer;
begin
  for I := Low(URLType) to High(URLType) do
    if Pos(URLType[I], URL) <> 0 then
      Result := Copy(URL, Pos('http://', URL), Pos(URLType[I], URL) +
                     Length(URLType[I]));
end;

Aufrufbar wäre das ganze:

Delphi-Quellcode:
Edit2.Text := GetURL(Edit1.Text);
//oder
Edit1.Text := GetURL(Edit1.Text);

Wem noch ein paar URLEndungen fehlen, der schreibt sie anfach nach .name hin und erhöht die Zahl bei Array[0..13] dementsprechend.

*MFG*

Spider

Matze 3. Aug 2004 09:36

Re: URL herausfinden
 
Dieser Code funktioniert nicht immer, da du nicht alle Domain-Endungen drin hast.

Russische Domains enden auf .ru
Nur so als Beispiel.

Die Muhkuh 3. Aug 2004 09:39

Re: URL herausfinden
 
Hi Matze,

hab grad meinen Beitrag editiert.

Zitat:

Wem noch ein paar URLEndungen fehlen, der schreibt sie anfach nach .name hin und erhöht die Zahl bei Array[0..13] dementsprechend.
Wenn du willst bau ich es gleich mit ein. Falls du noch ein paar endungen hast, dann schreib sie und ich beu es schnell ein.

Matze 3. Aug 2004 09:42

Re: URL herausfinden
 
Es ist ja echt nett, nur kommen öfters neue Endungen dazu, was dazu führt, dass diese dann nicht erkannt werden.

Vielleicht lässt sich da was mit den Indys realisieren. :gruebel:

CalganX 3. Aug 2004 10:21

Re: URL herausfinden
 
Hi,
ich hab' jetzt mal gerade einen Source zusammengehackt:
Delphi-Quellcode:
function GetDomain(sURL: string): string;
var
  iLastSlashPos: integer;
  sTemp: string;
begin
  if Pos('http://', sURL) = 1 then begin
    sTemp := Copy(sURL, 8, length(sURL)-8);
    iLastSlashPos := Pos('/', sTemp) + 8;
    Result := Copy(sURL, 0, iLastSlashPos-1);
  end else begin
    iLastSlashPos := Pos('/', sURL);
    Result := Copy(sURL, 0, iLastSlashPos);
  end;
end;
Funktioniert sowohl mit www.domain.de/bla/bli/blubb als auch mit http://www.domain.de/bla/bli/blubb ;)
Ist zwar nicht der schönste Source, den ich geschrieben habe, aber er funktioniert. *g*

Chris

MathiasSimmack 3. Aug 2004 10:36

Re: URL herausfinden
 
Habt ihr was gegen [msdn]"InternetCrackUrl"[/msdn] (WinInet-Unit, wenn ich das noch richtig im Kopf habe). Damit habe ich Verknüpfungen in meinem Startmenu Cleaner auf Gültigkeit überprüft. Man kann einen URL komplett zerlegen und sich bspw. nur die Angabe des Servers zurückgeben lassen. Das Protokoll (http, ftp, ...) kann ebenfalls ermittelt werden.

Mal ein Beispielauszug:
Delphi-Quellcode:
              // Protokollschema und Host mit Hilfe von "InternetCrackUrl"
              // ermitteln
              ZeroMemory(@url,sizeof(url));
              url.dwStructSize     := sizeof(url);
              url.lpszHostName     := buf;
              url.dwHostNameLength := sizeof(buf);
              url.lpszScheme       := scheme;
              url.dwSchemeLength   := sizeof(scheme);

              if(InternetCrackUrl(pchar(lnk),
                length(lnk),0,url)) then
              begin
                { ... }
              end;
"buf" wäre der Name des Servers (etwa "delphipraxis.net"), "scheme" würde das Protokoll (http) enthalten. Auf die Weise habe ich bspw. geprüft, ob das benutzte Protokoll auf dem Rechner bekannt ist (sprich: ob es einen passenden Registryeintrag gibt), und dann habe ich mir die IP des Servers geholt und wusste, ob der URL gültig ist. ;)

XHelp 3. Aug 2004 11:42

Re: URL herausfinden
 
Hier sind alle (viele) TopLevel Domains
Sind einbischen mehr als 13 ^_^

MathiasSimmack 3. Aug 2004 15:06

Re: URL herausfinden
 
Spider hat ja auch nicht bloß 13 Domains, sondern 14. :) Aber mit einer anständigen Lösung ist die Liste der Domains uninteressant.

CalganX 16. Aug 2004 18:55

Re: URL herausfinden
 
Hi,
da shmia dass ganze hier zusammengefasst hat, verschiebe ich das ganze Mal einfach in den normalen DP-Bereich zurück. :)

Chris


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