Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
3409 / 1596 / 236
Регистрация: 26.02.2009
Сообщений: 7,850
Записей в блоге: 5
1

Аналог структуры TTimeZoneInformation для Linux

06.10.2021, 12:41. Показов 1599. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени!

В проекте использую NativeXML
Там исползуют вендовые ф-ии GetTimeZoneInformation и структура TTimeZoneInformation
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function GetTimeZoneBias: Integer;
// uses windows unit, func GetTimeZoneInformation
// contributor: Stefan Glienke
var
  TimeZoneInfo: TTimeZoneInformation;
begin
  case GetTimeZoneInformation(TimeZoneInfo) of
    TIME_ZONE_ID_UNKNOWN: Result := TimeZoneInfo.Bias;
    TIME_ZONE_ID_STANDARD: Result := TimeZoneInfo.Bias + TimeZoneInfo.StandardBias;
    TIME_ZONE_ID_DAYLIGHT: Result := TimeZoneInfo.Bias + TimeZoneInfo.DaylightBias;
  else
    Result := 0;
  end;
end;
Есть ли аналоги под Linux Debian?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2021, 12:41
Ответы с готовыми решениями:

Аналог GetModuleFileName для Linux
Приветствую всех. Можете, пожалуйста, дать аналог функции GetModuleFileName для линукса? P.S....

Аналог os.startfile для linux
Есть GUI (PyQt4) приложение, генерирующее и автоматически открывающее .xlsx документы. Документы...

Аналог grep из Linux для Windows
Кто-нибудь пробовал уже написать аналог линуксовского grep? может кто-то уже задавался этим...

Аналог cputrack (Solaris) для Linux
Подскажите, плиз, аналог утилитки cputrack в линуксе - в рамках замеров перфоманса нужны...

Аналог nemprogressbegin из nnotesws.dll для linux
Доброго времени, уважаемые. Из windows библиотеки nnotesws.dll можно использовать некоторые...

9
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
06.10.2021, 14:02 2
Лучший ответ Сообщение было отмечено snake32 как решение

Решение

GetLocalTimeOffset у меня выдает точно такой же результат, как и вышеприведенная функция...
1
3409 / 1596 / 236
Регистрация: 26.02.2009
Сообщений: 7,850
Записей в блоге: 5
06.10.2021, 14:25  [ТС] 3
Спасибо, сделал так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function GetTimeZoneBias: Integer;
{IFDEF MSWINDOWS}
// uses windows unit, func GetTimeZoneInformation
// contributor: Stefan Glienke
var
  TimeZoneInfo: TTimeZoneInformation;
begin
  case GetTimeZoneInformation(TimeZoneInfo) of
    TIME_ZONE_ID_UNKNOWN: Result := TimeZoneInfo.Bias;
    TIME_ZONE_ID_STANDARD: Result := TimeZoneInfo.Bias + TimeZoneInfo.StandardBias;
    TIME_ZONE_ID_DAYLIGHT: Result := TimeZoneInfo.Bias + TimeZoneInfo.DaylightBias;
  else
    Result := 0;
  end;
end;
{$ELSE}
begin
  Result := GetLocalTimeOffset;
end;
{$ENDIF}
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
06.10.2021, 15:12 4
Зачем? GetLocalTimeOffset - кроссплатформенная, одинаково работает как под Windows, так и под Linux.
0
3409 / 1596 / 236
Регистрация: 26.02.2009
Сообщений: 7,850
Записей в блоге: 5
06.10.2021, 16:10  [ТС] 5
Цитата Сообщение от volvo Посмотреть сообщение
Зачем? GetLocalTimeOffset - кроссплатформенная, одинаково работает как под Windows, так и под Linux.
Чтобы под Delphi компилировалось тоже
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
06.10.2021, 16:20 6
Самое плохое, что можно придумать - это написать программу, которая будет под одной ОС компилироваться одним компилятором, а под другой - другим. Не нужно этого делать. Компилируй Лазарусом под обе ОСи. Ибо очень скоро полезут другие несовместимости, и исходник станет просто в 2 раза больше из-за этих IFDEF/ELSE. Это никому не нужно.
0
3409 / 1596 / 236
Регистрация: 26.02.2009
Сообщений: 7,850
Записей в блоге: 5
07.10.2021, 12:39  [ТС] 7
Цитата Сообщение от volvo Посмотреть сообщение
исходник станет просто в 2 раза больше из-за этих IFDEF/ELSE
Мне кажется, без IFDEF компилировать под разные оси всё рано не получится. И да, мне тоже это не нравится, но сейчас я просто зондирую сложность перехода на Linux на относительно маленьком проекте. В реальном проекте 1 млн строк и скорее всего я уже не буду выпендриваться.

Казалось было - один язык программирования( Delphi vs Lazarus ), а столько различий. В каждом модуле надо что-то пилить
Особенно бесит const vs constref в методах

Delphi
1
2
3
sel.OnNotify := OnChangeSelected;  
 
procedure OnChangeSelected(Sender: TObject; {$IFDEF FPC}constref{$ELSE}const{$ENDIF} Item:Pointer; Action: TCollectionNotification);
Может можно сделать в Lazarus'e чтобы игнорировал? {$MODE Delphi} не помогает

Добавлено через 21 минуту
И ещё. Сравнение структур тоже Lazarus не умеет? Как правильно написать здесь? я конечно могу через много and каждый эл-т структуры. Может есть какие-нибудь helpers в Lazarus
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function TBaseNode.FindByGUID( const guid:TGUID ):TBaseNode;
  var p:TBaseNode;
       i:integer;
begin
  p := Parent;
  while p <> nil do
  begin
    for i:=0 to p.Count-1 do
      if p.Items[i].GUID = guid then // Error: Operator is not overloaded: "TGuid" = "TGuid"
        exit( p.Items[i] );
    p := p.Parent;
  end;
  Result := nil;
end;
0
438 / 367 / 132
Регистрация: 09.09.2011
Сообщений: 1,334
07.10.2021, 23:02 8
constref это прямо какое-то очень узкое применение, судя по вики. почему вам в OnChangeSelected не хватит обычного const?

lazarus это не язык, а конкретно IDE и набор компонентов LCL.

язык в данном случае - [object] free pascal

delphi с какой-то версии IDE delphi действительно официально название языка. до этого object pascal.

Добавлено через 6 минут
Цитата Сообщение от snake32 Посмотреть сообщение
if p.Items[i].GUID = guid then // Error: Operator is not overloaded: "TGuid" = "TGuid"
не знаю на счет "сравнения структур". Очевидно в rtl пока не добавили оператор сравнения для TGUID. Можешь сам добавить, язык позволяет, как с недавнего времени и delphi. Тем более все что нужно уже есть: function IsEqualGUID( const guid1: TGUID; const guid2: TGUID):Boolean;
1
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,250
08.10.2021, 02:33 9
Цитата Сообщение от Kitayets Посмотреть сообщение
delphi с какой-то версии IDE delphi действительно официально название языка
Марко Канту с этим не соглашается. И пишет книги/учебники по ObjectPascal включая все последние версии т.н. Дельфи.
0
3409 / 1596 / 236
Регистрация: 26.02.2009
Сообщений: 7,850
Записей в блоге: 5
08.10.2021, 22:05  [ТС] 10
Цитата Сообщение от Kitayets Посмотреть сообщение
почему вам в OnChangeSelected не хватит обычного const?
Мне то хватало const в Delphi. Просто в Lazarus стандартные TCollectionNotifyEvent почему-то определены как constref
Извините что не уточнил, я брал стандартный TCollectionNotifyEvent
Delphi
1
2
3
4
5
6
// в Delphi в модуле System.Generics.Collections
TCollectionNotifyEvent<T> = procedure(Sender: TObject; const Item: T;
    Action: TCollectionNotification) of object;
// в Lazarus в модуле Generics.Collections
TCollectionNotifyEvent<T> = procedure(ASender: TObject; constref AItem: T; AAction: TCollectionNotification)
    of object;
0
08.10.2021, 22:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.10.2021, 22:05
Помогаю со студенческими работами здесь

Аналог программы RusTV Player для linux
Подскажите пожалуйста аналог программы RusTV Player для linux. с таким же принципом работы...

Аналог IndexOf для структуры struct
Привет всем. Подскажите кто в курсе. Вопросик вот какой. Допустим у меня есть список ...

Аналог файлового менеджера Directory Opus для Linux
Ищу аналог файлового менеджера Directory Opus для Linux Ubuntu 13.10 с возможностью использования...

Нужен полный аналог программы MyProxy из мира Windows для Linux
Форумчане, скажите, пожалуйста, знаете ли вы существует ли прокси сервер для Linux с возможностью...

Нужна программа для регулировки яркости дисплея (аналог апплета gnome в linux)
Приветствую ! В линуксовых окружениях рабочего стола есть апплет (в gnome например) регулировки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru