Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FormatSettings for DLL / 24 сообщений из 24, страница 1 из 1
27.03.2021, 00:41
    #40057310
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
Доброго дня господа !

Подскажите как ведет себе FormatSettings при работе с DLL

Т.е. в основной форме делаю присвоение
FormatSettings.ShortDateFormat := 'yyyy-mm-dd';
FormatSettings.LongTimeFormat := 'hh:nn:ss';
FormatSettings.......................
FormatSettings.......................

Но в DLL в котором идет выполнение SQL запросов эти стандарты
не отрабатываю

В чем может быть причина и как ее исправить !

Заранее благодарен !
...
Рейтинг: 0 / 0
27.03.2021, 01:22
    #40057315
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
HOME_XВ чем может быть причина и как ее исправить !

У них разные глобальные переменные. Не присваивай, используй системные настройки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.03.2021, 01:35
    #40057318
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
Dimitry Sibiryakov

HOME_XВ чем может быть причина и как ее исправить !

У них разные глобальные переменные. Не присваивай, используй системные настройки.


Cистемные настройки
Не имею возможности - ТОНКИЙ клиент.

А как присвоить FormatSettings глобальной переменной DLL
Прошу привести программный код

Спасибо
...
Рейтинг: 0 / 0
27.03.2021, 01:44
    #40057319
Dmitry Arefiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
Пакеты ?
...
Рейтинг: 0 / 0
27.03.2021, 02:07
    #40057322
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
HOME_XА как присвоить FormatSettings глобальной переменной DLL

Никак.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.03.2021, 03:07
    #40057324
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
HOME_X

А как присвоить FormatSettings глобальной переменной DLL
Прошу привести программный код

Спасибо

Если это Ваша длл, экспортируйте из нее какую-нибудь функцию, InitSettings, например, и вызывайте ее в процессе инициализации приложения/длл. В самой функции уже будет доступ к FormatSettings длл, там уже и прописывайте необходимое.
...
Рейтинг: 0 / 0
27.03.2021, 03:40
    #40057325
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
HOME_X
Но в DLL в котором идет выполнение SQL запросов эти стандарты
не отрабатываю
Если не генерировать SQL, для которых важны "эти стандарты", то и проблем не будет.
...
Рейтинг: 0 / 0
27.03.2021, 14:42
    #40057384
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
HOME_X
В чем может быть причина и как ее исправить !

В Delphi есть два пути работать с DLL. Один - поставить настройку Build with runtime packages, после чего всё отлично работает точно так же, как в одном EXE, вообще без какой-либо специфики. Второй - не ставить эту настройку и всю жизнь ходить по граблям. У дельфи-программистов очень скучная жизнь, поэтому 99% выбирают второй путь и таким образом делают её куда интереснее и непредсказуемее.
...
Рейтинг: 0 / 0
27.03.2021, 20:20
    #40057433
asutp2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
softwarer
HOME_X
В чем может быть причина и как ее исправить !

В Delphi есть два пути работать с DLL. Один - поставить настройку Build with runtime packages, после чего всё отлично работает точно так же, как в одном EXE, вообще без какой-либо специфики. Второй - не ставить эту настройку и всю жизнь ходить по граблям. У дельфи-программистов очень скучная жизнь, поэтому 99% выбирают второй путь и таким образом делают её куда интереснее и непредсказуемее.
А первые в итоге не могут использовать новые версии делфи, ибо runtime packages из другой версии делфи несовместимы друг с другом, и в итоге программисты типа softwarer до сих пор сидят на d5))))))
...
Рейтинг: 0 / 0
27.03.2021, 20:46
    #40057440
bk0010
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
HOME_X
Но в DLL в котором идет выполнение SQL запросов эти стандарты
Не пихайте данные в запросы строками, используйте параметры.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
q.text:='update tbl set t=:t where id=:id';
q.ParamByName('t').asDateTime:=t;
q.ParamByName('id').asInteger:=id;
try
   q.ExecSQL;
except
 ...
end;
...
Рейтинг: 0 / 0
27.03.2021, 21:18
    #40057448
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
asutp2
А первые в итоге не могут использовать новые версии делфи

Спасибо. Время от времени я начинаю думать, что уже познал все возможные глубины человеческой глупости, и тут очень кстати, когда кто-нибудь брякает такое, что понимаешь - до дна ещё не один Титаник поместится.
...
Рейтинг: 0 / 0
27.03.2021, 21:35
    #40057451
asutp2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
softwarer
asutp2
А первые в итоге не могут использовать новые версии делфи

Спасибо. Время от времени я начинаю думать, что уже познал все возможные глубины человеческой глупости, и тут очень кстати, когда кто-нибудь брякает такое, что понимаешь - до дна ещё не один Титаник поместится.
Как ты самокритичен))
...
Рейтинг: 0 / 0
27.03.2021, 23:54
    #40057480
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
x1ca4064

Если это Ваша длл, экспортируйте из нее какую-нибудь функцию, InitSettings, например, и вызывайте ее в процессе инициализации приложения/длл. В самой функции уже будет доступ к FormatSettings длл, там уже и прописывайте необходимое.


Эта DLL - созданная мною на DELPHI10
"экспортируйте из нее какую-нибудь функцию" - не совсем Вас понял
Не могли бы привести пример кода

Спасибо
...
Рейтинг: 0 / 0
28.03.2021, 00:06
    #40057484
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
HOME_X
x1ca4064

Если это Ваша длл, экспортируйте из нее какую-нибудь функцию, InitSettings, например, и вызывайте ее в процессе инициализации приложения/длл. В самой функции уже будет доступ к FormatSettings длл, там уже и прописывайте необходимое.


Эта DLL - созданная мною на DELPHI10
"экспортируйте из нее какую-нибудь функцию" - не совсем Вас понял
Не могли бы привести пример кода

Спасибо



Например - вот функцию, которую я вызываю
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
library Scripts;

uses
  ComServ,
  SysUtils,
  Scripts_TLB in 'Scripts_TLB.pas',
  ComQuery in 'ComQuery.pas' {ComQuery: CoClass},
  AddSpan in 'AddSpan.pas';

exports
  Create_AddSpan,


............................
............................

function Create_AddSpan(aFile: PAnsiChar; aList: PAnsiChar; aKind: OleVariant; aBars: OleVariant; aHandle: OleVariant; var aSql: OleVariant; var aRecordSet: OleVariant;   RegSetup : PAnsiChar ): Integer;
  var
    S: String;
    B: TProgressBar;
    Id: Cardinal;
    H:  THandle;
  begin
     /// Вы предлагаете прямо здесь осуществить  установку  рег. стандартов
     //// передав их в качестве параметра  ?
     
    FormatSettings.DecimalSeparator    :=Copy(RegSetup, 1, 1)[1];
    FormatSettings.ThousandSeparator :=Copy(RegSetup, 2, 1)[1];
    FormatSettings.DateSeparator        :=Copy(RegSetup, 3, 1)[1];
    FormatSettings.ShortDateFormat    :=Copy(RegSetup, 4,10);

    /// Это сработает именно в DLL

    Result:=1;
    if (aBars  <>Null)then B:=TProgressBar(Integer(aBars)) else B:=Nil;
    if (aHandle<>Null)then H:=THandle(Integer(aHandle))    else H:=0;
    A:=TAddSpan.Create(iif(Integer(aKind)=0,'[Path]'+vbLine+String(aList),String(aFile)),B,H,aSql,aRecordSet);

    .............
  end;
...
Рейтинг: 0 / 0
28.03.2021, 01:52
    #40057493
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
HOME_X

Не могли бы привести пример кода

Спасибо


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
library Scripts;

uses
  ComServ,
  SysUtils,
  Scripts_TLB in 'Scripts_TLB.pas',
  ComQuery in 'ComQuery.pas' {ComQuery: CoClass},
  AddSpan in 'AddSpan.pas';

exports
  InitFormatSettings,
  Create_AddSpan,
...
procedure InitFormatSettings(const AShortDateFormat,ALongDateFormat:string;const ADecimalSeparator,AThousandSeparator:char.....);
begin
  FormatSettings.DecimalSeparator:=ADecimalSeparator;
  ....
end;



Далее вызывате InitFormatSettings после LoadLibrary или в секции инициализации нужного модуля в основной программе.
...
Рейтинг: 0 / 0
28.03.2021, 02:38
    #40057497
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
Sorry, не string конечно, а PChar...
...
Рейтинг: 0 / 0
29.03.2021, 11:39
    #40057718
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
softwarer
В Delphi есть два пути работать с DLL. Один - поставить настройку Build with runtime packages, после чего всё отлично работает точно так же, как в одном EXE, вообще без какой-либо специфики. Второй - не ставить эту настройку и всю жизнь ходить по граблям. У дельфи-программистов очень скучная жизнь, поэтому 99% выбирают второй путь и таким образом делают её куда интереснее и непредсказуемее.

О, коллега тоже такой вот фигней страдает. Сколько он экзотических траблов получил на ровном месте - перечислению не поддается. Причем самое забавное, что особых требований к такому изврату нет, разве что размеры DLL.
...
Рейтинг: 0 / 0
29.03.2021, 15:34
    #40057831
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
HOME_X,

а вот это случайно не True? А то вдруг юзер что-то решит поменять, и всё слетит. Ну или "оно само...".
Application.UpdateFormatSettings
Specifies whether format settings are updated automatically when the user alters the system configuration. Use UpdateFormatSettings to control automatic updating of format settings. The default of true is set in the constructor . Using the default format settings is recommended. These settings are initialized to the Windows local.
...
Рейтинг: 0 / 0
29.03.2021, 15:40
    #40057840
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
Fr0sT-Brutal
Причем самое забавное, что особых требований к такому изврату нет, разве что размеры DLL.

В смысле, ему несолидны dll по 30Кб, нужны по 30Мб?
...
Рейтинг: 0 / 0
29.03.2021, 17:18
    #40057892
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
x1ca4064
Sorry, не string конечно, а PChar...


Принято - спасибо - причину и как решить уяснил !
...
Рейтинг: 0 / 0
29.03.2021, 17:19
    #40057893
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
kdv
HOME_X,

а вот это случайно не True? А то вдруг юзер что-то решит поменять, и всё слетит. Ну или "оно само...".
Application.UpdateFormatSettings
Specifies whether format settings are updated automatically when the user alters the system configuration. Use UpdateFormatSettings to control automatic updating of format settings. The default of true is set in the constructor . Using the default format settings is recommended. These settings are initialized to the Windows local.


Принято - спасибо за упреждение !
Учту в дальнейшем
...
Рейтинг: 0 / 0
29.03.2021, 23:20
    #40058019
didgik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
softwarer
HOME_X
В чем может быть причина и как ее исправить !

В Delphi есть два пути работать с DLL. Один - поставить настройку Build with runtime packages, после чего всё отлично работает точно так же, как в одном EXE, вообще без какой-либо специфики. Второй - не ставить эту настройку и всю жизнь ходить по граблям. У дельфи-программистов очень скучная жизнь, поэтому 99% выбирают второй путь и таким образом делают её куда интереснее и непредсказуемее.


А я так пробовал. Ставил настройку. Прога не запускается и что-то там не может найти. Печаль (
...
Рейтинг: 0 / 0
29.03.2021, 23:39
    #40058026
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
didgik
А я так пробовал. Ставил настройку. Прога не запускается и что-то там не может найти. Печаль (

https://www.meme-arsenal.com/create/meme/3623786
...
Рейтинг: 0 / 0
30.03.2021, 10:45
    #40058124
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FormatSettings for DLL
softwarer
В смысле, ему несолидны dll по 30Кб, нужны по 30Мб?

Наоборот, место экономит. Хотя там 30 мб и не пахнет, это ж не хромиум и не qt
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FormatSettings for DLL / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]