浏览代码

Merged revisions 10813,10823,10833,10856 via svnmerge from
svn+ssh://[email protected]/FPC/svn/fpc/trunk

........
r10813 | marco | 2008-04-27 13:29:01 +0200 (Sun, 27 Apr 2008) | 2 lines

* fixes for 10576, two minor items + lots of "VAR" parameter overloads
........
r10823 | marco | 2008-04-27 22:23:30 +0200 (Sun, 27 Apr 2008) | 1 line

* first half of bug report 12226
........
r10833 | marco | 2008-04-28 10:23:56 +0200 (Mon, 28 Apr 2008) | 1 line

* remaining fixes for 11226
........
r10856 | marco | 2008-05-01 18:39:01 +0200 (Thu, 01 May 2008) | 2 lines

* small fix for crackurl/createurl mistake, reported by email by mspiller.
........

git-svn-id: branches/fixes_2_2@10864 -

marco 17 年之前
父节点
当前提交
572d39d9ed
共有 1 个文件被更改,包括 396 次插入23 次删除
  1. 396 23
      packages/winunits-base/src/wininet.pp

+ 396 - 23
packages/winunits-base/src/wininet.pp

@@ -806,6 +806,11 @@ Const
 
      HTTP_VERSIONA           = 'HTTP/1.0';
      HTTP_VERSIONW           : widestring = 'HTTP/1.0';
+     {$ifdef UNICODE}
+       HTTP_VERSION = HTTP_VERSIONW;
+     {$ELSE}
+       HTTP_VERSION = HTTP_VERSIONA;
+     {$ENDIF}
 
 
 //
@@ -1388,10 +1393,13 @@ Type
           dwResult : DWORD_PTR;
           dwError : DWORD;
        end;
-	 TINTERNET_ASYNC_RESULT = INTERNET_ASYNC_RESULT;
+     TINTERNET_ASYNC_RESULT = INTERNET_ASYNC_RESULT;
      LPINTERNET_ASYNC_RESULT = ^INTERNET_ASYNC_RESULT;
      PINTERNET_ASYNC_RESULT = LPINTERNET_ASYNC_RESULT;
-	
+     TINTERNETASYNCRESULT = TINTERNET_ASYNC_RESULT;
+     LPINTERNETASYNCRESULT =LPINTERNET_ASYNC_RESULT;
+     PINTERNETASYNCRESULT = PINTERNET_ASYNC_RESULT;	
+
   { INTERNET_DIAGNOSTIC_SOCKET_INFO - info about the socket in use }
      INTERNET_DIAGNOSTIC_SOCKET_INFO =packed  record
           Socket : DWORD_PTR;
@@ -1403,14 +1411,28 @@ Type
      LPINTERNET_DIAGNOSTIC_SOCKET_INFO = ^INTERNET_DIAGNOSTIC_SOCKET_INFO;
      PINTERNET_DIAGNOSTIC_SOCKET_INFO = LPINTERNET_DIAGNOSTIC_SOCKET_INFO;	
 
+    INTERNET_PREFETCH_STATUS = packed record
+    			dwStatus,
+			dwSize : DWord;
+                        end;
+    TINTERNET_PREFETCH_STATUS= INTERNET_PREFETCH_STATUS; 
+    LPINTERNET_PREFETCH_STATUS= ^INTERNET_PREFETCH_STATUS; 
+    PINTERNET_PREFETCH_STATUS= LPINTERNET_PREFETCH_STATUS; 
+    TINTERNETPREFETCHSTATUS= TINTERNET_PREFETCH_STATUS; 
+    PINTERNETPREFETCHSTATUS= PINTERNET_PREFETCH_STATUS; 
+    LPINTERNETPREFETCHSTATUS= PINTERNET_PREFETCH_STATUS; 
+
      INTERNET_PROXY_INFO = packed record
           dwAccessType : DWORD;
           lpszProxy : LPCTSTR;
           lpszProxyBypass : LPCTSTR;
        end;
-	 TINTERNET_PROXY_INFO = INTERNET_PROXY_INFO ;
+     TINTERNET_PROXY_INFO = INTERNET_PROXY_INFO ;
      LPINTERNET_PROXY_INFO = ^INTERNET_PROXY_INFO;
-     PINTERNET_PROXY_INFO = LPINTERNET_PROXY_INFO;	
+     PINTERNET_PROXY_INFO = LPINTERNET_PROXY_INFO;
+     TINTERNETPROXYINFO =   TINTERNET_PROXY_INFO;
+     LPINTERNETPROXYINFO =  LPINTERNET_PROXY_INFO;
+     PINTERNETPROXYINFO =   PINTERNET_PROXY_INFO;
 
      INTERNET_PER_CONN_OPTIONA = record
           dwOption : DWORD;
@@ -1489,21 +1511,31 @@ Type
      LPINTERNET_VERSION_INFO = ^INTERNET_VERSION_INFO;
      PINTERNET_VERSION_INFO = LPINTERNET_VERSION_INFO;	
      TINTERNET_VERSION_INFO = INTERNET_VERSION_INFO;
+     LPINTERNETVERSIONINFO = LPINTERNET_VERSION_INFO;
+     PINTERNETVERSIONINFO =  PINTERNET_VERSION_INFO;
+     TINTERNETVERSIONINFO =  TINTERNET_VERSION_INFO;
+
      HTTP_VERSION_INFO = record
           dwMajorVersion : DWORD;
           dwMinorVersion : DWORD;
        end;
-	 THTTP_VERSION_INFO = HTTP_VERSION_INFO;
+     THTTP_VERSION_INFO = HTTP_VERSION_INFO;
      LPHTTP_VERSION_INFO = ^HTTP_VERSION_INFO;
      PHTTP_VERSION_INFO = LPHTTP_VERSION_INFO;	
+     LPHTTPVERSIONINFO = LPHTTP_VERSION_INFO;
+     PHTTPVERSIONINFO =  PHTTP_VERSION_INFO;
+     THTTPVERSIONINFO =  THTTP_VERSION_INFO;
 
      INTERNET_CONNECTED_INFO = record
           dwConnectedState : DWORD;
           dwFlags : DWORD;
        end;
-	 TINTERNET_CONNECTED_INFO = INTERNET_CONNECTED_INFO;
+     TINTERNET_CONNECTED_INFO = INTERNET_CONNECTED_INFO;
      LPINTERNET_CONNECTED_INFO = ^INTERNET_CONNECTED_INFO;
-	 PINTERNET_CONNECTED_INFO = LPINTERNET_CONNECTED_INFO;
+     PINTERNET_CONNECTED_INFO = LPINTERNET_CONNECTED_INFO;
+     TINTERNETCONNECTEDINFO =  TINTERNET_CONNECTED_INFO;
+     LPINTERNETCONNECTEDINFO = LPINTERNET_CONNECTED_INFO;
+     PINTERNETCONNECTEDINFO =  PINTERNET_CONNECTED_INFO;
 
      URL_COMPONENTSA = record
           dwStructSize : DWORD;
@@ -1524,7 +1556,8 @@ Type
        end;
      LPURL_COMPONENTSA = ^URL_COMPONENTSA;
      PURL_COMPONENTSA = LPURL_COMPONENTSA;	
-	 TURL_COMPONENTSA = URL_COMPONENTSA;
+     TURL_COMPONENTSA = URL_COMPONENTSA;
+
      URL_COMPONENTSW = record
           dwStructSize : DWORD;
           lpszScheme : LPWSTR;
@@ -1557,7 +1590,10 @@ Type
      TURL_COMPONENTS = URL_COMPONENTSA;
      PURL_COMPONENTS = LPURL_COMPONENTSA;
 {$endif}
-
+     TURLComponents  = TURL_COMPONENTS;
+     LPURLCOMPONENTS = LPURL_COMPONENTS;
+     PURLCOMPONENTS =  PURL_COMPONENTS;
+     
      INTERNET_CERTIFICATE_INFO = record
           ftExpiry : FILETIME;
           ftStart : FILETIME;
@@ -1568,10 +1604,13 @@ Type
           lpszEncryptionAlgName : LPTSTR;
           dwKeySize : DWORD;
        end;
-	 TINTERNET_CERTIFICATE_INFO = INTERNET_CERTIFICATE_INFO;
+     TINTERNET_CERTIFICATE_INFO = INTERNET_CERTIFICATE_INFO;
      LPINTERNET_CERTIFICATE_INFO = ^INTERNET_CERTIFICATE_INFO;
-	 PINTERNET_CERTIFICATE_INFO = LPINTERNET_CERTIFICATE_INFO;
-	
+     PINTERNET_CERTIFICATE_INFO = LPINTERNET_CERTIFICATE_INFO;
+     TINTERNETCERTIFICATEINFO =  TINTERNET_CERTIFICATE_INFO;
+     LPINTERNETCERTIFICATEINFO = LPINTERNET_CERTIFICATE_INFO;
+     PINTERNETCERTIFICATEINFO =  PINTERNET_CERTIFICATE_INFO;
+
      LPINTERNET_BUFFERSA = ^_INTERNET_BUFFERSA;
      _INTERNET_BUFFERSA = record
           dwStructSize : DWORD;
@@ -1586,9 +1625,12 @@ Type
           dwOffsetHigh : DWORD;
        end;
      INTERNET_BUFFERSA = _INTERNET_BUFFERSA;
-	 TINTERNET_BUFFERSA = _INTERNET_BUFFERSA;
 
-	 PINTERNET_BUFFERSA = LPINTERNET_BUFFERSA;
+     TINTERNET_BUFFERSA = _INTERNET_BUFFERSA;
+     PINTERNET_BUFFERSA = LPINTERNET_BUFFERSA;
+     TINTERNETBUFFERSA = TINTERNET_BUFFERSA;
+     PINTERNETBUFFERSA = PINTERNET_BUFFERSA; 
+
      LPINTERNET_BUFFERSW = ^_INTERNET_BUFFERSW;
      _INTERNET_BUFFERSW = record
           dwStructSize : DWORD;
@@ -1603,9 +1645,11 @@ Type
           dwOffsetHigh : DWORD;
        end;
      INTERNET_BUFFERSW = _INTERNET_BUFFERSW;
-
      TINTERNET_BUFFERSW = _INTERNET_BUFFERSW;
      PINTERNET_BUFFERSW = LPINTERNET_BUFFERSW;
+     TINTERNETBUFFERSW = TINTERNET_BUFFERSW;
+     PINTERNETBUFFERSW = PINTERNET_BUFFERSW;
+
 {$ifdef UNICODE}
      INTERNET_BUFFERS = INTERNET_BUFFERSW;
      LPINTERNET_BUFFERS = LPINTERNET_BUFFERSW;
@@ -1617,6 +1661,8 @@ Type
      TINTERNET_BUFFERS = INTERNET_BUFFERSA;
      PINTERNET_BUFFERS = LPINTERNET_BUFFERSA;
 {$endif}
+     TINTERNETBUFFERS = TINTERNET_BUFFERS;
+     PINTERNETBUFFERS = PINTERNET_BUFFERS;    
 
      IncomingCookieState = record
           cSession : longint;
@@ -2026,10 +2072,6 @@ Type
   function InternetTimeFromSystemTimeW(pst:PSYSTEMTIME; dwRFC:DWORD; lpszTime:LPWSTR; cbTime:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetTimeFromSystemTimeW';
   function InternetTimeToSystemTimeA(lpszTime:LPCSTR; pst:PSYSTEMTIME; dwReserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetTimeToSystemTimeA';
   function InternetTimeToSystemTimeW(lpszTime:LPCWSTR; pst:PSYSTEMTIME; dwReserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetTimeToSystemTimeW';
-  function InternetCrackUrlA(lpszUrl:LPCSTR; dwUrlLength:DWORD; dwFlags:DWORD; lpUrlComponents:LPURL_COMPONENTSA):BOOL;stdcall;external WININETLIBNAME name 'InternetCrackUrlA';
-  function InternetCrackUrlW(lpszUrl:LPCWSTR; dwUrlLength:DWORD; dwFlags:DWORD; lpUrlComponents:LPURL_COMPONENTSW):BOOL;stdcall;external WININETLIBNAME name 'InternetCrackUrlW';
-  function InternetCreateUrlA(lpUrlComponents:LPURL_COMPONENTSA; dwFlags:DWORD; lpszUrl:LPSTR; lpdwUrlLength:LPDWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCreateUrlA';
-  function InternetCreateUrlW(lpUrlComponents:LPURL_COMPONENTSW; dwFlags:DWORD; lpszUrl:LPWSTR; lpdwUrlLength:LPDWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCreateUrlW';
   function InternetCanonicalizeUrlA(lpszUrl:LPCSTR; lpszBuffer:LPSTR; lpdwBufferLength:LPDWORD; dwFlags:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCanonicalizeUrlA';
   function InternetCanonicalizeUrlW(lpszUrl:LPCWSTR; lpszBuffer:LPWSTR; lpdwBufferLength:LPDWORD; dwFlags:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCanonicalizeUrlW';
   function InternetCombineUrlA(lpszBaseUrl:LPCSTR; lpszRelativeUrl:LPCSTR; lpszBuffer:LPSTR; lpdwBufferLength:LPDWORD; dwFlags:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCombineUrlA';
@@ -2046,12 +2088,11 @@ Type
   function InternetOpenUrlW(hInternet:HINTERNET; lpszUrl:LPCWSTR; lpszHeaders:LPCWSTR; dwHeadersLength:DWORD; dwFlags:DWORD;
              dwContext:DWORD_PTR):HINTERNET;stdcall;external WININETLIBNAME name 'InternetOpenUrlW';
   function InternetReadFile(hFile:HINTERNET; lpBuffer:LPVOID; dwNumberOfBytesToRead:DWORD; lpdwNumberOfBytesRead:LPDWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetReadFile';
-  function InternetReadFile(hFile:HINTERNET; lpBuffer:LPVOID; dwNumberOfBytesToRead:DWORD; var lpdwNumberOfBytesRead:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetReadFile';
+
   function InternetReadFileExA(hFile:HINTERNET; lpBuffersOut:LPINTERNET_BUFFERSA; dwFlags:DWORD; dwContext:DWORD_PTR):BOOL;stdcall;external WININETLIBNAME name 'InternetReadFileExA';
   function InternetReadFileExW(hFile:HINTERNET; lpBuffersOut:LPINTERNET_BUFFERSW; dwFlags:DWORD; dwContext:DWORD_PTR):BOOL;stdcall;external WININETLIBNAME name 'InternetReadFileExW';
   function InternetSetFilePointer(hFile:HINTERNET; lDistanceToMove:LONG; pReserved:PVOID; dwMoveMethod:DWORD; dwContext:DWORD_PTR):DWORD;stdcall;external WININETLIBNAME name 'InternetSetFilePointer';
   function InternetWriteFile(hFile:HINTERNET; lpBuffer:LPCVOID; dwNumberOfBytesToWrite:DWORD; lpdwNumberOfBytesWritten:LPDWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetWriteFile';
-  function InternetWriteFile(hFile:HINTERNET; lpBuffer:LPCVOID; dwNumberOfBytesToWrite:DWORD; var lpdwNumberOfBytesWritten:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetWriteFile';
   function InternetQueryDataAvailable(hFile:HINTERNET; lpdwNumberOfBytesAvailable:LPDWORD; dwFlags:DWORD; dwContext:DWORD_PTR):BOOL;stdcall;external WININETLIBNAME name 'InternetQueryDataAvailable';
   function InternetFindNextFileA(hFind:HINTERNET; lpvFindData:LPVOID):BOOL;stdcall;external WININETLIBNAME name 'InternetFindNextFileA';
   function InternetFindNextFileW(hFind:HINTERNET; lpvFindData:LPVOID):BOOL;stdcall;external WININETLIBNAME name 'InternetFindNextFileW';
@@ -2221,7 +2262,115 @@ Type
   function PrivacyGetZonePreferenceW(dwZone:DWORD; dwType:DWORD; pdwTemplate:LPDWORD; pszBuffer:LPWSTR; pdwBufferLength:LPDWORD):DWORD;stdcall;external WININETLIBNAME name 'PrivacyGetZonePreferenceW';
   function InternetClearAllPerSiteCookieDecisions:BOOL;stdcall;external WININETLIBNAME name 'InternetClearAllPerSiteCookieDecisions';
 
+  { Delphi overloads, see bug 10576 and 11226}
+
+  function InternetCreateUrlA(lpUrlComponents:LPURL_COMPONENTSA; dwFlags:DWORD; lpszUrl:LPSTR; var lpdwUrlLength:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCreateUrlA';
+  function InternetCreateUrlW(lpUrlComponents:LPURL_COMPONENTSW; dwFlags:DWORD; lpszUrl:LPWSTR;var lpdwUrlLength:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCreateUrlW';
+  function InternetCanonicalizeUrlA(lpszUrl:LPCSTR; lpszBuffer:LPSTR; var lpdwBufferLength:DWORD; dwFlags:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCanonicalizeUrlA';
+  function InternetCanonicalizeUrlW(lpszUrl:LPCWSTR; lpszBuffer:LPWSTR; var lpdwBufferLength:DWORD; dwFlags:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCanonicalizeUrlW';
+  function InternetCombineUrlA(lpszBaseUrl:LPCSTR; lpszRelativeUrl:LPCSTR; lpszBuffer:LPSTR; var lpdwBufferLength:DWORD; dwFlags:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCombineUrlA';
+  function InternetCombineUrlW(lpszBaseUrl:LPCWSTR; lpszRelativeUrl:LPCWSTR; lpszBuffer:LPWSTR;var lpdwBufferLength:DWORD; dwFlags:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCombineUrlW';
+  function InternetQueryDataAvailable(hFile:HINTERNET; var lpdwNumberOfBytesAvailable:DWORD; dwFlags:DWORD; dwContext:DWORD_PTR):BOOL;stdcall;external WININETLIBNAME name 'InternetQueryDataAvailable';
+  function InternetQueryOptionA(hInternet:HINTERNET; dwOption:DWORD; lpBuffer:LPVOID; var lpdwBufferLength:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetQueryOptionA';
+  function InternetReadFile(hFile:HINTERNET; lpBuffer:LPVOID; dwNumberOfBytesToRead:DWORD; var lpdwNumberOfBytesRead:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetReadFile';
+  function InternetWriteFile(hFile:HINTERNET; lpBuffer:LPCVOID; dwNumberOfBytesToWrite:DWORD; var lpdwNumberOfBytesWritten:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetWriteFile';
+  function InternetQueryOptionW(hInternet:HINTERNET; dwOption:DWORD; lpBuffer:LPVOID; var lpdwBufferLength:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetQueryOptionW';
+  function InternetGetLastResponseInfoA(var dwError:DWORD; lpszBuffer:LPSTR; var lpdwBufferLength:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetGetLastResponseInfoA';
+  function InternetGetLastResponseInfoW(var dwError:DWORD; lpszBuffer:LPWSTR; var lpdwBufferLength:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetGetLastResponseInfoW';
+  function FtpGetFileSize(hFile:HINTERNET; var lpdwFileSizeHigh:DWORD):DWORD;stdcall;external WININETLIBNAME name 'FtpGetFileSize';
+  function GopherCreateLocatorA(lpszHost:LPCSTR; nServerPort:INTERNET_PORT; lpszDisplayString:LPCSTR; lpszSelectorString:LPCSTR; dwGopherType:DWORD;
+             lpszLocator:LPSTR; var lpdwBufferLength:DWORD):BOOL;stdcall;external WININETLIBNAME name 'GopherCreateLocatorA';
+  function GopherCreateLocatorW(lpszHost:LPCWSTR; nServerPort:INTERNET_PORT; lpszDisplayString:LPCWSTR; lpszSelectorString:LPCWSTR; dwGopherType:DWORD;
+             lpszLocator:LPWSTR; var lpdwBufferLength:DWORD):BOOL;stdcall;external WININETLIBNAME name 'GopherCreateLocatorW';
+  function GopherGetLocatorTypeA(lpszLocator:LPCSTR; var lpdwGopherType:DWORD):BOOL;stdcall;external WININETLIBNAME name 'GopherGetLocatorTypeA';
+  function GopherGetLocatorTypeW(lpszLocator:LPCWSTR; var lpdwGopherType:DWORD):BOOL;stdcall;external WININETLIBNAME name 'GopherGetLocatorTypeW';
+  function HttpQueryInfoA(hRequest:HINTERNET; dwInfoLevel:DWORD; lpBuffer:LPVOID; var lpdwBufferLength:DWORD; var lpdwIndex:DWORD):BOOL;stdcall;external WININETLIBNAME name 'HttpQueryInfoA';
+  function HttpQueryInfoW(hRequest:HINTERNET; dwInfoLevel:DWORD; lpBuffer:LPVOID; var lpdwBufferLength:DWORD; var lpdwIndex:DWORD):BOOL;stdcall;external WININETLIBNAME name 'HttpQueryInfoW';
+  function InternetGetCookieA(lpszUrl:LPCSTR; lpszCookieName:LPCSTR; lpszCookieData:LPSTR;var lpdwSize:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetGetCookieA';
+  function InternetGetCookieW(lpszUrl:LPCWSTR; lpszCookieName:LPCWSTR; lpszCookieData:LPWSTR;var lpdwSize:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetGetCookieW';
+  function InternetGetCookieExA(lpszUrl:LPCSTR; lpszCookieName:LPCSTR; lpszCookieData:LPSTR; var lpdwSize:DWORD; dwFlags:DWORD;
+             lpReserved:LPVOID):BOOL;stdcall;external WININETLIBNAME name 'InternetGetCookieExA';
+  function InternetGetCookieExW(lpszUrl:LPCWSTR; lpszCookieName:LPCWSTR; lpszCookieData:LPWSTR; var lpdwSize:DWORD; dwFlags:DWORD;
+             lpReserved:LPVOID):BOOL;stdcall;external WININETLIBNAME name 'InternetGetCookieExW';
+  function RetrieveUrlCacheEntryFileA(lpszUrlName:LPCSTR; lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA; var lpcbCacheEntryInfo:DWORD; dwReserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'RetrieveUrlCacheEntryFileA';
+  function RetrieveUrlCacheEntryFileW(lpszUrlName:LPCWSTR; lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW; var lpcbCacheEntryInfo:DWORD; dwReserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'RetrieveUrlCacheEntryFileW';
+  function RetrieveUrlCacheEntryStreamA(lpszUrlName:LPCSTR; lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA; var lpcbCacheEntryInfo:DWORD; fRandomRead:BOOL; dwReserved:DWORD):HANDLE;stdcall;external WININETLIBNAME name 'RetrieveUrlCacheEntryStreamA';
+  function RetrieveUrlCacheEntryStreamW(lpszUrlName:LPCWSTR; lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW; var lpcbCacheEntryInfo:DWORD; fRandomRead:BOOL; dwReserved:DWORD):HANDLE;stdcall;external WININETLIBNAME name 'RetrieveUrlCacheEntryStreamW';
+  function ReadUrlCacheEntryStream(hUrlCacheStream:HANDLE; dwLocation:DWORD; lpBuffer:LPVOID; var lpdwLen:DWORD; Reserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'ReadUrlCacheEntryStream';
+  function GetUrlCacheEntryInfoA(lpszUrlName:LPCSTR; lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA; var lpcbCacheEntryInfo:DWORD):BOOL;stdcall;external WININETLIBNAME name 'GetUrlCacheEntryInfoA';
+  function GetUrlCacheEntryInfoW(lpszUrlName:LPCWSTR; lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW; var lpcbCacheEntryInfo:DWORD):BOOL;stdcall;external WININETLIBNAME name 'GetUrlCacheEntryInfoW';
+  function GetUrlCacheGroupAttributeA(gid:GROUPID; dwFlags:DWORD; dwAttributes:DWORD; lpGroupInfo:LPINTERNET_CACHE_GROUP_INFOA; var lpdwGroupInfo:DWORD;
+             lpReserved:LPVOID):BOOL;stdcall;external WININETLIBNAME name 'GetUrlCacheGroupAttributeA';
+  function GetUrlCacheGroupAttributeW(gid:GROUPID; dwFlags:DWORD; dwAttributes:DWORD; lpGroupInfo:LPINTERNET_CACHE_GROUP_INFOW; var lpdwGroupInfo:DWORD;
+             lpReserved:LPVOID):BOOL;stdcall;external WININETLIBNAME name 'GetUrlCacheGroupAttributeW';
+  function GetUrlCacheEntryInfoExA(lpszUrl:LPCSTR; lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA; var lpcbCacheEntryInfo:DWORD; lpszRedirectUrl:LPSTR; var lpcbRedirectUrl:DWORD;
+             lpReserved:LPVOID; dwFlags:DWORD):BOOL;stdcall;external WININETLIBNAME name 'GetUrlCacheEntryInfoExA';
+  function GetUrlCacheEntryInfoExW(lpszUrl:LPCWSTR; lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW; var lpcbCacheEntryInfo:DWORD; lpszRedirectUrl:LPWSTR; var lpcbRedirectUrl:DWORD;
+             lpReserved:LPVOID; dwFlags:DWORD):BOOL;stdcall;external WININETLIBNAME name 'GetUrlCacheEntryInfoExW';
+  function FindFirstUrlCacheEntryExA(lpszUrlSearchPattern:LPCSTR; dwFlags:DWORD; dwFilter:DWORD; GroupId:GROUPID; lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+             var lpcbEntryInfo:DWORD; lpGroupAttributes:LPVOID; var lpcbGroupAttributes:DWORD; lpReserved:LPVOID):HANDLE;stdcall;external WININETLIBNAME name 'FindFirstUrlCacheEntryExA';
+  function FindFirstUrlCacheEntryExW(lpszUrlSearchPattern:LPCWSTR; dwFlags:DWORD; dwFilter:DWORD; GroupId:GROUPID; lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+             var lpcbEntryInfo:DWORD; lpGroupAttributes:LPVOID; var lpcbGroupAttributes:DWORD; lpReserved:LPVOID):HANDLE;stdcall;external WININETLIBNAME name 'FindFirstUrlCacheEntryExW';
+
+  function FindNextUrlCacheEntryExA(hEnumHandle:HANDLE; lpNextCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA; var lpcbEntryInfo:DWORD; lpGroupAttributes:LPVOID; lpcbGroupAttributes:LPDWORD;
+             lpReserved:LPVOID):BOOL;stdcall;external WININETLIBNAME name 'FindNextUrlCacheEntryExA';
+  function FindNextUrlCacheEntryExW(hEnumHandle:HANDLE; lpNextCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW; var lpcbEntryInfo:DWORD; lpGroupAttributes:LPVOID; lpcbGroupAttributes:LPDWORD;
+             lpReserved:LPVOID):BOOL;stdcall;external WININETLIBNAME name 'FindNextUrlCacheEntryExW';
+  function FindFirstUrlCacheEntryA(lpszUrlSearchPattern:LPCSTR; lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA; var lpcbCacheEntryInfo:DWORD):HANDLE;stdcall;external WININETLIBNAME name 'FindFirstUrlCacheEntryA';
+  function FindFirstUrlCacheEntryW(lpszUrlSearchPattern:LPCWSTR; lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW; var lpcbCacheEntryInfo:DWORD):HANDLE;stdcall;external WININETLIBNAME name 'FindFirstUrlCacheEntryW';
+  function FindNextUrlCacheEntryA(hEnumHandle:HANDLE; lpNextCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA; var lpcbCacheEntryInfo:DWORD):BOOL;stdcall;external WININETLIBNAME name 'FindNextUrlCacheEntryA';
+  function FindNextUrlCacheEntryW(hEnumHandle:HANDLE; lpNextCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW; var lpcbCacheEntryInfo:DWORD):BOOL;stdcall;external WININETLIBNAME name 'FindNextUrlCacheEntryW';
+  function InternetDialA(hwndParent:HWND; lpszConnectoid:LPSTR; dwFlags:DWORD; var lpdwConnection:DWORD; dwReserved:DWORD):DWORD;stdcall;external WININETLIBNAME name 'InternetDialA';
+  function InternetDialW(hwndParent:HWND; lpszConnectoid:LPWSTR; dwFlags:DWORD; var lpdwConnection:DWORD; dwReserved:DWORD):DWORD;stdcall;external WININETLIBNAME name 'InternetDialW';
+  function InternetGetConnectedState(var lpdwFlags:DWORD; dwReserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetGetConnectedState';
+  function InternetGetConnectedStateExA(var lpdwFlags:DWORD; lpszConnectionName:LPSTR; dwBufLen:DWORD; dwReserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetGetConnectedStateExA';
+  function InternetGetConnectedStateExW(var lpdwFlags:DWORD; lpszConnectionName:LPWSTR; dwBufLen:DWORD; dwReserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetGetConnectedStateExW';
+  function PrivacyGetZonePreferenceW(dwZone:DWORD; dwType:DWORD; var pdwTemplate:DWORD; pszBuffer:LPWSTR; var pdwBufferLength:DWORD):DWORD;stdcall;external WININETLIBNAME name 'PrivacyGetZonePreferenceW';
+
+  function FtpGetCurrentDirectoryA(hConnect:HINTERNET; lpszCurrentDirectory:LPSTR; var lpdwCurrentDirectory:DWORD):BOOL;stdcall;external WININETLIBNAME name 'FtpGetCurrentDirectoryA';
+  function FtpGetCurrentDirectoryW(hConnect:HINTERNET; lpszCurrentDirectory:LPWSTR; var lpdwCurrentDirectory:DWORD):BOOL;stdcall;external WININETLIBNAME name 'FtpGetCurrentDirectoryW';
+  function FtpFindFirstFileA(hConnect:HINTERNET; lpszSearchFile:LPCSTR; var lpFindFileData:WIN32_FIND_DATA; dwFlags:DWORD; dwContext:DWORD_PTR):HINTERNET;stdcall;external WININETLIBNAME name 'FtpFindFirstFileA';
+  function FtpFindFirstFileW(hConnect:HINTERNET; lpszSearchFile:LPCWSTR; var lpFindFileData:WIN32_FIND_DATAW; dwFlags:DWORD; dwContext:DWORD_PTR):HINTERNET;stdcall;external WININETLIBNAME name 'FtpFindFirstFileW';
+  function GopherFindFirstFileA(hConnect:HINTERNET; lpszLocator:LPCSTR; lpszSearchString:LPCSTR; var lpFindData:GOPHER_FIND_DATAA; dwFlags:DWORD;
+             dwContext:DWORD_PTR):HINTERNET;stdcall;external WININETLIBNAME name 'GopherFindFirstFileA';
+  function GopherFindFirstFileW(hConnect:HINTERNET; lpszLocator:LPCWSTR; lpszSearchString:LPCWSTR; var lpFindData:GOPHER_FIND_DATAW; dwFlags:DWORD;
+             dwContext:DWORD_PTR):HINTERNET;stdcall;external WININETLIBNAME name 'GopherFindFirstFileW';
+  function GopherGetAttributeA(hConnect:HINTERNET; lpszLocator:LPCSTR; lpszAttributeName:LPCSTR; lpBuffer:LPBYTE; dwBufferLength:DWORD;
+             var lpdwCharactersReturned:DWORD; lpfnEnumerator:GOPHER_ATTRIBUTE_ENUMERATOR; dwContext:DWORD_PTR):BOOL;stdcall;external WININETLIBNAME name 'GopherGetAttributeA';
+  function GopherGetAttributeW(hConnect:HINTERNET; lpszLocator:LPCWSTR; lpszAttributeName:LPCWSTR; lpBuffer:LPBYTE; dwBufferLength:DWORD;
+             var lpdwCharactersReturned:DWORD; lpfnEnumerator:GOPHER_ATTRIBUTE_ENUMERATOR; dwContext:DWORD_PTR):BOOL;stdcall;external WININETLIBNAME name 'GopherGetAttributeW';
+
+  function InternetErrorDlg(hWnd:HWND; hRequest:HINTERNET; dwError:DWORD; dwFlags:DWORD; var lppvData:pointer):DWORD;stdcall;external WININETLIBNAME name 'InternetErrorDlg';
+  function RetrieveUrlCacheEntryFileA(lpszUrlName:LPCSTR; var lpCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOA; lpcbCacheEntryInfo:LPDWORD; dwReserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'RetrieveUrlCacheEntryFileA';
+  function RetrieveUrlCacheEntryFileW(lpszUrlName:LPCWSTR; var lpCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOW; lpcbCacheEntryInfo:LPDWORD; dwReserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'RetrieveUrlCacheEntryFileW';
+  function RetrieveUrlCacheEntryStreamA(lpszUrlName:LPCSTR; var lpCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOA; lpcbCacheEntryInfo:LPDWORD; fRandomRead:BOOL; dwReserved:DWORD):HANDLE;stdcall;external WININETLIBNAME name 'RetrieveUrlCacheEntryStreamA';
+  function RetrieveUrlCacheEntryStreamW(lpszUrlName:LPCWSTR; var lpCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOW; lpcbCacheEntryInfo:LPDWORD; fRandomRead:BOOL; dwReserved:DWORD):HANDLE;stdcall;external WININETLIBNAME name 'RetrieveUrlCacheEntryStreamW';
+  function ReadUrlCacheEntryStream(hUrlCacheStream:HANDLE; dwLocation:DWORD; var lpBuffer; lpdwLen:LPDWORD; Reserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'ReadUrlCacheEntryStream';
+  function GetUrlCacheEntryInfoA(lpszUrlName:LPCSTR; var lpCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOA; lpcbCacheEntryInfo:LPDWORD):BOOL;stdcall;external WININETLIBNAME name 'GetUrlCacheEntryInfoA';
+  function GetUrlCacheEntryInfoW(lpszUrlName:LPCWSTR; var lpCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOW; lpcbCacheEntryInfo:LPDWORD):BOOL;stdcall;external WININETLIBNAME name 'GetUrlCacheEntryInfoW';
+  function SetUrlCacheEntryInfoA(lpszUrlName:LPCSTR; var lpCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOA; dwFieldControl:DWORD):BOOL;stdcall;external WININETLIBNAME name 'SetUrlCacheEntryInfoA';
+  function SetUrlCacheEntryInfoW(lpszUrlName:LPCWSTR; var lpCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOW; dwFieldControl:DWORD):BOOL;stdcall;external WININETLIBNAME name 'SetUrlCacheEntryInfoW';
+  function FindFirstUrlCacheEntryExA(lpszUrlSearchPattern:LPCSTR; dwFlags:DWORD; dwFilter:DWORD; GroupId:GROUPID; var lpFirstCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOA;
+             lpcbEntryInfo:LPDWORD; lpGroupAttributes:LPVOID; lpcbGroupAttributes:LPDWORD; lpReserved:LPVOID):HANDLE;stdcall;external WININETLIBNAME name 'FindFirstUrlCacheEntryExA';
+  function FindFirstUrlCacheEntryExW(lpszUrlSearchPattern:LPCWSTR; dwFlags:DWORD; dwFilter:DWORD; GroupId:GROUPID; var lpFirstCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOW;
+             lpcbEntryInfo:LPDWORD; lpGroupAttributes:LPVOID; lpcbGroupAttributes:LPDWORD; lpReserved:LPVOID):HANDLE;stdcall;external WININETLIBNAME name 'FindFirstUrlCacheEntryExW';
+  function FindNextUrlCacheEntryExA(hEnumHandle:HANDLE; var lpNextCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOA; lpcbEntryInfo:LPDWORD; lpGroupAttributes:LPVOID; lpcbGroupAttributes:LPDWORD;
+             lpReserved:LPVOID):BOOL;stdcall;external WININETLIBNAME name 'FindNextUrlCacheEntryExA';
+  function FindNextUrlCacheEntryExW(hEnumHandle:HANDLE; var lpNextCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOW; lpcbEntryInfo:LPDWORD; lpGroupAttributes:LPVOID; lpcbGroupAttributes:LPDWORD;
+             lpReserved:LPVOID):BOOL;stdcall;external WININETLIBNAME name 'FindNextUrlCacheEntryExW';
+  function FindFirstUrlCacheEntryA(lpszUrlSearchPattern:LPCSTR; var lpFirstCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOA; lpcbCacheEntryInfo:LPDWORD):HANDLE;stdcall;external WININETLIBNAME name 'FindFirstUrlCacheEntryA';
+  function FindFirstUrlCacheEntryW(lpszUrlSearchPattern:LPCWSTR; var lpFirstCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOW; lpcbCacheEntryInfo:LPDWORD):HANDLE;stdcall;external WININETLIBNAME name 'FindFirstUrlCacheEntryW';
+  function FindNextUrlCacheEntryA(hEnumHandle:HANDLE; var lpNextCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOA; lpcbCacheEntryInfo:LPDWORD):BOOL;stdcall;external WININETLIBNAME name 'FindNextUrlCacheEntryA';
+  function FindNextUrlCacheEntryW(hEnumHandle:HANDLE; var lpNextCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOW; lpcbCacheEntryInfo:LPDWORD):BOOL;stdcall;external WININETLIBNAME name 'FindNextUrlCacheEntryW';
+
+  function InternetCrackUrlW(lpszUrl:LPCWSTR; dwUrlLength:DWORD; dwFlags:DWORD; var lpUrlComponents:URL_COMPONENTSW):BOOL;stdcall;external WININETLIBNAME name 'InternetCrackUrlW';
+  function InternetCreateUrlW(var lpUrlComponents:URL_COMPONENTSW; dwFlags:DWORD; lpszUrl:LPWSTR; lpdwUrlLength:LPDWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCreateUrlW';
+  function InternetCrackUrlA(lpszUrl:LPCSTR; dwUrlLength:DWORD; dwFlags:DWORD; var lpUrlComponents:URL_COMPONENTSA):BOOL;stdcall;external WININETLIBNAME name 'InternetCrackUrlA';
+  function InternetCreateUrlA(var lpUrlComponents:URL_COMPONENTSA; dwFlags:DWORD; lpszUrl:LPSTR; lpdwUrlLength:LPDWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCreateUrlA';
+
+
 {$ifndef UNICODE}
+
   function InternetTimeFromSystemTime(pst:PSYSTEMTIME; dwRFC:DWORD; lpszTime:LPSTR; cbTime:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetTimeFromSystemTimeA';
   function InternetTimeToSystemTime(lpszTime:LPCSTR; pst:PSYSTEMTIME; dwReserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetTimeToSystemTimeA';
   function InternetCrackUrl(lpszUrl:LPCSTR; dwUrlLength:DWORD; dwFlags:DWORD; lpUrlComponents:LPURL_COMPONENTSA):BOOL;stdcall;external WININETLIBNAME name 'InternetCrackUrlA';
@@ -2304,7 +2453,55 @@ Type
   function InternetSetPerSiteCookieDecision(pchHostName:LPCSTR; dwDecision:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetSetPerSiteCookieDecisionA';
   function InternetGetPerSiteCookieDecision(pchHostName:LPCSTR; pResult:Pdword):BOOL;stdcall;external WININETLIBNAME name 'InternetGetPerSiteCookieDecisionA';
   function InternetEnumPerSiteCookieDecision(pszSiteName:LPSTR; pcSiteNameSize:Pdword; pdwDecision:Pdword; dwIndex:dword):BOOL;stdcall;external WININETLIBNAME name 'InternetEnumPerSiteCookieDecisionA';
+
+  function InternetCrackUrl(lpszUrl:LPCSTR; dwUrlLength:DWORD; dwFlags:DWORD; var lpUrlComponents:URL_COMPONENTSA):BOOL;stdcall;external WININETLIBNAME name 'InternetCrackUrlA';
+  function InternetCreateUrl(var lpUrlComponents:URL_COMPONENTSA; dwFlags:DWORD; lpszUrl:LPSTR; lpdwUrlLength:LPDWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCreateUrlA';
+  function InternetCreateUrl(lpUrlComponents:LPURL_COMPONENTSA; dwFlags:DWORD; lpszUrl:LPSTR; var lpdwUrlLength:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCreateUrlA';
+  function InternetCanonicalizeUrl(lpszUrl:LPCSTR; lpszBuffer:LPSTR; var lpdwBufferLength:DWORD; dwFlags:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCanonicalizeUrlA';
+  function InternetCombineUrl(lpszBaseUrl:LPCSTR; lpszRelativeUrl:LPCSTR; lpszBuffer:LPSTR; var lpdwBufferLength:DWORD; dwFlags:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCombineUrlA';
+  function InternetQueryOption(hInternet:HINTERNET; dwOption:DWORD; lpBuffer:LPVOID; var lpdwBufferLength:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetQueryOptionA';
+  function InternetGetLastResponseInfo(lpdwError:LPDWORD; lpszBuffer:LPSTR; var lpdwBufferLength:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetGetLastResponseInfoA';
+  function GopherCreateLocator(lpszHost:LPCSTR; nServerPort:INTERNET_PORT; lpszDisplayString:LPCSTR; lpszSelectorString:LPCSTR; dwGopherType:DWORD;
+             lpszLocator:LPSTR; var lpdwBufferLength:DWORD):BOOL;stdcall;external WININETLIBNAME name 'GopherCreateLocatorA';
+  function GopherGetLocatorType(lpszLocator:LPCSTR; var lpdwGopherType:DWORD):BOOL;stdcall;external WININETLIBNAME name 'GopherGetLocatorTypeA';
+  function HttpQueryInfo(hRequest:HINTERNET; dwInfoLevel:DWORD; lpBuffer:LPVOID; var lpdwBufferLength:DWORD; var lpdwIndex:DWORD):BOOL;stdcall;external WININETLIBNAME name 'HttpQueryInfoA';
+  function InternetGetCookie(lpszUrl:LPCSTR; lpszCookieName:LPCSTR; lpszCookieData:LPSTR;var lpdwSize:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetGetCookieA';
+  function InternetGetCookieEx(lpszUrl:LPCSTR; lpszCookieName:LPCSTR; lpszCookieData:LPSTR; var lpdwSize:DWORD; dwFlags:DWORD;
+             lpReserved:LPVOID):BOOL;stdcall;external WININETLIBNAME name 'InternetGetCookieExA';
+  function RetrieveUrlCacheEntryFile(lpszUrlName:LPCSTR; lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA; var lpcbCacheEntryInfo:DWORD; dwReserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'RetrieveUrlCacheEntryFileA';
+  function RetrieveUrlCacheEntryStream(lpszUrlName:LPCSTR; lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA; var lpcbCacheEntryInfo:DWORD; fRandomRead:BOOL; dwReserved:DWORD):HANDLE;stdcall;external WININETLIBNAME name 'RetrieveUrlCacheEntryStreamA';
+  function GetUrlCacheEntryInfo(lpszUrlName:LPCSTR; lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA; var lpcbCacheEntryInfo:DWORD):BOOL;stdcall;external WININETLIBNAME name 'GetUrlCacheEntryInfoA';
+  function GetUrlCacheGroupAttribute(gid:GROUPID; dwFlags:DWORD; dwAttributes:DWORD; lpGroupInfo:LPINTERNET_CACHE_GROUP_INFOA; var lpdwGroupInfo:DWORD;
+             lpReserved:LPVOID):BOOL;stdcall;external WININETLIBNAME name 'GetUrlCacheGroupAttributeA';
+  function GetUrlCacheEntryInfoEx(lpszUrl:LPCSTR; lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA; var lpcbCacheEntryInfo:DWORD; lpszRedirectUrl:LPSTR; var lpcbRedirectUrl:DWORD;
+             lpReserved:LPVOID; dwFlags:DWORD):BOOL;stdcall;external WININETLIBNAME name 'GetUrlCacheEntryInfoExA';
+  function FindFirstUrlCacheEntryEx(lpszUrlSearchPattern:LPCSTR; dwFlags:DWORD; dwFilter:DWORD; GroupId:GROUPID; lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+             var lpcbEntryInfo:DWORD; lpGroupAttributes:LPVOID; var lpcbGroupAttributes:DWORD; lpReserved:LPVOID):HANDLE;stdcall;external WININETLIBNAME name 'FindFirstUrlCacheEntryExA';
+  function FindNextUrlCacheEntryEx(hEnumHandle:HANDLE; lpNextCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA; var lpcbEntryInfo:DWORD; lpGroupAttributes:LPVOID; lpcbGroupAttributes:LPDWORD;
+             lpReserved:LPVOID):BOOL;stdcall;external WININETLIBNAME name 'FindNextUrlCacheEntryExA';
+  function FindFirstUrlCacheEntry(lpszUrlSearchPattern:LPCSTR; lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA; var lpcbCacheEntryInfo:DWORD):HANDLE;stdcall;external WININETLIBNAME name 'FindFirstUrlCacheEntryA';
+  function FindNextUrlCacheEntry(hEnumHandle:HANDLE; lpNextCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA; var lpcbCacheEntryInfo:DWORD):BOOL;stdcall;external WININETLIBNAME name 'FindNextUrlCacheEntryA';
+  function InternetDial(hwndParent:HWND; lpszConnectoid:LPSTR; dwFlags:DWORD; var lpdwConnection:DWORD; dwReserved:DWORD):DWORD;stdcall;external WININETLIBNAME name 'InternetDialA';
+  function InternetGetConnectedStateEx(var lpdwFlags:DWORD; lpszConnectionName:LPSTR; dwBufLen:DWORD; dwReserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetGetConnectedStateExA';
+  function FtpGetCurrentDirectory(hConnect:HINTERNET; lpszCurrentDirectory:LPSTR; var lpdwCurrentDirectory:DWORD):BOOL;stdcall;external WININETLIBNAME name 'FtpGetCurrentDirectoryA';
+  function FtpFindFirstFile(hConnect:HINTERNET; lpszSearchFile:LPCSTR; var lpFindFileData:WIN32_FIND_DATA; dwFlags:DWORD; dwContext:DWORD_PTR):HINTERNET;stdcall;external WININETLIBNAME name 'FtpFindFirstFileA';
+  function GopherFindFirstFile(hConnect:HINTERNET; lpszLocator:LPCSTR; lpszSearchString:LPCSTR; var lpFindData:GOPHER_FIND_DATAA; dwFlags:DWORD;
+             dwContext:DWORD_PTR):HINTERNET;stdcall;external WININETLIBNAME name 'GopherFindFirstFileA';
+  function GopherGetAttribute(hConnect:HINTERNET; lpszLocator:LPCSTR; lpszAttributeName:LPCSTR; lpBuffer:LPBYTE; dwBufferLength:DWORD;
+             var lpdwCharactersReturned:DWORD; lpfnEnumerator:GOPHER_ATTRIBUTE_ENUMERATOR; dwContext:DWORD_PTR):BOOL;stdcall;external WININETLIBNAME name 'GopherGetAttributeA';
+  function RetrieveUrlCacheEntryFile(lpszUrlName:LPCSTR; var lpCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOA; lpcbCacheEntryInfo:LPDWORD; dwReserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'RetrieveUrlCacheEntryFileA';
+  function RetrieveUrlCacheEntryStream(lpszUrlName:LPCSTR; var lpCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOA; lpcbCacheEntryInfo:LPDWORD; fRandomRead:BOOL; dwReserved:DWORD):HANDLE;stdcall;external WININETLIBNAME name 'RetrieveUrlCacheEntryStreamA';
+  function GetUrlCacheEntryInfo(lpszUrlName:LPCSTR; var lpCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOA; lpcbCacheEntryInfo:LPDWORD):BOOL;stdcall;external WININETLIBNAME name 'GetUrlCacheEntryInfoA';
+  function SetUrlCacheEntryInfo(lpszUrlName:LPCSTR; var lpCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOA; dwFieldControl:DWORD):BOOL;stdcall;external WININETLIBNAME name 'SetUrlCacheEntryInfoA';
+  function FindFirstUrlCacheEntryEx(lpszUrlSearchPattern:LPCSTR; dwFlags:DWORD; dwFilter:DWORD; GroupId:GROUPID; var lpFirstCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOA;
+             lpcbEntryInfo:LPDWORD; lpGroupAttributes:LPVOID; lpcbGroupAttributes:LPDWORD; lpReserved:LPVOID):HANDLE;stdcall;external WININETLIBNAME name 'FindFirstUrlCacheEntryExA';
+  function FindNextUrlCacheEntryEx(hEnumHandle:HANDLE; var lpNextCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOA; lpcbEntryInfo:LPDWORD; lpGroupAttributes:LPVOID; lpcbGroupAttributes:LPDWORD;
+             lpReserved:LPVOID):BOOL;stdcall;external WININETLIBNAME name 'FindNextUrlCacheEntryExA';
+  function FindFirstUrlCacheEntry(lpszUrlSearchPattern:LPCSTR; var lpFirstCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOA; lpcbCacheEntryInfo:LPDWORD):HANDLE;stdcall;external WININETLIBNAME name 'FindFirstUrlCacheEntryA';
+  function FindNextUrlCacheEntry(hEnumHandle:HANDLE; var lpNextCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOA; lpcbCacheEntryInfo:LPDWORD):BOOL;stdcall;external WININETLIBNAME name 'FindNextUrlCacheEntryA';
+
 {$ELSE}
+
   function InternetTimeFromSystemTime(pst:PSYSTEMTIME; dwRFC:DWORD; lpszTime:LPWSTR; cbTime:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetTimeFromSystemTimeW';
   function InternetTimeToSystemTime(lpszTime:LPCWSTR; pst:PSYSTEMTIME; dwReserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetTimeToSystemTimeW';
   function InternetCrackUrl(lpszUrl:LPCWSTR; dwUrlLength:DWORD; dwFlags:DWORD; lpUrlComponents:LPURL_COMPONENTSW):BOOL;stdcall;external WININETLIBNAME name 'InternetCrackUrlW';
@@ -2392,7 +2589,183 @@ Type
   function InternetEnumPerSiteCookieDecision(pszSiteName:LPWSTR; pcSiteNameSize:Pdword; pdwDecision:Pdword; dwIndex:dword):BOOL;stdcall;external WININETLIBNAME name 'InternetEnumPerSiteCookieDecisionW';
   function PrivacySetZonePreference(dwZone:DWORD; dwType:DWORD; dwTemplate:DWORD; pszPreference:LPCWSTR):DWORD;stdcall;external WININETLIBNAME name 'PrivacySetZonePreferenceW';
   function PrivacyGetZonePreference(dwZone:DWORD; dwType:DWORD; pdwTemplate:LPDWORD; pszBuffer:LPWSTR; pdwBufferLength:LPDWORD):DWORD;stdcall;external WININETLIBNAME name 'PrivacyGetZonePreferenceW';
+
+  {wide overloads}
+  function InternetCrackUrl(lpszUrl:LPCWSTR; dwUrlLength:DWORD; dwFlags:DWORD; var lpUrlComponents:URL_COMPONENTSW):BOOL;stdcall;external WININETLIBNAME name 'InternetCrackUrlW';
+  function InternetCreateUrl(var lpUrlComponents:URL_COMPONENTSW; dwFlags:DWORD; lpszUrl:LPWSTR; lpdwUrlLength:LPDWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCreateUrlW';
+
+  function InternetCreateUrl(lpUrlComponents:LPURL_COMPONENTSW; dwFlags:DWORD; lpszUrl:LPWSTR;var lpdwUrlLength:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCreateUrlW';
+  function InternetCanonicalizeUrl(lpszUrl:LPCWSTR; lpszBuffer:LPWSTR; var lpdwBufferLength:DWORD; dwFlags:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCanonicalizeUrlW';
+  function InternetCombineUrl(lpszBaseUrl:LPCWSTR; lpszRelativeUrl:LPCWSTR; lpszBuffer:LPWSTR;var lpdwBufferLength:DWORD; dwFlags:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetCombineUrlW';
+  function InternetQueryOption(hInternet:HINTERNET; dwOption:DWORD; lpBuffer:LPVOID; var lpdwBufferLength:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetQueryOptionW';
+  function InternetGetLastResponseInfo(lpdwError:LPDWORD; lpszBuffer:LPWSTR; var lpdwBufferLength:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetGetLastResponseInfoW';
+  function GopherCreateLocator(lpszHost:LPCWSTR; nServerPort:INTERNET_PORT; lpszDisplayString:LPCWSTR; lpszSelectorString:LPCWSTR; dwGopherType:DWORD;
+             lpszLocator:LPWSTR; var lpdwBufferLength:DWORD):BOOL;stdcall;external WININETLIBNAME name 'GopherCreateLocatorW';
+  function GopherGetLocatorType(lpszLocator:LPCWSTR; var lpdwGopherType:DWORD):BOOL;stdcall;external WININETLIBNAME name 'GopherGetLocatorTypeW';
+  function HttpQueryInfo(hRequest:HINTERNET; dwInfoLevel:DWORD; lpBuffer:LPVOID; var lpdwBufferLength:DWORD; var lpdwIndex:DWORD):BOOL;stdcall;external WININETLIBNAME name 'HttpQueryInfoW';
+  function InternetGetCookie(lpszUrl:LPCWSTR; lpszCookieName:LPCWSTR; lpszCookieData:LPWSTR;var lpdwSize:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetGetCookieW';
+  function InternetGetCookieEx(lpszUrl:LPCWSTR; lpszCookieName:LPCWSTR; lpszCookieData:LPWSTR; var lpdwSize:DWORD; dwFlags:DWORD;
+             lpReserved:LPVOID):BOOL;stdcall;external WININETLIBNAME name 'InternetGetCookieExW';
+  function RetrieveUrlCacheEntryFile(lpszUrlName:LPCWSTR; lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW; var lpcbCacheEntryInfo:DWORD; dwReserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'RetrieveUrlCacheEntryFileW';
+  function RetrieveUrlCacheEntryStream(lpszUrlName:LPCWSTR; lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW; var lpcbCacheEntryInfo:DWORD; fRandomRead:BOOL; dwReserved:DWORD):HANDLE;stdcall;external WININETLIBNAME name 'RetrieveUrlCacheEntryStreamW';
+  function GetUrlCacheEntryInfo(lpszUrlName:LPCWSTR; lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW; var lpcbCacheEntryInfo:DWORD):BOOL;stdcall;external WININETLIBNAME name 'GetUrlCacheEntryInfoW';
+  function GetUrlCacheGroupAttribute(gid:GROUPID; dwFlags:DWORD; dwAttributes:DWORD; lpGroupInfo:LPINTERNET_CACHE_GROUP_INFOW; var lpdwGroupInfo:DWORD;
+             lpReserved:LPVOID):BOOL;stdcall;external WININETLIBNAME name 'GetUrlCacheGroupAttributeW';
+  function GetUrlCacheEntryInfoEx(lpszUrl:LPCWSTR; lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW; var lpcbCacheEntryInfo:DWORD; lpszRedirectUrl:LPWSTR; var lpcbRedirectUrl:DWORD;
+             lpReserved:LPVOID; dwFlags:DWORD):BOOL;stdcall;external WININETLIBNAME name 'GetUrlCacheEntryInfoExW';
+  function FindFirstUrlCacheEntryEx(lpszUrlSearchPattern:LPCWSTR; dwFlags:DWORD; dwFilter:DWORD; GroupId:GROUPID; lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+             var lpcbEntryInfo:DWORD; lpGroupAttributes:LPVOID; var lpcbGroupAttributes:DWORD; lpReserved:LPVOID):HANDLE;stdcall;external WININETLIBNAME name 'FindFirstUrlCacheEntryExW';
+  function FindNextUrlCacheEntryEx(hEnumHandle:HANDLE; lpNextCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW; var lpcbEntryInfo:DWORD; lpGroupAttributes:LPVOID; lpcbGroupAttributes:LPDWORD;
+             lpReserved:LPVOID):BOOL;stdcall;external WININETLIBNAME name 'FindNextUrlCacheEntryExW';
+  function FindFirstUrlCacheEntry(lpszUrlSearchPattern:LPCWSTR; lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW; var lpcbCacheEntryInfo:DWORD):HANDLE;stdcall;external WININETLIBNAME name 'FindFirstUrlCacheEntryW';
+  function FindNextUrlCacheEntry(hEnumHandle:HANDLE; lpNextCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW; var lpcbCacheEntryInfo:DWORD):BOOL;stdcall;external WININETLIBNAME name 'FindNextUrlCacheEntryW';
+  function InternetDial(hwndParent:HWND; lpszConnectoid:LPWSTR; dwFlags:DWORD; var lpdwConnection:DWORD; dwReserved:DWORD):DWORD;stdcall;external WININETLIBNAME name 'InternetDialW';
+  function InternetGetConnectedStateEx(var lpdwFlags:DWORD; lpszConnectionName:LPWSTR; dwBufLen:DWORD; dwReserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'InternetGetConnectedStateExW';
+
+  function FtpGetCurrentDirectory(hConnect:HINTERNET; lpszCurrentDirectory:LPWSTR; var lpdwCurrentDirectory:DWORD):BOOL;stdcall;external WININETLIBNAME name 'FtpGetCurrentDirectoryW';
+  function FtpFindFirstFile(hConnect:HINTERNET; lpszSearchFile:LPCWSTR; var lpFindFileData:WIN32_FIND_DATAW; dwFlags:DWORD; dwContext:DWORD_PTR):HINTERNET;stdcall;external WININETLIBNAME name 'FtpFindFirstFileW';
+  function GopherFindFirstFile(hConnect:HINTERNET; lpszLocator:LPCWSTR; lpszSearchString:LPCWSTR; var lpFindData:GOPHER_FIND_DATAW; dwFlags:DWORD;
+             dwContext:DWORD_PTR):HINTERNET;stdcall;external WININETLIBNAME name 'GopherFindFirstFileW';
+  function GopherGetAttribute(hConnect:HINTERNET; lpszLocator:LPCWSTR; lpszAttributeName:LPCWSTR; lpBuffer:LPBYTE; dwBufferLength:DWORD;
+             var lpdwCharactersReturned:DWORD; lpfnEnumerator:GOPHER_ATTRIBUTE_ENUMERATOR; dwContext:DWORD_PTR):BOOL;stdcall;external WININETLIBNAME name 'GopherGetAttributeW';
+
+  function RetrieveUrlCacheEntryFile(lpszUrlName:LPCWSTR; var lpCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOW; lpcbCacheEntryInfo:LPDWORD; dwReserved:DWORD):BOOL;stdcall;external WININETLIBNAME name 'RetrieveUrlCacheEntryFileW';
+  function RetrieveUrlCacheEntryStream(lpszUrlName:LPCWSTR; var lpCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOW; lpcbCacheEntryInfo:LPDWORD; fRandomRead:BOOL; dwReserved:DWORD):HANDLE;stdcall;external WININETLIBNAME name 'RetrieveUrlCacheEntryStreamW';
+  function GetUrlCacheEntryInfo(lpszUrlName:LPCWSTR; var lpCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOW; lpcbCacheEntryInfo:LPDWORD):BOOL;stdcall;external WININETLIBNAME name 'GetUrlCacheEntryInfoW';
+  function SetUrlCacheEntryInfo(lpszUrlName:LPCWSTR; var lpCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOW; dwFieldControl:DWORD):BOOL;stdcall;external WININETLIBNAME name 'SetUrlCacheEntryInfoW';
+  function FindFirstUrlCacheEntryEx(lpszUrlSearchPattern:LPCWSTR; dwFlags:DWORD; dwFilter:DWORD; GroupId:GROUPID; var lpFirstCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOW;
+             lpcbEntryInfo:LPDWORD; lpGroupAttributes:LPVOID; lpcbGroupAttributes:LPDWORD; lpReserved:LPVOID):HANDLE;stdcall;external WININETLIBNAME name 'FindFirstUrlCacheEntryExW';
+  function FindNextUrlCacheEntryEx(hEnumHandle:HANDLE; var lpNextCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOW; lpcbEntryInfo:LPDWORD; lpGroupAttributes:LPVOID; lpcbGroupAttributes:LPDWORD;
+             lpReserved:LPVOID):BOOL;stdcall;external WININETLIBNAME name 'FindNextUrlCacheEntryExW';
+  function FindFirstUrlCacheEntry(lpszUrlSearchPattern:LPCWSTR; var lpFirstCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOW; lpcbCacheEntryInfo:LPDWORD):HANDLE;stdcall;external WININETLIBNAME name 'FindFirstUrlCacheEntryW';
+  function FindNextUrlCacheEntry(hEnumHandle:HANDLE; var lpNextCacheEntryInfo:INTERNET_CACHE_ENTRY_INFOW; lpcbCacheEntryInfo:LPDWORD):BOOL;stdcall;external WININETLIBNAME name 'FindNextUrlCacheEntryW';
+
+
 {$endif}
-	
+    
+
+ function IS_GOPHER_TEXT_FILE(gtype:DWORD):BOOL; inline;           
+ function IS_GOPHER_DIRECTORY(gtype:DWORD):BOOL; inline;       
+ function IS_GOPHER_CSO(gtype:DWORD):BOOL; inline;
+ function IS_GOPHER_ERROR(gtype:DWORD):BOOL; inline;           
+ function IS_GOPHER_MAC_BINHEX(gtype:DWORD):BOOL; inline;      
+ function IS_GOPHER_DOS_ARCHIVE(gtype:DWORD):BOOL; inline;     
+ function IS_GOPHER_UNIX_UUENCODED(gtype:DWORD):BOOL; inline;  
+ function IS_GOPHER_INDEX_SERVER(gtype:DWORD):BOOL; inline;    
+ function IS_GOPHER_TELNET(gtype:DWORD):BOOL; inline;          
+ function IS_GOPHER_BINARY(gtype:DWORD):BOOL; inline;          
+ function IS_GOPHER_REDUNDANT(gtype:DWORD):BOOL; inline;       
+ function IS_GOPHER_TN3270(gtype:DWORD):BOOL; inline;          
+ function IS_GOPHER_GIF(gtype:DWORD):BOOL; inline;             
+ function IS_GOPHER_IMAGE(gtype:DWORD):BOOL; inline;           
+ function IS_GOPHER_BITMAP(gtype:DWORD):BOOL; inline;          
+ function IS_GOPHER_MOVIE(gtype:DWORD):BOOL; inline;           
+ function IS_GOPHER_SOUND(gtype:DWORD):BOOL; inline;           
+ function IS_GOPHER_HTML(gtype:DWORD):BOOL; inline;            
+ function IS_GOPHER_PDF(gtype:DWORD):BOOL; inline;             
+ function IS_GOPHER_CALENDAR(gtype:DWORD):BOOL; inline;        
+ function IS_GOPHER_INLINE(gtype:DWORD):BOOL; inline;          
+ function IS_GOPHER_UNKNOWN(gtype:DWORD):BOOL; inline;         
+ function IS_GOPHER_ASK(gtype:DWORD):BOOL; inline;             
+ function IS_GOPHER_GOPHER_PLUS(gtype:DWORD):BOOL; inline;
+
 implementation
-end.
+
+ function IS_GOPHER_TEXT_FILE(gtype:DWORD):BOOL;            
+    begin
+      result:=(gtype and GOPHER_TYPE_TEXT_FILE)=0;
+    end;
+ function IS_GOPHER_DIRECTORY(gtype:DWORD):BOOL;        
+    begin
+      result:=(gtype and GOPHER_TYPE_DIRECTORY)=0;
+    end;
+ function IS_GOPHER_CSO(gtype:DWORD):BOOL; 
+    begin
+      result:=(gtype and GOPHER_TYPE_CSO)=0;
+    end;
+ function IS_GOPHER_ERROR(gtype:DWORD):BOOL;            
+    begin
+      result:=(gtype and GOPHER_TYPE_ERROR)=0;
+    end;
+ function IS_GOPHER_MAC_BINHEX(gtype:DWORD):BOOL;       
+    begin
+      result:=(gtype and GOPHER_TYPE_MAC_BINHEX)=0;
+    end;
+ function IS_GOPHER_DOS_ARCHIVE(gtype:DWORD):BOOL;      
+    begin
+      result:=(gtype and GOPHER_TYPE_DOS_ARCHIVE)=0;
+    end;
+ function IS_GOPHER_UNIX_UUENCODED(gtype:DWORD):BOOL;   
+    begin
+      result:=(gtype and GOPHER_TYPE_UNIX_UUENCODED)=0;
+    end;
+ function IS_GOPHER_INDEX_SERVER(gtype:DWORD):BOOL;     
+    begin
+      result:=(gtype and GOPHER_TYPE_INDEX_SERVER)=0;
+    end;
+ function IS_GOPHER_TELNET(gtype:DWORD):BOOL;           
+    begin
+      result:=(gtype and GOPHER_TYPE_TELNET)=0;
+    end;
+ function IS_GOPHER_BINARY(gtype:DWORD):BOOL;           
+    begin
+      result:=(gtype and GOPHER_TYPE_BINARY)=0;
+    end;
+ function IS_GOPHER_REDUNDANT(gtype:DWORD):BOOL;        
+    begin
+      result:=(gtype and GOPHER_TYPE_REDUNDANT)=0;
+    end;
+ function IS_GOPHER_TN3270(gtype:DWORD):BOOL;           
+    begin
+      result:=(gtype and GOPHER_TYPE_TN3270)=0;
+    end;
+ function IS_GOPHER_GIF(gtype:DWORD):BOOL;              
+    begin
+      result:=(gtype and GOPHER_TYPE_GIF)=0;
+    end;
+ function IS_GOPHER_IMAGE(gtype:DWORD):BOOL;            
+    begin
+      result:=(gtype and GOPHER_TYPE_IMAGE)=0;
+    end;
+ function IS_GOPHER_BITMAP(gtype:DWORD):BOOL;           
+    begin
+      result:=(gtype and GOPHER_TYPE_BITMAP)=0;
+    end;
+ function IS_GOPHER_MOVIE(gtype:DWORD):BOOL;            
+    begin
+      result:=(gtype and GOPHER_TYPE_MOVIE)=0;
+    end;
+ function IS_GOPHER_SOUND(gtype:DWORD):BOOL;            
+    begin
+      result:=(gtype and GOPHER_TYPE_SOUND)=0;
+    end;
+ function IS_GOPHER_HTML(gtype:DWORD):BOOL;             
+    begin
+      result:=(gtype and GOPHER_TYPE_HTML)=0;
+    end;
+ function IS_GOPHER_PDF(gtype:DWORD):BOOL;              
+    begin
+      result:=(gtype and GOPHER_TYPE_PDF)=0;
+    end;  
+ function IS_GOPHER_CALENDAR(gtype:DWORD):BOOL;         
+    begin
+      result:=(gtype and GOPHER_TYPE_CALENDAR)=0;
+    end;  
+ function IS_GOPHER_INLINE(gtype:DWORD):BOOL;           
+    begin
+      result:=(gtype and GOPHER_TYPE_INLINE)=0;
+    end;     
+ function IS_GOPHER_UNKNOWN(gtype:DWORD):BOOL;          
+    begin
+      result:=(gtype and GOPHER_TYPE_UNKNOWN)=0;
+    end;  
+ function IS_GOPHER_ASK(gtype:DWORD):BOOL;              
+    begin
+      result:=(gtype and GOPHER_TYPE_ASK)=0;
+    end;  
+ function IS_GOPHER_GOPHER_PLUS(gtype:DWORD):BOOL; 
+    begin
+      result:=(gtype and GOPHER_TYPE_GOPHER_PLUS)=0;
+    end;  
+
+end.