У меня проблема - не могу перевести юникс-время в привычный формат времени. Смотрел в гугле, пробовал делать что он там выдал - не выходит, выдает ошибки либо о несоответствии типов либо еще различные. Кто может дать нормальную процедуру перевода юникс-времени в привычный формат? и еще проблема - в StringGrid задан ScroolBar (который встроен в компонент), но он не прокручивается. менять размеры самого StringGrid нецелесообразно, потому что количество строк в таблице не фиксировано, и может достигать как нескольких сотен, так и 1-2 строки.
1) В гугле куча рабочих примеров 2) В гугле куча описаний чем тот формат отличается от другого, и не составит труда написать свою функцию Вот 100% после этих слов ясно что ты даже не пробовал. т.к. и Unix-тип и тот, который применяется в делфи это LongInt так что никакой ошибки о несоответствии типов быть не может, в крайнем случае просто отображается неверное время P.S. сел писать прогу под Вконтакт, будь добр потрать пол-часика времени на эту мелочь
она не для контакта. я с социалками вообще не связываюсь. то что брал с гугла - выдавало что типа несоответствие типа - Cardinal (вроде так пишется) со String (в примере использовался String.
Не, ну я не спорю, но допустим 1) ты почитал инфу 2) ты здравомыслящий человек 3) ты знаешь что оба типа - обычное число тогда какого ты берешь пример с Cardinal и string?
А разве в обычном формате даты не используются разделители вроде точек и прочего? то есть как я понял поискать другие примеры и попробовать реализовать их? щас попробую, но тема пусть пока будет открытой, на всякий случай.
так подожди, ты число из строки пытаешься перевести? о.О тогда используй StrToDateTime, переводи свою строку в TDateTime (он же LongInt), а его уже переводи в Unix-формат
Code: param:= UnixTimeToStr(copy(s, 1, k-1), -60); вот код. выдает ошибку [Error] Unit5.pas(124): Incompatible types: 'Cardinal' and 'String'
Я не знаю что такое UnixTimeToStr, но я думаю. что там, куда ты пытаешься засунуть строку надо засовывать число. Code: uses DateUtils; [B]function[/B] UnixToDateTime(const AValue: Int64): TDateTime; [B]Description[/B] Call UnixToDateTime to convert the Unix/Linux encoding of a date and time value into the corresponding TDateTime. Unix date-and-time values are encoded as the number of seconds since midnight at the start of January 1, 1970. Переводит формат из Unix в тот, который делфи использует.
Вторая ссылка в яндексе Code: const UnixDateDelta = 25569; { 1970-01-01T00:00:00,0 } SecPerMin = 60; SecPerHour = SecPerMin * 60; SecPerDay = SecPerHour * 24; MinDayFraction = 1 / (24 * 60); {Convert Unix time to TDatetime} function UnixTimeToDateTime(AUnixTime: DWord; ABias: Integer): TDateTime; begin Result := UnixDateDelta + (AUnixTime div SecPerDay) { Days } + ((AUnixTime mod SecPerDay) / SecPerDay) { Seconds } - ABias * MinDayFraction { Bias to UTC in minutes }; end; {Convert Unix time to String with locale settings} function UnixTimeToStr(AUnixTime: DWord; ABias: Integer): string; begin Result := FormatDateTime('ddddd hh:nn:ss', UnixTimeToDateTime(AUnixTime, ABias)); end; {Convert TDateTime to Unix time} function DateTimeToUnixTime(ADateTime: TDateTime; ABias: Integer): DWord; begin Result := Trunc((ADateTime - UnixDateDelta) * SecPerDay) + ABias * SecPerMin; end; procedure TForm1.Button4Click(Sender: TObject); begin Label1.Caption := UnixTimeToStr(977347109, -60); end;
смотрел. но не очень разобрался что к чему. но сейчас нашел еще один код интересный, пробую его делать. если все получится, то напишу здесь
что-то мне подсказывает, что правильно использовать ее нужно так: Code: param:= UnixTimeToStr(strtoint(copy(s, 1, k-1)), -60);
все нормально.перевод формата даты в нормлаьный работает хорошо. осталась проблемка одна - непрокручивается таблица, то есть ScroolBar ее не прокручивает. все. нашел где была ошибка. бегунок не двигался потому что я ошибочно присвоилсвойству enabled значение false (ранее требовалось, но теперь мешает,да и уже не требуется). ответт получен, тему можно закрыть