프로그래밍/델파이

ForceDirectoriesOfIdFTP ; 디렉토리 강제 생성하기

채윤아빠 2009. 12. 2. 15:40
728x90
반응형
델파이로 FTP 프로그래밍을 하다가 보면, 특정 경로를 만들어야할 일이 생깁니다.
그런데 TIdFTP에서 기본으로 제공하는 MakeDir 메소드는 현재 위치에서 바로 아래의 디렉토리만 생성이 가능합니다. SysUtils.ForceDirectories 함수와 같이 경로를 따라가며 없을 경우 강제로 모두 생성해 주는 메소드가 없어서 직접 만들어 봤습니다.

그럼, 유용하게 쓰시길~


{** FTP 서버에 접속된 IdFTP 객체에 지정한 경로의 디렉토리를 강제로 생성합니다.
    IdFTP에 대한 ForceDirectories 버전
  @param AIdFTP FTP 서버에 접속된 IdFTP 객체
  @param strMakeDir 생성할 디렉토리 경로
  *}
procedure ForceDirectoriesOfIdFTP(AIdFTP: TIdFTP; const strMakeDir: string);
var
  nPos: integer;
  strCurrentDir, strDir: string;
begin
  if (not AIdFTP.Connected) then
    exit;

  nPos := 0;
  while true do
  begin
    nPos := PosEx('/', strMakeDir, nPos + 1);
    if (0 = nPos) then
      break;

    strDir := Copy(strMakeDir, 1, nPos);
    try
      AIdFTP.MakeDir(strDir);
    except
    end;
  end;

  try
    AIdFTP.MakeDir(strMakeDir);
  except
  end;
end;