[Delphi]Data modyfikacji pliku

0

Siema
Procedura ma sprawdzać datę modyfikacji pliku i nie ma problemu jeżeli chodzi o plik w bieżącym katalogu
to działa:
plik := FileOpen('jakis.plik',fmOpenRead);
data := FileDateToDateTime(FileGetDate(plik));

a to się wywala:
plik := FileOpen(GetCurrentDir + '\Katalog\jakis.plik',fmOpenRead);
data := FileDateToDateTime(FileGetDate(plik));

Co skopałem?

0

Witam

teles40 napisał(a)

a to się wywala:
plik := FileOpen(GetCurrentDir + '\Katalog\jakis.plik',fmOpenRead);
data := FileDateToDateTime(FileGetDate(plik));

Co skopałem?

Powinno działać tak jak i poprzedni kod chyba, że podajesz błędną ścieżkę do pliku.
Pozdrawiam

0

Mi też się wydawało że powinno działać ale tak nie jest.
Szczeka że nieprawidłowy parametr.

0

O ile wiem,GetCurrentDir zwraca stringa ze znaczkiem \ na końcu, więc niepotrzebnie go dodajesz w tym stringu następnym.

0

to też nie to, jakieś inne sugestie?

0

Sam sobie sprawdź co źle robisz:

ShowMessage(GetCurrentDir + '\Katalog\jakis.plik');

// lub sprawdzając istnienie katalogu
if not DirectoryExists(GetCurrentDir + '\Katalog\') then
  ShowMessage('ścieżka jest nieprawidłowa !')
else
  ShowMessage('ścieżka prawidłowa');
0

Nie ośmieliłbym się postawić pytania gdybym uprzednio nie sprawdził tak oczywistych rzeczy. [!!!]

0

Może zamień z GetCurrentDir na ExtractFilePath(Application.ExeName)

Z tym że ExtractFilePath zwróci na koncu także znak \

0

Jeżeli ścieżka jest poprawna to musi działać! Przecież wszystkim działa dlaczego niby tobie akurat nie?

plik := FileOpen(GetCurrentDir + '\Katalog\jakis.plik',fmOpenRead);
if plik > 0 then
begin
  data := FileDateToDateTime(FileGetDate(plik));
  FileClose(plik);
end
else
  ShowMessage('Błąd otwarcia pliku');

Jestem w 100% pewny, że podałeś złą ścieżkę lub plik, który chcesz otworzyć jest używany i dlatego próba jego otwarcia kończy sie niepowodzeniem.

0

I co się od kalafiorów wyzywacie ;)
Ścieżka jest prawidłowa tylko plik jest już otwarty (baza danych)

Pytanie brzmi: czy i jak można odczytać datę z owartego pliku?

0
teles40 napisał(a)

I co się od kalafiorów wyzywacie ;)
Ścieżka jest prawidłowa tylko plik jest już otwarty (baza danych)

Pytanie brzmi: czy i jak można odczytać datę z owartego pliku?

Czyli jednak mialem rację :P

Można zrobić sobie funkcję (powinna działać) ale ostrzegam że nie chciało mi sie sprawdzać.

function GetLastModTime(FileName: string;var DateTime: TDateTime): Boolean;
var
  SearchRec: TSearchRec;
begin
  result:= False;
  if FindFirst(FileName, faAnyFile, SearchRec) = 0 then
  begin
    DateTime:= FileDateToDateTime(SearchRec.Time);
    FindClose(SearchRec);
    result:= True;
  end;
end;

i przykład użycia:

var
  MyTime: TDateTime;
begin
  if GetLastModTime('C:\Moje Dokumenty\db1.mdb', MyTime) then
    ShowMessage(DateTimeToStr(MyTime));
end;
0

Sprawdzone, przetestowane - działa bez zarzutu.
Fenkju [browar]

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