Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Delphi |
![]() ![]() |
HOME_X Member Откуда: Сообщений: 2648 |
Доброго дня господа ! Подскажите как ведет себе FormatSettings при работе с DLL Т.е. в основной форме делаю присвоение FormatSettings.ShortDateFormat := 'yyyy-mm-dd'; FormatSettings.LongTimeFormat := 'hh:nn:ss'; FormatSettings....................... FormatSettings....................... Но в DLL в котором идет выполнение SQL запросов эти стандарты не отрабатываю В чем может быть причина и как ее исправить ! Заранее благодарен ! |
27 мар 21, 00:41 [22300636] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
У них разные глобальные переменные. Не присваивай, используй системные настройки. Posted via ActualForum NNTP Server 1.5 |
||
27 мар 21, 01:22 [22300646] Ответить | Цитировать Сообщить модератору |
HOME_X Member Откуда: Сообщений: 2648 |
Cистемные настройки Не имею возможности - ТОНКИЙ клиент. А как присвоить FormatSettings глобальной переменной DLL Прошу привести программный код Спасибо |
||||||
27 мар 21, 01:35 [22300650] Ответить | Цитировать Сообщить модератору |
Dmitry Arefiev Member Откуда: Сообщений: 9961 |
Пакеты ? |
27 мар 21, 01:44 [22300651] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Никак. Posted via ActualForum NNTP Server 1.5 |
||
27 мар 21, 02:07 [22300655] Ответить | Цитировать Сообщить модератору |
x1ca4064 Member Откуда: Сообщений: 1250 |
Если это Ваша длл, экспортируйте из нее какую-нибудь функцию, InitSettings, например, и вызывайте ее в процессе инициализации приложения/длл. В самой функции уже будет доступ к FormatSettings длл, там уже и прописывайте необходимое. Сообщение было отредактировано: 27 мар 21, 03:02 |
||||
27 мар 21, 03:07 [22300659] Ответить | Цитировать Сообщить модератору |
YuRock Member Откуда: Донецк Сообщений: 4539 |
Сообщение было отредактировано: 27 мар 21, 03:33 |
||||
27 мар 21, 03:40 [22300660] Ответить | Цитировать Сообщить модератору |
softwarer Member Откуда: 127.0.0.1 Сообщений: 65410 Блог |
В Delphi есть два пути работать с DLL. Один - поставить настройку Build with runtime packages, после чего всё отлично работает точно так же, как в одном EXE, вообще без какой-либо специфики. Второй - не ставить эту настройку и всю жизнь ходить по граблям. У дельфи-программистов очень скучная жизнь, поэтому 99% выбирают второй путь и таким образом делают её куда интереснее и непредсказуемее. |
||||
27 мар 21, 14:42 [22300772] Ответить | Цитировать Сообщить модератору |
asutp2 Member Откуда: Тюмень Сообщений: 834 |
|
||||||||
27 мар 21, 20:20 [22300884] Ответить | Цитировать Сообщить модератору |
bk0010 Member Откуда: Сообщений: 5058 |
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; |
||||
27 мар 21, 20:46 [22300899] Ответить | Цитировать Сообщить модератору |
softwarer Member Откуда: 127.0.0.1 Сообщений: 65410 Блог |
Спасибо. Время от времени я начинаю думать, что уже познал все возможные глубины человеческой глупости, и тут очень кстати, когда кто-нибудь брякает такое, что понимаешь - до дна ещё не один Титаник поместится. |
||||
27 мар 21, 21:18 [22300908] Ответить | Цитировать Сообщить модератору |
asutp2 Member Откуда: Тюмень Сообщений: 834 |
|
||||||||
27 мар 21, 21:35 [22300912] Ответить | Цитировать Сообщить модератору |
HOME_X Member Откуда: Сообщений: 2648 |
Эта DLL - созданная мною на DELPHI10 "экспортируйте из нее какую-нибудь функцию" - не совсем Вас понял Не могли бы привести пример кода Спасибо |
||||
27 мар 21, 23:54 [22300949] Ответить | Цитировать Сообщить модератору |
HOME_X Member Откуда: Сообщений: 2648 |
Например - вот функцию, которую я вызываю 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; [b]RegSetup : PAnsiChar[/b] ): 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; |
||||||||
28 мар 21, 00:06 [22300954] Ответить | Цитировать Сообщить модератору |
x1ca4064 Member Откуда: Сообщений: 1250 |
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 или в секции инициализации нужного модуля в основной программе. |
||||
28 мар 21, 01:52 [22300969] Ответить | Цитировать Сообщить модератору |
x1ca4064 Member Откуда: Сообщений: 1250 |
Sorry, не string конечно, а PChar... |
28 мар 21, 02:38 [22300975] Ответить | Цитировать Сообщить модератору |
Fr0sT-Brutal Member Откуда: Сообщений: 682 |
О, коллега тоже такой вот фигней страдает. Сколько он экзотических траблов получил на ровном месте - перечислению не поддается. Причем самое забавное, что особых требований к такому изврату нет, разве что размеры DLL. |
||||
29 мар 21, 11:39 [22301338] Ответить | Цитировать Сообщить модератору |
kdv Member Откуда: iBase.ru Сообщений: 29662 |
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. |
29 мар 21, 15:34 [22301488] Ответить | Цитировать Сообщить модератору |
softwarer Member Откуда: 127.0.0.1 Сообщений: 65410 Блог |
В смысле, ему несолидны dll по 30Кб, нужны по 30Мб? |
||||
29 мар 21, 15:40 [22301497] Ответить | Цитировать Сообщить модератору |
HOME_X Member Откуда: Сообщений: 2648 |
Принято - спасибо - причину и как решить уяснил ! |
||||
29 мар 21, 17:18 [22301564] Ответить | Цитировать Сообщить модератору |
HOME_X Member Откуда: Сообщений: 2648 |
Принято - спасибо за упреждение ! Учту в дальнейшем |
||||
29 мар 21, 17:19 [22301566] Ответить | Цитировать Сообщить модератору |
didgik Member Откуда: Сообщений: 968 |
А я так пробовал. Ставил настройку. Прога не запускается и что-то там не может найти. Печаль ( |
||||||||
29 мар 21, 23:20 [22301741] Ответить | Цитировать Сообщить модератору |
softwarer Member Откуда: 127.0.0.1 Сообщений: 65410 Блог |
https://www.meme-arsenal.com/create/meme/3623786 |
||||
29 мар 21, 23:39 [22301749] Ответить | Цитировать Сообщить модератору |
Fr0sT-Brutal Member Откуда: Сообщений: 682 |
Наоборот, место экономит. Хотя там 30 мб и не пахнет, это ж не хромиум и не qt |
||||
30 мар 21, 10:45 [22301873] Ответить | Цитировать Сообщить модератору |
Все форумы / Delphi | ![]() |