Q&A

  • SHGetPathFromIDList 함수에 관한 질문..
안녕하세요..^^

요즘..Shell API를 공부하고 있는 델파이..초보입니다..^^

질문 내용은 아래와 같습니다.. 많은 도움 부탁드립니다.. -_-;;



예를 들어 아래와 같은 간단한 함수를 만들어 봤는데요..



function Form1.GetPath : string;

var

bi : TBrowseInfo;

folder : PItemIDList;

directory : PChar;

begin

ZeroMemory(@bi, SizeOf(TBrowseInfo));

bi.hwndOwner := Self.Handle;

folder := SHBrowseForFolder(bi);

SHGetPathFromIDList(folder, directory);

Result := StrPas(directory);

end;



procedure TForm1.Button1Click(Sender: TObject);

begin

ShowMessage(GetPath);

end;



실행을 시켜보면 ShowMessage가서 디렉토리 표시하는데까지는 잘 갑니다..

근데..OK 하면...

어쩔때는 잘 됩니다.. 근뎅.. 어쩔때는 꼭 에러가 나걸랑요.. -_-;;

공포의 에러메시지... Access violatoin 어쩌구..저쩌구.. T.T;;

SHGetPathFromIDList 함수와 연관이 있는거..같은데..잘..몰겠어용..

왜..이런..걸까여?? 갈카주세요..고수님들.. ^^;;



이만... ^^

1  COMMENTS
  • Profile
    최용일 2000.03.07 01:18
    SHGetPathFromIDList(folder, directory); <-- 바로 이 부분에서 생기는

    에러입니다... 함수 호출전에 PChar(directory)의 메모리를 할당받아야

    합니다. 그렇지 않으면 에러가 생길수도 있고 안생길수도 있는 잠재적인

    위험을 감수해야하죠... 먼저 충분한 메모리를 할당받으세요. 그리고 끝

    나면 꼭 프리해주는거 잊지마시고...

    할당 - GetMem(Directory, MaxDirPathSize);

    해제 - FreeMem(Directory, MaxDirPathSize);







    궁금이 wrote:

    > 안녕하세요..^^

    > 요즘..Shell API를 공부하고 있는 델파이..초보입니다..^^

    > 질문 내용은 아래와 같습니다.. 많은 도움 부탁드립니다.. -_-;;

    >

    > 예를 들어 아래와 같은 간단한 함수를 만들어 봤는데요..

    >

    > function Form1.GetPath : string;

    > var

    > bi : TBrowseInfo;

    > folder : PItemIDList;

    > directory : PChar;

    > begin

    > ZeroMemory(@bi, SizeOf(TBrowseInfo));

    > bi.hwndOwner := Self.Handle;

    > folder := SHBrowseForFolder(bi);

    > SHGetPathFromIDList(folder, directory);

    > Result := StrPas(directory);

    > end;

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > begin

    > ShowMessage(GetPath);

    > end;

    >

    > 실행을 시켜보면 ShowMessage가서 디렉토리 표시하는데까지는 잘 갑니다..

    > 근데..OK 하면...

    > 어쩔때는 잘 됩니다.. 근뎅.. 어쩔때는 꼭 에러가 나걸랑요.. -_-;;

    > 공포의 에러메시지... Access violatoin 어쩌구..저쩌구.. T.T;;

    > SHGetPathFromIDList 함수와 연관이 있는거..같은데..잘..몰겠어용..

    > 왜..이런..걸까여?? 갈카주세요..고수님들.. ^^;;

    >

    > 이만... ^^