2010

2011-05-16 2 views
2

가능한 중복 : 2010


Why does FindFirst return file names that don't match the mask?

델파이 7의 FindFirst()에 델파이의 래퍼를 사용하여 문제가 되었습니까 및 사용에 복귀했다 FindExInfoBasic을 fInfoLevelid 매개 변수에 전달하여 Win32 API FindFirstFileExe()를 호출합니다.

질문은 2010 년 델파이에서 사라 델파이 7의 FindFirst()와 문제는 무엇입니까? FindFirstFile을 사용하여 돌아갈 수 있습니까?

내 원래 질문은 여기에 제기했다 : 확장 이전 부분 이상 8 자이기 때문에 Why does FindFirst return file names that don't match the mask?

+0

이미이 질문을하고 종합적인 답변을 얻었습니다. –

+0

처음에는 @David와 (과) 동의했지만 지금은 가까운 투표를 취소하고 싶습니다. 이 질문은 문제에 대한 설명을 요구하지 않습니다. 그것은 Delphi 버전에서 동작이 다른지 여부를 묻습니다. 그러나이 질문은 문제를 설명하기 위해 이전 질문을 참조 할 때 더 독립적 이었지만 설명 할 수없는 문제로 제시하는 것이 더 나은 작업이었을 수 있습니다. –

+0

내 편집을위한 동기가 –

답변

4

이름 46checks5.dat는 "긴"파일 이름입니다. 파일 시스템은 해당 파일 이름의 "짧은"버전도 저장합니다.이 파일은 46chec ~ 1.dat입니다. 그것은 당신의 마스크와 일치합니다.

확장명이 긴 파일이있는 경우에도 이와 동일한 문제가 발생합니다. 파일 이름의 짧은 버전은 3 문자의 확장자를 사용하기 때문에 예를 들어, 검색 * .DOC 역시 .DOCX 파일을 찾을 수 있습니다. 당신이 다른 결과를 반환 할 무언가로 변경 FindFirst의 구현을 기대해서는 안 FindFirstFile의 행동과 그 델파이 래퍼 FindFirst에 의존하는 프로그램이있을 수 있습니다.

만 긴 파일 이름을 원하는 경우는, 당신은 당신이 지금하고있는대로, FindFirstFileEx 사용하거나 FindFirst 또는 FindNext의 복귀 후 추가 파일 이름 테스트를 할 수 있습니다. 이 경우 PathMatchSpec 또는 MatchesMask을 사용할 수 있습니다.

+0

Delphi 7의 문제를 이해합니다. 문제는 Delphi 2010에서이 문제가 처리 되었습니까? –

+2

굵은 글씨는? 나는 정말로 나와서 * no *라고해야만 했는가? 강조 표시된 부분은 답이 * 아니요 *이며 * 계속 * 오지는 않을 것임을 알려줍니다. –

+0

@ Jake Snake, Stack Overflow에서 그 종류의 언어는 인정받지 못합니다. 제발 삼가 해주십시오. 댓글이 삭제되었습니다. –