Unresolved External GETFILEDATE@FsbUc in krbti003.obj
дата создания\изменения файла
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Re: дата создания\изменения файла
Шаблоны Kstools, в т.ч. дата создания\изменения файла
- Вложения
-
- KStools.zip
- (873.88 КБ) 223 скачивания
- Дед Пахом
- Старичок
- Сообщения: 3289
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
Re: дата создания\изменения файла
Подключите файл C55UTIL.CLW в проект (ветка External source files) или допишите в самом конце файла C55UTIL.INCKoss писал(а):Unresolved External GETFILEDATE@FsbUc in krbti003.obj
Код: Выделить всё
COMPILE('Link', _ABCLinkMode_)
PRAGMA('compile(C55UTIL.CLW)')
!Link
С уважением, ДП
- Дед Пахом
- Старичок
- Сообщения: 3289
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
Re: дата создания\изменения файла
Если Вы про функции GetFileDate/GetFileTime, то посмотрите на их исходный текст, на оператор RETURN. А так... Время в Clarion это LONG - число сотых секунды с полуночи.Koss писал(а):А в каком формате кларион время возвращает?
С уважением, ДП
Re: дата создания\изменения файла
А как GetCurrentDirectory получить?
Т.е. каталог, где экзешник запустили.
поиск GetCurrentDirectory по "C:\Program Files\Clarion 5.5" ничего не дал.
Т.е. каталог, где экзешник запустили.
поиск GetCurrentDirectory по "C:\Program Files\Clarion 5.5" ничего не дал.
- Дед Пахом
- Старичок
- Сообщения: 3289
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
Re: дата создания\изменения файла
PATH(), если до его вызова не было переходов в другую папку (SETPATH или FILEDIALOG или ещё как).Koss писал(а):А как GetCurrentDirectory получить?
Т.е. каталог, где экзешник запустили.
поиск GetCurrentDirectory по "C:\Program Files\Clarion 5.5" ничего не дал.
С уважением, ДП
Re: дата создания\изменения файла
Извините, вот ещё вопрос.
Допустим откопали вы в гуглах нужную Вам апи функцию, видите, к примеру
Syntax
Без всяких сторонних ресурсов?
через winapi.exe как-то ?
Допустим откопали вы в гуглах нужную Вам апи функцию, видите, к примеру
Syntax
Как её использовать в самом кларионе?DWORD WINAPI GetFileSize(
__in HANDLE hFile,
__out_opt LPDWORD lpFileSizeHigh
);
Без всяких сторонних ресурсов?
через winapi.exe как-то ?
- Дед Пахом
- Старичок
- Сообщения: 3289
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
Re: дата создания\изменения файла
Я так понимаю, с языком C Вы незнакомы? Тогда будет сложно. Попробую на данном конкретном случае объяснить суть:Koss писал(а):Извините, вот ещё вопрос.
Допустим откопали вы в гуглах нужную Вам апи функцию, видите, к примеру
SyntaxКак её использовать в самом кларионе?DWORD WINAPI GetFileSize(
__in HANDLE hFile,
__out_opt LPDWORD lpFileSizeHigh
);
Без всяких сторонних ресурсов?
через winapi.exe как-то ?
DWORD - возврат функции (двойное слово, Clarion 'эквивалент ULONG)
__in, __out_opt - пометки, что параметр является входящим/выходящим, необязательным (игнорируем)
HANDLE - синоним для DWORD (ULONG)
LPDWORD - длиный указатель на DWORD (Clarion 'эквивалент *ULONG)
WINAPI - порядок записи параметров в стек (для winapi добавляем в объявление процедуры на Clarion PASCAL)
В итоге
Код: Выделить всё
MODULE('WinApi')
GetFileSize(ULONG, *ULONG), ULONG, PASCAL, NAME('GetFileSize')
END

С уважением, ДП
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: дата создания\изменения файла
FYI
- Вложения
-
- filedatetime.zip
- FileDateTime
- (7.87 КБ) 240 скачиваний
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- WadimZapara
- Активист
- Сообщения: 181
- Зарегистрирован: 11 Июнь 2008, 12:11
- Откуда: Тамбов
Re: дата создания\изменения файла
С успехом использую следующий текст с функцией FileFound_LenDate (правда в составе DLL с другими):
ФУНКЦИЯ ПРОВЕРЯЕТ НАЛИЧИЕ ФАЙЛА И ВОЗВРАЩАЕТ (ЕСЛИ ПРОСЯТ) ЕГО ДЛИНУ И ДАТУ СОЗДАНИЯ
Работает и в том случае, когда средствами NTFS просмотр каталога с этим файлом запрещён, но сам файл для чтения разрешён
(DIR, Explorer и другие файл-менеджеры - в таком случае этот файл не находят)
ФУНКЦИЯ ПРОВЕРЯЕТ НАЛИЧИЕ ФАЙЛА И ВОЗВРАЩАЕТ (ЕСЛИ ПРОСЯТ) ЕГО ДЛИНУ И ДАТУ СОЗДАНИЯ
Работает и в том случае, когда средствами NTFS просмотр каталога с этим файлом запрещён, но сам файл для чтения разрешён
(DIR, Explorer и другие файл-менеджеры - в таком случае этот файл не находят)
Код: Выделить всё
! Сначала объявляются типы и константы, а затем функции
Word EQUATE(UShort)
FILETIME Group,Type ! "файловое время"
dwLowDateTime ULong
dwHighDateTime ULong
End
SYSTEMTIME Group,Type ! "системное время"
wYear Word ! год
wMonth Word ! месяц
wDayOfWeek Word ! день недели
wDay Word ! число
wHour Word ! час
wMinute Word ! минута
wSecond Word ! секунда
wMilliseconds Word ! миллисекунда
End
! 1. идентификаторы доступа к файлу
GENERIC_READ EQUATE(80000000h)
GENERIC_WRITE EQUATE(40000000h)
GENERIC_EXECUTE EQUATE(20000000h)
GENERIC_ALL EQUATE(10000000h)
! 2. цели вызова функции CreateFile()
CREATE_NEW Equate(1) ! создать новый, если не существует (при существ. НЕ СРАБОТАЕТ-ошибка с кодом 80)
CREATE_ALWAYS Equate(2) ! создавать новый всегда (при существ. СРАБОТАЕТ-ошибка с кодом 183)
OPEN_EXISTING Equate(3) ! открыть существующий (при отсутств.НЕ СРАБОТАЕТ-ошибка с кодом 2)
OPEN_ALWAYS Equate(4) ! открыть всегда (при существ. СРАБОТАЕТ-ошибка с кодом 183)
! (при отсутств.СОЗДАЁТ -ошибка с кодом 0)
TRUNCATE_EXISTING Equate(5) ! открыть и усечь (при отсутств.НЕ СРАБОТАЕТ-ошибка с кодом 2), треб.GENERIC_WRITE
! 3. атрибуты файлов
FILE_ATTRIBUTE_READONLY EQUATE(00000001h)
FILE_ATTRIBUTE_HIDDEN EQUATE(00000002h)
FILE_ATTRIBUTE_SYSTEM EQUATE(00000004h)
FILE_ATTRIBUTE_ARCHIVE EQUATE(00000020h)
FILE_ATTRIBUTE_NORMAL EQUATE(00000080h)
FILE_ATTRIBUTE_TEMPORARY EQUATE(00000100h) ! временный
FILE_ATTRIBUTE_OFFLINE EQUATE(00001000h) ! данные немедленно недоступны (в дальнем хранилище)
FILE_ATTRIBUTE_ENCRYPTED EQUATE(00004000h)
! 4. идентификаторы разрешений совместного доступа к файлу
FILE_SHARE_NONE Equate(0)
FILE_SHARE_READ Equate(1)
FILE_SHARE_WRITE Equate(2)
FILE_SHARE_DELETE Equate(4)
FILE_SHARE_BOTH Equate(FILE_SHARE_READ + FILE_SHARE_WRITE)
FILE_SHARE_ALL Equate(FILE_SHARE_BOTH + FILE_SHARE_DELETE)
! 5. плохой Handle
INVALID_HANDLE_VALUE Equate(0FFFFFFFFh)
MAP
MODULE('Windows.dll')
CreateFile(*CString lpFileName, ULONG dwDesiredAccess, ULONG dwShareMode, |
ULONG Addr_SecurityAttributes=0, ULONG dwCreationDisposition, ULONG dwFlagsAndAttributes, |
UnSigned hTemplateFile=0),UnSigned, PASCAL,RAW,Name('CreateFileA'),DLL(TRUE)
GetFileSize(UnSigned hFile, ULONG Addr_FileSizeHigh=0),ULONG, PASCAL,RAW,DLL(TRUE)
GetFileTime(UnSigned hFile, *FILETIME lpCreationTime, |
ULong lpLastAccessTime=0, |
ULong lpLastWriteTime=0),BOOL, PASCAL,RAW,DLL(TRUE),proc
FileTimeToSystemTime(*FILETIME lpFileTime, *SYSTEMTIME lpSystemTime), BOOL, PASCAL,RAW,DLL(TRUE),proc
END !MODULE
FileFound_LenDate (String FullNameOfFileWithExt, <*ULong Bytes>, <*Long CreationDate>), Byte
END !MAP
CODE
!----------------------------
FileFound_LenDate FUNCTION (String FullNameOfFileWithExt, <*ULong Bytes>, <*Long CreationDate>) !, Byte
! между прочим, бывают файлы и нулевой длины...
ret Byte(FALSE) ! для возврата: если файл найден - TRUE
hFile UnSigned
lpcFileName CString(256)
CreationDateTime Group(FILETIME).
FileSystemTime Group(SYSTEMTIME).
!*****************************************************************************************
CODE
lpcFileName = FullNameOfFileWithExt
hFile = CreateFile(lpcFileName, GENERIC_READ, FILE_SHARE_BOTH, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL)
If hFile <> INVALID_HANDLE_VALUE Then ! Нет ошибки
ret += 1
If ~Omitted(2) Then Bytes = GetFileSize(hFile).
If ~Omitted(3) Then
GetFileTime(hFile, CreationDateTime)
FileTimeToSystemTime(CreationDateTime, FileSystemTime)
CreationDate = Date(FileSystemTime.wMonth, FileSystemTime.wDay, FileSystemTime.wYear)
! Если хотите - дополните возвратом и времени создания, используя:
!FileSystemTime.wDayOfWeek
!FileSystemTime.wHour
!FileSystemTime.wMinute
!FileSystemTime.wSecond
!FileSystemTime.wMilliseconds
End
CloseHandle(hFile)
Else
If ~Omitted(2) Then Clear(Bytes).
If ~Omitted(3) Then Clear(CreationDate).
End
Return(ret)
Компьютер имеет то преимущество перед мозгом, что им пользуются...
- morkovin
- Ветеран
- Сообщения: 935
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
- Контактная информация:
Re: дата создания\изменения файла
Что касается функций WinAPI, то все уже сделала Veronica Chapman (http://www.clarionopensource.com/).Допустим откопали вы в гуглах нужную Вам апи функцию, видите, к примеру
Конкретно по WinApi - http://www.clarionopensource.com/mywina ... sitory.htm
The purpose of this Gateway is to provide links to Windows API materials that have been 'Clarionised' and tested. This will be done 'as and when', and will comprise links to Text Files containing 'Clarionised' Source Text.
WBR, morkovin