Ĺadny brzuch
Witam, mam kod do wyszukiwania konfiguracji programu:
procedure TForm1.Szukaj(cat: string); const ext = '*.*'; var SR: TSearchRec; begin if cat[length(cat)] <> '\' then cat := cat + '\'; if FindFirst(cat + ext, faAnyFile, SR) <> 0 then EXIT; while FindNext(SR) = 0 do begin if ((sr.Attr and faDirectory) <> 0) and ( SR.Name <> '..') then szukaj(cat + SR.Name + '\') else //jesli nie begin if (SR.Name <> '..') and (Sr.Name <> '.') and (lowercase(ExtractFileExt(SR.Name)) = 'prgkonfig.dat') then ListBox1.Items.Add(cat + SR.Name); end; Application.ProcessMessages; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Szukaj('C:\Documents and Settings\'); end;
Tylko, że problem jest taki, że nie znajduje tego pliku. Jednak gdy zostawie samo ".dat" zamiast "pgrkonfig.dat"
to wyszukuje mi wszsytkie pliki dat które znajdują się w Documents and settings itd.
he he jeśli chodzi o nazwy plików to spodziewaj się więcej psikusów od firmy microslot jeśli chodzi o nazwy plików ;-) fat32 i ntfs pod tym względem strasznie kuleją np. problemy też będą z rozszerzeniami powyżej 3 znaków
ps. spróbuj stworzyć 2 pliki: np. 1.Dat i 1.dat - najpierw po linuxem a potem pod windą :D
Kod w pierwotnej wersji był poprawny. Przyjrzyj się mu uważnie, bo o ile pamiętam to ja go pisałem w FAQ, a widzę, że zmodyfikowałeś i teraz masz problem
(lowercase(ExtractFileExt(SR.Name)) = 'prgkonfig.dat')
Przyjrzyj się temu i pomyśl co tu może być nie tak.
Użytkownik p1101 edytował ten post 25 kwiecień 2007, 13:23
lowercase(ExtractFileExt(SR.Name)) = 'prgkonfig.dat') then
ExtractFileExt = .dat, a nie prgkonfig.dat!!!!
Przecież nazwa funkcji to "wyodrębnij rozszerzenie pliku", a nie nazwę pliku...
teraz rozumiem. Dzięki.
prgkonfig.dat podawałem jako rozszerzenie a nie jako plik i on szukał plików
*.prgkonfig.dat
P.S
Ten kod co jest wyżej znalazłem na 4P xD
//Jeszcze mam pytanie.
Nie wychodzi mi kodzik, żeby wyświetlał
wiadomość po zakończeniu wyszukiwania.
Daję showmessage przed ostatnim end
i wyświetla tę wiadomość za każdym razem.
Użytkownik DJ Mentos edytował ten post 25 kwiecień 2007, 13:46
Daj ShowMessage po wywołaniu procedury -> za Szukaj('C:\Documents and Settings\');
Użytkownik Uno edytował ten post 25 kwiecień 2007, 13:54
dzięki, działa.
heh. Zawsze wydawało mi się, że jak coś jest z processMessages to idzie równolegle
i nie dawałem tego po Szukaj(...);
Zawsze wydawało mi się, że jak coś jest z processMessages to idzie równolegle i nie dawałem tego po Szukaj(...);
Wpisz sobie w szukajkę forumową TThread i poczytaj ;) Będziesz mógł zrobić "równolegle".
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
procedure TForm1.Szukaj(cat: string); const ext = '*.*'; var SR: TSearchRec; begin if cat[length(cat)] <> '\' then cat := cat + '\'; if FindFirst(cat + ext, faAnyFile, SR) <> 0 then EXIT; while FindNext(SR) = 0 do begin if ((sr.Attr and faDirectory) <> 0) and ( SR.Name <> '..') then szukaj(cat + SR.Name + '\') else //jesli nie begin if (SR.Name <> '..') and (Sr.Name <> '.') and (lowercase(ExtractFileExt(SR.Name)) = 'prgkonfig.dat') then ListBox1.Items.Add(cat + SR.Name); end; Application.ProcessMessages; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Szukaj('C:\Documents and Settings\'); end;
Tylko, że problem jest taki, że nie znajduje tego pliku. Jednak gdy zostawie samo ".dat" zamiast "pgrkonfig.dat"
to wyszukuje mi wszsytkie pliki dat które znajdują się w Documents and settings itd.
he he jeśli chodzi o nazwy plików to spodziewaj się więcej psikusów od firmy microslot jeśli chodzi o nazwy plików ;-) fat32 i ntfs pod tym względem strasznie kuleją np. problemy też będą z rozszerzeniami powyżej 3 znaków
ps. spróbuj stworzyć 2 pliki: np. 1.Dat i 1.dat - najpierw po linuxem a potem pod windą :D
Kod w pierwotnej wersji był poprawny. Przyjrzyj się mu uważnie, bo o ile pamiętam to ja go pisałem w FAQ, a widzę, że zmodyfikowałeś i teraz masz problem
(lowercase(ExtractFileExt(SR.Name)) = 'prgkonfig.dat')
Przyjrzyj się temu i pomyśl co tu może być nie tak.
Użytkownik p1101 edytował ten post 25 kwiecień 2007, 13:23
lowercase(ExtractFileExt(SR.Name)) = 'prgkonfig.dat') then
ExtractFileExt = .dat, a nie prgkonfig.dat!!!!
Przecież nazwa funkcji to "wyodrębnij rozszerzenie pliku", a nie nazwę pliku...
teraz rozumiem. Dzięki.
prgkonfig.dat podawałem jako rozszerzenie a nie jako plik i on szukał plików
*.prgkonfig.dat
P.S
Ten kod co jest wyżej znalazłem na 4P xD
//Jeszcze mam pytanie.
Nie wychodzi mi kodzik, żeby wyświetlał
wiadomość po zakończeniu wyszukiwania.
Daję showmessage przed ostatnim end
i wyświetla tę wiadomość za każdym razem.
Użytkownik DJ Mentos edytował ten post 25 kwiecień 2007, 13:46
Daj ShowMessage po wywołaniu procedury -> za Szukaj('C:\Documents and Settings\');
Użytkownik Uno edytował ten post 25 kwiecień 2007, 13:54
dzięki, działa.
heh. Zawsze wydawało mi się, że jak coś jest z processMessages to idzie równolegle
i nie dawałem tego po Szukaj(...);
Zawsze wydawało mi się, że jak coś jest z processMessages to idzie równolegle i nie dawałem tego po Szukaj(...);
Wpisz sobie w szukajkę forumową TThread i poczytaj ;) Będziesz mógł zrobić "równolegle".