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

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

Проблемы с конвертацией дат и NewFileStream


Maxim Pushkar ©   (2003-02-13 01:00:00) 

Проблема 1:
Пытаюсь пользовать процедуры DateTime2SystemTime и SystemTime2DateTime. Все бы хорошо, но тип TDateTime по стандарту ведет отсчет не с 0001 года (как было в Delphi 1), а с 1899 и при конвертации получается не 2000 год а 101. Стоило бы подкорректировать.

Проблема 2:
Работаю с файлом на чтение/запись. Использую для этого PFileStream, который создаю с помощью NewFileStream. Проблема возникает, когда я начинаю гулять по файлу (Seek) и писать блоки данных. После каждой записи файл "режется" на конце блока, что есть неправильно. Функция NewReadWriteFileStream не подходит, так как не дает задать дополнительные атрибуты (например DenyWrite и т. д.)

З. Ы. У себя я это подправил, но нехотелось бы править исходники после каждого апдейта.

Спасибо за внимание.


Kladov   (2003-02-16 09:06:00) [1]

и на запись. У меня таких проблем не было. Смотрите, чему равен Strm.Handle. Если INVALID_HANDLE_VALUE, то можно сделать ShowMessage( SysErrorMessage( GetLastError ) ), и посмотреть, что не так.


SPeller   (2003-02-16 04:42:00) [2]

Нет. Я ж говорю, что CreateFile открывает запросто. Я проверял при использовании потока атрибуты - стояла галочка только на "Архивный". Да и причём защита от записи, если открываю на чтение?


Kladov   (2003-02-16 00:19:00) [3]

А может, файл защищен от записи?


SPeller   (2003-02-15 23:44:00) [4]


> А почему не используете NewReadWriteFileStream ?

Я использую именно так созданный поток и ничего у меня не читается.


Kladov   (2003-02-14 15:47:00) [5]

В KOL тип TDateTime ведет отсчет от 1-го г. нашей эры. Такое значение возвращает Now в KOL. Есть константа для перехода к дате в формате VCL и SQL: VCLDate0. Вычтете ее из даты KOL, получите дату VCL.


> NewFileStream. Проблема

А почему не используете NewReadWriteFileStream ? Будет подправлено, но тогда сами EOF ставьте.


SPeller   (2003-02-14 10:32:00) [6]

Не знаю как и чего, но FileStream использует для работы АПИ-функции для чтения/записи. Так вот, когда я использую поток, то НЕ читается, а если открываю тот же файл непосредственно АПИ-шной функцией, то всё читается нормально. И проверяю всё на PAS-версии, потому как ASM-версию и без меня проверят :-))


Maxim Pushkar   (2003-02-14 03:13:00) [7]

У меня все функции с файлами работают нормально. Может ты просто не проверяешь состояние потока? ( FILE_INVALID_HANDLEили что-то подобное)


SPeller   (2003-02-13 04:35:00) [8]

А у меня не работал ReadFileStream. Не помню читал он или нет, или только пытался, но вобщем ничего хорошего у него не получалось и прога вылетала.


Наверх

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