Jak sprawdzić czy istnieje dany plik w katalogu nadrzędnym niż aplikacja ?
W katalogu w którym znajduję się aplikacja która ma to sprawdzić robię to tak:
if (FileExists(ExtractFileDir(Application.ExeName)+'plik.txt.')=true)then
begin
;
end;
Wątek przeniesiony 2015-05-25 18:27 z Delphi i Pascal przez olesio.
Jak sprawdzić czy istnieje dany plik w katalogu nadrzędnym niż aplikacja ?
W katalogu w którym znajduję się aplikacja która ma to sprawdzić robię to tak:
if (FileExists(ExtractFileDir(Application.ExeName)+'plik.txt.')=true)then
begin
;
end;
Nie ma sensu stosować kostrukcji if ... = True
tylko po prostu if ... then
albo if not ... then
. Po drugie, to co chcesz osiągnąc da się załatwić według mnie takim kodem. Sprawdziłem pod Delphi 7 i jest ok. Tylko nalezy pamiętać, że we wcześniejszych wersjach Delphi funkcja FileExists
może zwrócić False dla pliku z bardzo dawną datą utworzenia. Dlatego lepiej zrobić własną w oparciu o funkcje WinAPI wyszukujące pliki.
SetCurrentDirectory(Pchar(ExtractFilePath(Application.ExeName)));
if FileExists('..\test.wtf') then
begin
Caption := 'Jest';
end
else
begin
Caption := 'Nie ma';
end;
Po trzecie. Dlaczego tak banalne pytanie nie jest w dziale Newbie? Tam przenoszę, ale ostatni raz. Od teraz będzie koszowanie. Chociaż za tak bezesnwonie nadany temat, ech szkoda gadać. Że też nie ma zdalnego rażenia prądem nieraz kogoś przed moderacje forów za olewanie regulaminów i niechęć by własny wątek był jak najbardziej czytelny :/
EDIT: teraz zauważyłem, że nawet sprawdzenie istnienia pliku w aktaualnym katalogu robisz źle.
olesio napisał(a)
EDIT: teraz zauważyłem, że nawet sprawdzenie istnienia pliku w aktaualnym katalogu robisz źle.
Rozwijając tę część wypowiedzi, użyj funkcji ExtractFilePath:
if FileExists(ExtractFilePath(Application.ExeName) + 'plik.txt.') then
Ewentualnie zamiast odwoływać się do właściwości Application.ExeName
, skorzystaj z zerowego parametru uruchomieniowego, który to pobrać możesz za pomocą funkcji ParamStr:
if FileExists(ExtractFilePath(ParamStr(0)) + 'plik.txt') then