Q&A

  • 상대경로에서 한단계 상위폴더로 경로변경하는법...
ExtractFilePath함수로 실행파일이있는 폴더의 경로를 알아냈습니다.
그리고 getPath라는 변수에 경로를 대입해서 상대경로로 사용하고있습니다.
그런데 실행파일이 있는 폴더의 한단계 상위폴더에다가 폴더를 만들어서 텍스트파일을 저장하라네요...
실행파일이 있는 폴더의 한단계 상위폴더의 경로를 알려면 어케 해야하나요?

현재는 copy(getPath, 1, length(getPath)-4)이런식으로 끝에 4자리를 짤라서 쓰고있슴다...
마지막 4자리가 bin\이거든요(실행파일이 bin폴더안에있음)...

만약 실행파일이 bin폴더안에 없다면 에러가 발생하겠죠

그래서 정확하게 경로를 알수있는방법이 없을까해서 여러 고수님들한테질문을 올립니다.

3  COMMENTS
  • Profile
    최용일 2007.07.07 04:12
    안녕하세요. 최용일입니다.

    아래와 같이 해보세요...
    <!--CodeS-->
    function PathCanonicalize(pszBuf: PAnsiChar; pszPath: PAnsiChar): BOOL; stdcall;
      external 'shlwapi.dll' name 'PathCanonicalizeA';
    function GetParentPath(const Path: string): string;
    var
      Buffer: array[0..MAX_PATH] of Char;
    begin
      Result := '';
      FillChar(Buffer, SizeOf(Buffer), 0);
      if PathCanonicalize(Buffer, PChar(Path + '..')) then
        Result := IncludeTrailingPathDelimiter(Buffer);
    end;

    // Usage
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage(GetParentPath(ExtractFilePath(Application.ExeName)));
    end;

    <!--CodeE-->

  • Profile
    곰탱이 2007.07.09 20:24

    최용일님 답변해주셔서 감사합니다.

    최용일님이 가르쳐주신 소스대로 해봤더니 에러가 나더군요.

    제 미천한실력으로 해결하기가 힘들어서 에러메시지를 이미지캡쳐해서 올리겠습니다.
    이미지와 소스도 텍스트파일로 같이 올리겠습니다.

    바쁘시겠지만 함 봐주십시요.

    부탁드리겠습니다. (_ _)
  • Profile
    최용일 2007.07.10 00:23
    쩝~ 가르켜준대로 하지 않으셨는데요...

    PathCanonicalize는 폼의 메소드가 아니라 그냥 함수입니다. 윈도우의 API함수입니다. 이걸 폼의 메소드로 만들어버리셨네요... ㅡㅡ'

    GetParentPath함수는 메소드로 만드셔도 별 상관이 없는데.. PathCanonicalize는 메소드로 만드시면 안됩니다.