Wątek przeniesiony 2015-05-25 18:27 z Delphi i Pascal przez olesio.

Sprawdzenie czy w nadrzędnym katalogu istnieje plik.

0

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;

1

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.

0
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

1 użytkowników online, w tym zalogowanych: 0, gości: 1