Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

GetFileTime для выполняемого exe


DevilDevil ©   (2007-08-16 14:15:00) 

проблемы в открытии файла:

H := FileOpen(pchar(paramstr(0)), fmOpenRead);
H всегда -1


Сергей М.   (2007-08-16 16:23:00) [1]


> в стек я после всего узнанного не полезу


да уж).. пока с "селектором" не разберешься - неча тебе там "ловить")

А чтобы разобраться - эт целая "эпоха" в твоей программерской жизни минует.

Как там у Великого Негритянского Поэта - то ?

"О сколько нам открытий чудных .." (С)

Так вроде бы ?)


DevilDevil   (2007-08-16 16:17:00) [2]

> Ну мож тогда есть резон устроить для себя обзор преимуществ
> и недостатков тех или иных существующих менеджеров ?


:)
ну в стек я после всего узнанного не полезу :)

> DVM ©   (16.08.07 15:57) [10]

оба варианта равнозначны?
в моём варианте не вызывается FileTimeToDosDateTime


Сергей М.   (2007-08-16 16:01:00) [3]


> DevilDevil ©   (16.08.07 15:54) [9]
> стек - для себя


Ну мож тогда есть резон устроить для себя обзор преимуществ и недостатков тех или иных существующих менеджеров ?


DVM   (2007-08-16 15:57:00) [4]


> DevilDevil ©  

Вариант без FileOpen:


function GetFileDateTime(FileName: string): TDateTime;
var
 FindData: TWin32FindData;
 FileHandle: THandle;
 LocalFileTime: TFileTime;
 DosFileTime: DWORD;
begin
 Result := 0;
 FileHandle := FindFirstFile(PChar(FileName), FindData);
 if FileHandle <> INVALID_HANDLE_VALUE then
   begin
     if (FindData.dwFileAttributes and FILE_ACTION_ADDED) = 0 then
       begin
         FileTimeToLocalFileTime(FindData.ftCreationTime, LocalFileTime);
         FileTimeToDosDateTime(LocalFileTime, LongRec(DosFileTime).Hi, LongRec(DosFileTime).Lo);
         Result := FileDateToDateTime(DosFileTime);
       end;
     Windows.FindClose(FileHandle);
   end;
end;


DevilDevil   (2007-08-16 15:54:00) [5]

> Сергей М. ©   (16.08.07 15:20) [8]

Гы :) никак!

стек - для себя, "файловая петрушка" - для работы. :)


Сергей М.   (2007-08-16 15:20:00) [6]

Мож и достаточно)

Но мне просто интересно - как вся эта файлотаймовая петрушка "вяжется" со стеком, селекторами и прочей лабудой ?)


DevilDevil   (2007-08-16 15:02:00) [7]

всем спасибо...
единственный вопрос, FileTimeToSystemTime(T, S) достаточно ?


DevilDevil   (2007-08-16 14:46:00) [8]

похоже, месяц измеряется 1..12


Сергей М.   (2007-08-16 14:41:00) [9]

http://www.swissdelphicenter.ch/torry/showcode.php?id=30


DevilDevil   (2007-08-16 14:37:00) [10]

мда...

const
MonthsConsts : array[0..11] of string = ('января', 'февраля', 'марта',
'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря');


DevilDevil   (2007-08-16 14:35:00) [11]

> Leonid Troyanovsky ©   (16.08.07 14:23) [2]

спасибо, помогло

> И причем здесь GetFileTime

:) а я предвидел, что гладко ничего не пойдёт :)

const
MonthsConsts : array[0..11] of string = ('ÿíâàðÿ', 'ôåâðàëÿ', 'ìàðòà',
'àïðåëÿ', 'ìàÿ', 'èþíÿ', 'èþëÿ', 'àâãóñòà', 'ñåíòÿáðÿ', 'îêòÿáðÿ', 'íîÿáðÿ', 'äåêàáðÿ');

procedure TForm1.FormCreate(Sender: TObject);
var
 T, D : TFileTime;
 S : TSystemTime;
 Str : string;
 H : integer;
begin
 H := FileOpen(pchar(paramstr(0)), fmOpenRead or fmShareDenyNone);
 GetFileTime(H, @T, nil, nil);
 FileClose(H);

 //FileTimeToLocalFileTime(T, D);
 //FileTimeToSystemTime(D, S);

 FileTimeToSystemTime(T, S);

 Str := Format('%d %s %d', [S.wDay, MonthsConsts[S.wMonth], S.wYear ]);

 Caption := Str;
end;


Leonid Troyanovsky   (2007-08-16 14:23:00) [12]


> DevilDevil ©   (16.08.07 14:15)  

> H := FileOpen(pchar(paramstr(0)), fmOpenRead

fmOpenRead or fmShareDenyNone

--
Regards, LVT.


Сергей М.   (2007-08-16 14:21:00) [13]

На Win32Check(FileOpen(..) >= 0) фантазии уже не хватило ?

И причем здесь GetFileTime, если ты получил отлуп еще ДО того как ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо