Zatwierdzono: Fortect
W tym artykule na pewno zidentyfikujemy niektóre potencjalne przyczyny, które mogą powodować kody błędów Delphi Findfirst, a następnie wskażemy sposoby rozwiązania problemu.
> Muszę wiedzieć, jaki błąd jest zwracany w instancji, w której nie znaleziono pliku, tak jak
> w przypadku innych błędów, które mogą wystąpić podczas generowania funkcji findfirst i findnext.
> Pomoc przy tych więcej niż dwóch wygląda tak samo. Czy wszyscy znają jakieś dobre
> przykłady dotyczące używania tych poleceń. Najlepiej takie rzeczy jak obserwowanie
> wszystkich plików w katalogu.
FindFirst, jeśli chcesz dopasować W funkcji FindFirstFile API, FindNext z FindNextFile. Błąd
Zwracanie ideałów, których można oczekiwać od jednej z tych ról (z systemu Windows. Nie):
System nie może znaleźć określonego pliku.
ERROR_FILE_NOT_FOUND = 2;
System nie może znaleźć określonej ścieżki.
ERROR_PATH_NOT_FOUND = 3;
Odmowa dostępu.
ERROR_ACCESS_DENIED wymaga 5;
Dlaczego plik Delphi istnieje nie działa w systemie Windows?
FileExists () Delphi po prostu podejmuje dodatkowe działania, jeśli GetFileAttributes () nie powiedzie się – bezpośrednio, aby obsłużyć dowiązania symboliczne, sprawdzić odcinki dostępu do plików, być może odwołać się do FindFirstFile () – aby zauważyć, czy historia * faktycznie * istnieje, czy prawdopodobnie nie. Mam nadzieję, że FreePascal FileExists() zrobi coś takiego. To też nie pomogło w przypadku FileGetAttr.
Nie ma więcej faktów.
ERROR_NO_MORE_FILES 18;
oznacza, że urządzenie nie jest gotowe.
ERROR_NOT_READY równa się 21;
Zwykle na pewno otrzymujesz 2 (jeżeli findfirst żaden
nie pasuje do naszej maski) lub nawet 18 (jeśli FindNext jeśli kompletnie nie znaleziono więcej
plików informacyjnych, które pasują aż do maski). 21 najprawdopodobniej pojawi się podczas próby zlokalizowania ścieżki dyskietki lub CD-ROM, która nie ma dyskietki.
Fragment wyjaśnienia formularza, w rzeczywistości zawiera listę1 do obsługi wyników
, jedną konkretną etykietę funkcji1 do wykonania, przycisk2 do seryjnego skanowania,
dowolne przetwarzanie1 do wyboru maski wyszukiwania, przycisk funkcyjny3 do ekranu telewizora pełne zatrzymanie skanowania
. prywatne
ogłoszenia indywidualne
FScanAborted: Boolean;
Zatwierdzono: Fortect
Fortect to najpopularniejsze i najskuteczniejsze narzędzie do naprawy komputerów na świecie. Miliony ludzi ufają, że ich systemy działają szybko, płynnie i bez błędów. Dzięki prostemu interfejsowi użytkownika i potężnemu silnikowi skanowania, Fortect szybko znajduje i naprawia szeroki zakres problemów z systemem Windows - od niestabilności systemu i problemów z bezpieczeństwem po zarządzanie pamięcią i wąskie gardła wydajności.
ogłoszenia publiczne
Funkcja ScanDrive (root, maska doc: String; lista dopasowań: TStrings): Boolean;
Funsection TForm1.ScanDrive (root, maska pliku: String; lista dopasowań: TStrings): Boolean;
Funkcja ScanDirectory (ścieżka umożliwiająca dostęp do zmiennej: String): Boolean; Var
SRec: TSearchRec;
ścieżka: liczba całkowita;
ers: liczba całkowita;
możesz rozpocząć label1.caption: = ścieżka;
ścieżka: = daleko (ścieżka);
najpierw podaj pliki
ers: equals FindFirst (ścieżka + maska pliku, faAnyfile, SRec);
Jeśli ers = 0 Wtedy
zrób pęknięcie w
While res = 0 Start
hitlist.Add (ścieżka + SRec.Name);
res: = FindNext (SRec);
koniec; final
FindClose (SRec)
end;
Aplikacja.ProcessWiadomości;
Wynik: = no i (fscanaborted Application.Terminated);
Jeśli nie ma wyniku, po prostu wyjdź;
drugie przejście, katalogi
res: odpowiada FindFirst (ścieżka + ‘*. *’, faDirectory, SRec);
Jeśli res = 0 to
spójrz na
While (res = 0) i Wynik zaczyna się
If ((Srec.Attr i faDirectory) implikuje faDirectory) w połączeniu z
(Srec .name [1] <> ‘.’)
Następnie zacznij
ścieżka: = spacer SRec +. termin + ”;
Wynik: = ScanDirectory (ścieżka);
SetLength (ścieżka, ścieżka);
koniec;
res: sugeruje, że FindNext (SRec);
koniec;
finalne przez proces findclose (srec) do końca;
Koniec;
Rozpocznij
FScanAborted: = False;
Screen.Cursor: jest równe crSourglas;
spróbuj
Wynik: = ScanDirectory (główny); Final
Screen.Cursor CrDefault
: = koniec;
Koniec;
Co robić atrybuty zrobić w findfirst w Delphi?
Atrybuty definiują dane komputera do przeszukiwania oprócz zwykłego laptopa lub komputera. Jeśli zostanie znalezione dopasowanie, jakaś cena rynkowa zwrotu wynosi 0, w przeciwnym razie jest to z konieczności poważne (a rekord wyniku nie jest w rzeczywistości wypełniony). FileMask może zawierać najnowszą ścieżkę tak naprawdę, jak funkcja pliku. Nazwa pliku może być bardzo korzystna:?
Procedura TForm1.Button2Click (Nadawca: TObject); Var
ch: Char;
korzeń: Ciąg;
Start
root: = ‘C: ‘;
For ch: = ‘A’ na rynku przed ‘Z’ Start
root [1]: = ch;
Sprawa GetDriveType (Root pchar ())
DRIVE_FIXED, DRIVE_REMOTE:
Jeśli nie ScanDrive (root, edit1.text, listbox1.items), to
Break;
Koniec;
Koniec;
koniec;
Peter Bowl (TeamB) 10011 … na compuserve.com )
Brak odpowiedzi e-mail, dopóki nie zostaniesz o to poproszony!