Delphi - URL cím kibontása

forráskód letöltése
Készítünk egy komponenst, amely segítségével részekre bonthatunk egy valós URL címet. Az URL cím megadása után a komponens meghatározza a következőket: Host neve, port, URL útvonal, felhasználó neve, jelszó, extra információ.
A mellékelt példaprogram megnyitása előtt a CrackURL.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A CrackURL komponens URL tulajdonságában adhatunk meg egy valós URL címet. Miután beállítottuk a címet, a komponens máris részekre bontja azt. Az eredmény az alábbi tulajdonságokon keresztül kérdezhető le.
property ExtraInfo: String; 
property HostName: String;
property Password: String;
property Port: Word;
property URLPath: String;
property UserName: String;
Komponensünket a TComponent osztályból származtatjuk. A megadott URL címet a Crack metódus bontja ki, amelyet a SetURL-ből hívunk meg.
A metódus kulcsa az InternetCrackUrl függvény és a TURLComponents struktúra. Ezen elemek használatához a uses listában fel kell sorolnunk a WinInet unit nevét.
InternetCrackUrl
InternetCrackUrl(
lpszUrl: LPCTSTR;
dwUrlLength,
dwFlags: DWORD;
lpUrlComponents: LPURL_COMPONENTS
): BOOL;
A függvény egy valós URL cím elemeinek meghatározására szolgál.
Paraméterek
lpszUrl: LPCTSTR
A felbontandó URL cím.
dwUrlLength: DWORD
A cím hossza.
dwFlags: DWORD
Az elvégzendő művelet típusát.
lpUrlComponents: LPURL_COMPONENTS
Egy URL_COMPONENTS típusú struktúra, amelyben az eredmény tárolásra kerül.
Visszatérési érték
Igaz, ha a művelet elvégzése sikerült, ellenkező esetben hamis.
Az URL_COMPONENTS struktúra
URL_COMPONENTS = record
  dwStructSize: DWORD;       
A struktúra mérete. Verzió ellenőrzésre szolgál.
  lpszScheme: LPSTR;
Mutató az URL mintára.
  dwSchemeLength: DWORD;
A z URL minta hossza.
  nScheme: TInternetScheme;
Felsorolt típusú minta, ha ismert.
lpszHostName: LPSTR;
Mutató a Host nevére.
  dwHostNameLength: DWORD;
A Host nevének hossza.
  nPort: INTERNET_PORT;
A port száma.
  lpszUserName: LPSTR;
Mutató a felhasználó nevére.
  dwUserNameLength: DWORD;
A felhasználó nevének hossza.
  lpszPassword: LPSTR;
Mutató a jelszóra.
  dwPasswordLength: DWORD;
A jelszó hossza.
  lpszUrlPath: LPSTR;
Mutató az URL elérési útra.
  dwUrlPathLength: DWORD;
Az URL elérési út hossza.
  lpszExtraInfo: LPSTR;
Mutató az extra információra.
dwExtraInfoLength: DWORD;
Az extra információ hossza.