Вверх ↑
Этот топик читают: Гость
Ответов: 8926
Рейтинг: 823
#16: 2007-03-12 21:48:47 ЛС | профиль | цитата
Dilma, если в секундах от РХ, то хватает 4-х байтного integer, а если в мсек или мксек, то это уже int64
карма: 19

0
Ответов: 9906
Рейтинг: 351
#17: 2007-03-12 22:13:26 ЛС | профиль | цитата
Dilma писал(а):
для получения следующей отметки времени, отстоящей скажем на h часов от текущей имеем:
next_time = cur_time + h*60*60

В Real тоже самое. Просто потерь от системного времени компа в мс нет пока...
Собственно разница-то во множителе 86400 и адитивной константе (количество дней от РХ до 1970г - не считал).
Просто это все уже есть.

Ну хорошо: есть три формата: text, integer, real
Конвертор на 6 направлений (любой в любой)
И св-во маска - с вышецитированными KOL-овскими ключами...

Dilma писал(а):
обратный парсинг без указания пользователем маски просто не возможен

Дык мне кажется что и с прямым не очень-то получится... Без маски-то.
карма: 9

0
Администрация
Ответов: 15295
Рейтинг: 1519
#18: 2007-03-12 22:23:15 ЛС | профиль | цитата
Galkov писал(а):
В Real тоже самое

не тоже самое. Если в KOL формат времени типа real это дата-точка-время, то получение следующего интервала это
next_time = cur_time + (h*60*60)/real_const
даже если не брать это во внимание, то мне как рядовому пользователю понятно, что такое "число секунд" и что с ними делать, а вот что такое real мне не понятно совершенно.

Конвертор одного в другое это очевидно необходимая вещь, однако я сейчас говорю о формате, который наиболее часто будет использоваться в своем неизменном виде. И почему-то есть уверенность, что таковым является как раз целое цисло, а не real
карма: 27
0
Ответов: 9906
Рейтинг: 351
#19: 2007-03-12 22:47:20 ЛС | профиль | цитата
Dilma писал(а):
а вот что такое real мне не понятно совершенно

Абсолютно все понятно - временной интервал в днях.
Расстояния меряют в километрах, ярдах, и т.п.
Ну и время так же: в секундах, в сутках, и т.п.

Точно так же все: прибавишь 1/24-ю суток - значит добавил час.

Говорил про то, что если выводить данные из базовых элементов, то обязательно без потерь
Системное время - int64
Real - еще без потерь, а integer - уже потери (доли секунды).
Если можно терять эти доли, то это должен быть выбор пользователя, а не наш.
Он и выберет Time-конвертор в режиме Real -> Integer. Имеет право.
Но предписывать ему это - уже мы не имем право.
Быть умнее пользователя - это не русский стиль, это буржуйский, ИМХО
карма: 9

0
Ответов: 105
Рейтинг: 2
#20: 2007-03-13 09:18:16 ЛС | профиль | цитата
GRIMAN, с учётом замечаний Galkov-а переделал (предварительно прочитав раздел "Работа с датой и временем в KOL") Convertor - он стал меньше по размеру и считает от Рождества Христова

А вот где бы про этот KOL прочитать, т.е. справку по нему? И если не тяжело объяснить на примере этой процедуры
procedure THIConvertor._work_doConvert13(var _Data:TData; Index:word);//RealToDate
var Result:String;
S:Real;
begin
S := ReadReal(_Data,_data_Data,0);
Result := DateTime2StrShort(S);
Day_of_Week := DayOfWeek(S);
_hi_OnEvent(_event_onResult,Result);
end;
Что означает каждое так сказать слово: где служебные слова hiasm, где стандартные pascal, а где KOL
Вопрос - получаемый код hiasm'a это delphi(простите мое невежество это всетаки язык или среда разработки?) или object pascal?
карма: 0

0
Ответов: 9906
Рейтинг: 351
#21: 2007-03-13 09:45:08 ЛС | профиль | цитата
1) http://kolmck.net/docs/KOLBook.rar
Но, по словам Кладова - лучшая справка, это KOL.pas

2)
procedure THIConvertor._work_doConvert13(var _Data:TData; Index:word);//RealToDate
var Result:String;
S:Real;
begin
S := ReadReal(_Data,_data_Data,0); //ReadReal - определена в HiAsm: share.pas
Result := DateTime2StrShort(S); //DateTime2StrShort - определена KOL
Day_of_Week := DayOfWeek(S); //DayOfWeek - определена KOL
_hi_OnEvent(_event_onResult,Result); //_hi_OnEvent - определена в HiAsm: share.pas
//Хотя правильней было бы так:
// _hi_CreateEvent(_Data,@_event_onResult,Result);
end;

3) Среда. И компилятор без IDE (dcc32) тоже надо полагать - Delphi. Коды HiAsm и на FPC работают. По большому счету. Который расшифровывается как Free Pascal Compiler
карма: 9

0
Ответов: 105
Рейтинг: 2
#22: 2007-03-13 10:00:04 ЛС | профиль | цитата
Понятно, только последний вариант не работает если ему подсунуть только дату без времени.
карма: 0

0
Ответов: 8926
Рейтинг: 823
#23: 2007-03-13 10:39:27 ЛС | профиль | цитата
GRIMAN,
подсунуть только дату без времени
- работает; обратите внимание на разделители даты: должны быть точки

[size=-2]------ Добавлено в 10:39
А под FPC не работает, почему бы это?
карма: 19

0
Ответов: 2125
Рейтинг: 159
#24: 2007-03-13 11:20:21 ЛС | профиль | цитата
Galkov писал(а):
НО Real - число в днях от Р.Х.
Народ говорит, что где-то еще этот формат любят...


Знаю я одно место, где в днях любят, но не от Р.Х., а от 30.12.1899, причём конкретно этот день считается просто временем без даты, т.е. интервал 0 ... 1.0 это время без даты, его удобно складывать с самой датой без времени. Соответственно 01.01.1900 = 2.0

Dilma писал(а):
для получения следующей отметки времени, отстоящей скажем на h часов от текущей имеем:
next_time = cur_time + h*60*60

Чем не нравится формула next_time = cur_time + h/24.0?

Dilma писал(а):
обратный парсинг без указания пользователем маски просто не возможен

Без указания маски используется маска, установленная в системных настройках.
карма: 1

0
Ответов: 9906
Рейтинг: 351
#25: 2007-03-13 19:30:19 ЛС | профиль | цитата
tsdima писал(а):
Без указания маски используется маска

карма: 9

0
Ответов: 2125
Рейтинг: 159
#26: 2007-03-13 19:37:43 ЛС | профиль | цитата
tsdima писал(а):
без указания пользователем маски

карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#27: 2007-03-13 21:32:22 ЛС | профиль | цитата
Galkov писал(а):
Абсолютно все понятно - временной интервал в днях.
Расстояния меряют в километрах, ярдах, и т.п.
Ну и время так же: в секундах, в сутках, и т.п.

Точно так же все: прибавишь 1/24-ю суток - значит добавил час.


Galkov, честное слово смахивает на издевательство Я о чем говорю? О возможно разобраться в формате? О том, что в чем измеряется? Я начал с того, что предложил выбрать наиболее простой, понятный и удобочитаемый формат без дополнительных конвертаций

По-вашему получается, что запись 0,0416( 1/24 то бишь один час в системе real) это гораздо более удобное и самое главное Абсолютно понятное представление времени, нежели 3600...

Galkov писал(а):
Real - еще без потерь, а integer - уже потери (доли секунды).

Я предпологал, что речь в топике идет о времени, представимом для пользователя. Это значит, что мы говори м о:
- датах создания, модификации и прочего для файлов
- системное время
- время возникновения тех или иных событий
- длительность медиа файлов
- и прочее в таком же духе

Все эти времена должны измеряться с точностью до долей секунд
А есть уверенность, что ОС Windows вернет скажем время создания файла с такой точностью

Может я просто не понял постановки задачи... Но еще раз повторюсь - лично я могу привести примеры(и не один), когда представление в виде целого числа удобно и прозрачно. Можно ли привести примеры для real?
карма: 27
0
Ответов: 9906
Рейтинг: 351
#28: 2007-03-13 22:20:03 ЛС | профиль | цитата
Dilma писал(а):
Все эти времена должны измеряться с точностью до долей секунд

Уточню: я НЕ ИМЕЮ ПРАВА решать с какой точностью захочет их измерять наш пользователь - программист на HiAsm

Вот решили мы (хотя не совсем мы, конечно), что размер файла - это integer. И хоть я и считаю, что файлы в 10Гиг - это бред сивой кобылы, но это решение все равно не правильное.
И именно по вышеуказанной причине.

Dilma писал(а):
Я начал с того, что предложил выбрать наиболее простой, понятный и удобочитаемый формат без дополнительных конвертаций

Наиболее простой и удобочитаемый формат, это текстовая запись числовых констант по выбору пользователя.
Например:
2*60+53 - это более понятно чем 173 секунды
3+2/24 - это более понятно чем 3.083 суток
Да и hex-записи в других случаях могут понятней оказаться.
И я сторонник такой понятности.
Чем это отличается от предыдущего: в такой понятности нет потерь.
Если они будут - и я буду сразу против.

Вот сегодня CodeGen не предоставляет пользователю использовать такую строку как константу: "ABCXYZ"
А среда - запросто
Так это не правильно. И обсуждать: "а может такого и не нужно..." - бессмысленно.
Ровно по той же самой причине - не наше это дело.
Просто сделаю.
По-позже как-нибудь.

[size=-2]------ Добавлено в 22:20
Dilma, зачем обратные косые "съедаешь"
карма: 9

0
Администрация
Ответов: 15295
Рейтинг: 1519
#29: 2007-03-14 00:50:59 ЛС | профиль | цитата
Galkov писал(а):
я НЕ ИМЕЮ ПРАВА решать с какой точностью захочет их измерять наш пользователь


вопрос остался без ответа:

Dilma писал(а):
А есть уверенность, что ОС Windows вернет скажем время создания файла с такой точностью?


Galkov писал(а):
И хоть я и считаю, что файлы в 10Гиг - это бред сивой кобылы, но это решение все равно не правильное.

файлы большие 4гб это не бред - образ двустороннего DVD диска. Однако мы не о точных велечинах говорим, а о принятие некоторого формата. А именно секунды и доли секунды. Почему секунды? Я сказал уже несколько раз. Почему доли секунды? Нормального ответа не увидел, кроме проблемы потери точности. Однако опять таки же не увидел аргументов в пользу долей секунд против скажем миллионных долей секунд. Проц между прочим легко позволяет такие интервалы мерить.

Galkov писал(а):
Например:
2*60+53 - это более понятно чем 173 секунды
3+2/24 - это более понятно чем 3.083 суток
Да и hex-записи в других случаях могут понятней оказаться.
И я сторонник такой понятности.
Чем это отличается от предыдущего: в такой понятности нет потерь.
Если они будут - и я буду сразу против.

не вижу, к чему и зачем этот пример приведен. Я с ним полностью согласен. Однако мы сравниваем запись времени в виде числа секунд(integer) и долей секунд(real), а не их возможные представления.
карма: 27
0
Ответов: 2058
Рейтинг: 28
#30: 2007-03-14 01:48:48 ЛС | профиль | цитата
К стате Галков на моём диске сейчас самый большой файл это 28 ГБ. Но и это даже, при моей работе, считаеться маленьким файлом.
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)