블로그 이미지
훅크선장

카테고리

분류 전체보기 (362)
사진이야기 (23)
펭귄컴퓨팅 (121)
컴퓨터보안 (84)
절름발이 프로그래머 (59)
하드웨어개조 (23)
멀알려줄까 (35)
홈베이킹&홈쿠킹 (2)
잡다한것들 (15)
Total
Today
Yesterday

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

태그목록

최근에 올라온 글

http://www.microsoft.com/download/iexplorer/down.php?id=3

위와 같은 URL  즉, 웹 주소가 있는 경우,
여러 프로그래밍 상황에서 각 요소별로 나누어야 되는 상황이 많이 발생합니다.

다시 말해서, URL을 파싱해야 되는 상황이라면,

전 그전까지 AppControls에 있는 acHTTP 모듈에 있는 
ParseURL(EdtDownloadURL.Text, Protocol, HostName, URLPath, Username, Password, ExtraInfo, Port);
함수를 사용했습니다만,

델파이 2009를 사용하면서, (델파이 2009에서 AppControls가 컴파일이 안됩니다.)
위 함수를 대체하기 위해서 다음을 사용하게 되었습니다.

참고한 곳은
입니다.

UnitURLIPv6 라는 모듈입니다.

위 링크에 있는 것을 바로 사용할 수 있는 것이 아니었습니다.
하나의 모듈을 더 찾아서 사용해야하고, 소스중에 필요한 함수 하나를 대체하였습니다.

결국, 수정된 UnitURLIPv6.pas 와 synautil.pas 파일이 있어야만 동작합니다.
두 파일은 각각 다운받을 수 있습니다.

두 소스를 프로젝트에 포함시키고, 다음과 같이 사용합니다.

uses UnitURLIPv6;


var
     errcode : Integer;
     URLInfo : URL;
begin

...
...

// URL을 파싱해서, 각 요소별로 구분한다.
url_parse(EdtURL.Text, errcode, @URLInfo);

...
...

end;

정상적인 URL 파싱이면 errcode가 0으로 리턴됩니다.
에러상황이면 각각의 에러 코드가 errcode에 들어갈 것 같습니다.

URLInfo에 URL의 각 요소가 들어가게 됩니다.

URLInfo.url  -> 원래의 URL 전체
URLInfo.host  -> www.microsoft.com
URLInfo.port  -> 80
URLInfo.path  -> download/iexplorer/down.php
URLInfo.query  -> id=3
URLInfo.dir  -> download/iexplorer
URLInfo.file1  -> down.php

________________________________________________
type
  url = record
    url: string;              // Original URL
    scheme: url_scheme;  // URL scheme

    host: string;              // Extracted hostname
    port: word;                // Port number

    // URL components (URL-quoted).
    path: string;
    params: string;
    query: string;
    fragment: string;

    // Extracted path info (unquoted). */
    dir: string;
    file1: string;

    // Username and password (unquoted). */
    user: string;
    passwd: string;
  end;
Posted by 훅크선장
, |