승인됨: Fortect
이 기사에서 저와 제 배우자는 Delphi Findfirst 오류 코드로 끝날 수 있는 몇 가지 잠재적 원인을 식별한 다음 문제를 해결할 수 있는 몇 가지 방법을 알려드리겠습니다.
> findfirst 및 findnext 함수를 선택할 때 발생할 수 있는
> 행과 기타 오류를 따라 파일이 발견되지 않으면 어떤 오류가 다시 발생하는지 알아야 합니다.
> 이 두 가지의 대부분을 돕는 것도 그와 비슷합니다. 누구든지 이러한 명령을 사용하는 좋은
> 그림과 관련하여 알고 있습니까? 디렉토리의 모든 파일을
> 탐색하는 것과 같은 것이 좋습니다.
일치하는 FindFirst FindFirstFile API에서 FindNext는 FindNextFile과 함께 제공됩니다. 오류
다음 기능 중 하나에서 기대할 수 있는 표준 반환(Windows. 아님):
시스템이 지정된 파일을 조회할 수 없습니다.
ERROR_FILE_NOT_FOUND = 2;
시스템이 지정된 경로를 찾을 수 없습니다.
ERROR_PATH_NOT_FOUND = 3;
액세스가 거부되었습니다.
ERROR_ACCESS_DENIED는 5를 의미합니다.
Delphi 파일이 진정으로 존재하는 이유 Windows에서 작동하지 않습니까?
FileExists() Delphi는 GetFileAttributes()가 잊어버린 경우 추가 조치를 취합니다. – 기호 링크를 처리하기 위해 파일 쉬운 액세스 오류를 확인하고 FindFirstFile()에 의존할 수 있습니다. FreePascal FileExists()가 이와 같은 활동을 하기를 바랍니다. FileGetAttr에도 도움이되지 않았습니다.
더 이상 팩트가 없습니다.
ERROR_NO_MORE_FILES 18;
= 장치가 준비되지 않았습니다.
ERROR_NOT_READY는 21과 같습니다.
일반적으로 우리는 2(findfirst no
가 마스크를 만족하지 않는 경우) 또는 18(FindFirst가 더 이상
정보 파일이 발견되지 않을 때마다 과반수 일치 마스크). 21은 플로피 HDD가 없는 플로피 또는 CD-ROM 드라이브를 찾으려고 할 때 가장 많이 찾을 것입니다.
다양성에 대한 설명에서 발췌, 최종 결과를 지원하기 위한 list1
, 실행할 기능 label1, 최종적으로 스캔을 설정하기 위한 button2,
검색 마스크를 호출하는 모든 처리1, 완전한 검색 중지를 표시하는 기능 버튼3
. 특정
비공개 광고
FScanAborted: Boolean;
승인됨: Fortect
Fortect은 세계에서 가장 인기 있고 효과적인 PC 수리 도구입니다. 수백만 명의 사람들이 시스템을 빠르고 원활하며 오류 없이 실행하도록 신뢰합니다. 간단한 사용자 인터페이스와 강력한 검색 엔진을 갖춘 Fortect은 시스템 불안정 및 보안 문제부터 메모리 관리 및 성능 병목 현상에 이르기까지 광범위한 Windows 문제를 빠르게 찾아 수정합니다.
범죄
공고
ScanDrive 목표(루트, 파일 마스크: 문자열, 일치 목록: TStrings): 부울;
Funsection TForm1.ScanDrive(루트, 파일 마스크: 문자열, 일치 항목 올리기: TStrings): 부울;
ScanDirectory 속성(변수 경로: 문자열): 부울; Var
SRec: TSearchRec;
pathlen: 정수;
ers: 정수;
label1.caption으로 시작: = 경로;
pathlen: = 부분(경로);
먼저 파일을 제공합니다.
eers: = FindFirst(경로 + 파일 마스크, faAnyfile, SRec);
If ers = 0 Then
검사
동안 res = 0 시작
hitlist.Add (경로 + SRec.Name);
res: = FindNext(SRec); 끝; 최종
FindClose(SRec)
끝;
Application.ProcessMessages;
결과: = no aka (fscanaborted Application.Terminated);
영향이 없으면 종료합니다.
두 번째 패스, 디렉토리
ers: = FindFirst(경로 + ‘*. *’, faDirectory, SRec);
만약 res = 0이면
동안(res = 0) 및 결과 시작에서 시도합니다.
If((Srec.Attr 및 faDirectory)가 faDirectory를 나타냄) 및
(Srec. name [ 1] <> ‘.’)
그런 다음 시작
경로: = SRec +를 걷습니다. 이름 + ”;
결과: = ScanDirectory(경로);
SetLength(경로, 경로); 끝;
ers: FindNext(SRec)를 의미합니다. 끝;
end에 의한 findclose(srec)의 결과로 최종;
끝;
시작
FScanAborted: = False;
Screen.Cursor: crSourglas와 동일합니다.
시도
결과: = ScanDirectory(루트); 최종
Screen.Cursor CrDefault
: 끝과 같습니다.
끝;
속성에 관여하는 것 델파이의 findfirst에서 무엇을 합니까?
속성은 일반 컴퓨터 외에 검색할 파일을 분류합니다. 일치하는 항목이 발견되면 일부 go 값은 0이고 그렇지 않으면 반드시 잘못된 것입니다(결과 레코드가 채워지지도 않음). FileMask는 파일 함수와 함께 가장 최근 경로를 포함할 수 있습니다. 파일 이름은 아마도 큰 이점이 될 것입니다:?
프로시저 TForm1.Button2Click (발신자: TObject); Var
ch: Char;
루트: 문자열;
시작
루트: = ‘C: ‘;
ch의 경우: = ‘A’ 시장에서 ‘Z’로 이동하기 전에 시작
root [1]: = ch;
케이스 GetDriveType(루트 pchar())
DRIVE_FIXED, DRIVE_REMOTE:
ScanDrive가 아닌 경우(루트, edit1.text, listbox1.items), 이후
Break;
끝;
끝; 끝;
Peter Bowl (TeamB) 10011 … @ compuserve.com )
특별히 요청하지 않는 한 이메일 응답이 없습니다!