Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Zeos и Int64 
:(
    Опции темы
Pavelbej
Дата 27.5.2009, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 419
Регистрация: 5.7.2005

Репутация: нет
Всего: 6



Здравствуйте!

Хотел бы узнать как решить проблему если кто сталкивался.
Пользуюсь компонентами Zeos 6.6.4. С их помощью я загружаю в свою программу закладки браузера Firefox (файл places.sqlite - sqlite3). Так вот в таблице есть поле "dateAdded" со значением "1243282211640625" (Unix time)
Читаю значение так:
Код

FormatDateTime('', UnixToDateTime(fieldbyname('dateAdded').AsInteger))

Результата нет. Просто прочесть число, без конвертации, возвращяет ноль.

Если не ошибаюсь, то чтобы хранить такое число (конвертировать ее), нужен тип Int64, а ".AsInteger" является Longint.
Код

 property AsInteger: Longint read GetAsInteger write SetAsInteger;

модуль DB

Помогите разобратся в чем проблема, в компонентах, в чем-то другом, или я вообще не туда копаю?
Совсем запутался

Это сообщение отредактировал(а) Pavelbej - 27.5.2009, 00:40
PM MAIL   Вверх
Akella
Дата 27.5.2009, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



у FormatDateTime разве первым параметром не должен идти сам формат отображения??

Добавлено через 6 минут и 26 секунд
Цитата(Pavelbej @  27.5.2009,  00:39 Найти цитируемый пост)
есть поле "dateAdded" со значением "1243282211640625" (Unix time)

Ты уверен, что там именно такое значение? Может там что-то типа 125584,1251?

Добавлено через 7 минут и 23 секунды
Код
FormatDateTime('dd/mm/yyyy - hh:nn:ss:zzz', UnixToDateTime(fieldbyname('dateAdded').AsInteger))

PM MAIL   Вверх
Pavelbej
Дата 27.5.2009, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 419
Регистрация: 5.7.2005

Репутация: нет
Всего: 6



Цитата(Akella @  27.5.2009,  08:48 Найти цитируемый пост)
у FormatDateTime разве первым параметром не должен идти сам формат отображения??

Как раз так и отображается как нужно: 24.05.2009 16:00:23
Да это и не важно, даже так не читается:
Код

fieldbyname('dateAdded').AsInteger
fieldbyname('dateAdded').AsString


Цитата(Akella @  27.5.2009,  08:48 Найти цитируемый пост)
Ты уверен, что там именно такое значение? Может там что-то типа 125584,1251?

Уверен:
Цитата

PRTime Format
PRTime is very similar to Unix or POSIX time. As the table below shows:

Name  Format  Epoch  Increments
PRTime  64-bit integer  Midnight 1 January 1970 UTC  Microseconds
Unix / POSIX  32-bit integer  Midnight 1 January 1970 UTC  Seconds

As a microsecond is one millionth of a second you can easily convert PRTime to UNIX time by dividing the PRTime value by 1,000,000.

In the example above of PRTime 1221842272303080, if we divide this by 1,000,000 we get 1221842272.30308. Now if we drop the fractional part we have the UNIX timestamp of 1221842272 which, as above, converts to Friday, September 19th 2008, 16:37:52 (UTC).

http://www.firefoxforensics.com/research/prtime.shtml


PM MAIL   Вверх
Akella
  Дата 27.5.2009, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



а если 
Код

Var
 i64: int64;
begin
...
i64 := fieldbyname('dateAdded').AsInt64;




Цитата(Pavelbej @  27.5.2009,  00:39 Найти цитируемый пост)
Читаю значение так:


Цитата(Pavelbej @  27.5.2009,  00:39 Найти цитируемый пост)
Результата нет.

И куда, позволь спросить, ты читаешь? smile 
PM MAIL   Вверх
Pavelbej
Дата 28.5.2009, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 419
Регистрация: 5.7.2005

Репутация: нет
Всего: 6



Цитата(Akella @  27.5.2009,  23:02 Найти цитируемый пост)
.AsInt64;

"Нет такой буквы в этом слове"
Undeclared identifier: 'AsInt64'

Цитата(Akella @  27.5.2009,  23:02 Найти цитируемый пост)
И куда, позволь спросить, ты читаешь? smile  

Да невозможно получить данные ни в строковую переменную, ни в integer.
Выдает пустую строку и ноль соответственно.
PM MAIL   Вверх
Akella
Дата 28.5.2009, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



а так?
Код

ShowMessage(VarToStr(fieldbyname('dateAdded').Asvariant));


Добавлено через 1 минуту и 16 секунд
Цитата(Pavelbej @  28.5.2009,  11:11 Найти цитируемый пост)
Выдает пустую строку и ноль соответственно. 

А ты уверен, что значение есть в поле? мож его там попросту нет?
А в гриде показывается значение?
PM MAIL   Вверх
Pavelbej
Дата 28.5.2009, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 419
Регистрация: 5.7.2005

Репутация: нет
Всего: 6



Цитата(Akella @  28.5.2009,  16:17 Найти цитируемый пост)

а так?
ShowMessage(VarToStr(fieldbyname('dateAdded').Asvariant));

Таже картина


Цитата(Akella @  28.5.2009,  16:17 Найти цитируемый пост)
А ты уверен, что значение есть в поле? мож его там попросту нет? 

Есть конечно. Ведь Firefox дату создания, изменения закладки показывает.
А вот что видно если отрыть базу через SQLite Database Browser:
user posted image

А тип поля является Integer:
user posted image

Всеже, кажется компонент не поддерживает int64

Это сообщение отредактировал(а) Pavelbej - 29.5.2009, 00:01
PM MAIL   Вверх
Akella
Дата 29.5.2009, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Хммм... Может проблема с Zeos? 
PM MAIL   Вверх
Romikgy
Дата 8.6.2009, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 4
Всего: 146



скорее всего .... 
Цитата(Akella @  29.5.2009,  19:34 Найти цитируемый пост)
проблема с Zeos

ибо 
Код

INTEGER. The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value.

http://sqlite.org/datatype3.html

8 байтовое целое 
Цитата(Akella @  27.5.2009,  07:48 Найти цитируемый пост)
.AsInteger

имхо не потянет ....


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Akella
Дата 9.6.2009, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата
ZTable1.FieldByName('').AsSQLTimeStamp

PM MAIL   Вверх
Romikgy
Дата 9.6.2009, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 4
Всего: 146



Цитата(Pavelbej @  26.5.2009,  23:39 Найти цитируемый пост)
со значением "1243282211640625" (Unix time)


Цитата(Akella @  9.6.2009,  08:56 Найти цитируемый пост)
.AsSQLTimeStamp

Код

TSQLTimeStamp represents time and date values with a high degree of accuracy.

Unit

SqlTimSt

Delphi syntax:

type TSQLTimeStamp = packed record

    Year : SmallInt;
    Month : Word;
    Day : Word;
    Hour : Word;
    Minute : Word;
    Second : Word;
    Fractions : LongWord;
  end;

имхо не равно...


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Akella
Дата 10.6.2009, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Код

Var
 SQLTimeStamp: TSQLTimeStamp;
begin
...
  SQLTimeStamp := ZTable1.FieldByName('pole1').AsSQLTimeStamp;
....

теперь можно из переменной SQLTimeStamp вытянуть информацию
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0879 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.