Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > ПРоверить настройки на машине по числам и датам


Автор: nicka 24.6.2004, 14:36
Работаю в Дельфи7

ПРоблема заключаеться при работе с числами и датами в приложениях по базам данных.
В зависимости от установок(Regional Settings - Numbers, Date) на машине клиента программа может работать или нет.

Как можно в коде посмотреть настройки на машине ....

Только если можно подробнее, я плохо в этом разбираюсь

Автор: Петрович 24.6.2004, 14:58
Хм. Что-то зачастили smile.gif
Смотри http://forum.vingrad.ru/index.php?showtopic=24847&unread=1&hl=decimalseparator. Причем, сразу отмечу что упоминаемые переменные можно еще и самому что-нибудь записать smile.gif

Автор: nicka 24.6.2004, 16:51
Петрович

совсем другая тема

Автор: stab 24.6.2004, 17:04
Есть такая функция GetLocaleInfo.
Пример использования: http://forum.vingrad.ru/index.php?showtopic=24842
Описание функции: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/nls_34rz.asp , http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/nls_8rse.asp

С помощью этой функции можно получить любую информацию о настройках интернализации.

Автор: Гость_nicka 26.6.2004, 08:22
У меня на форме стоит обьект TDateTimePicker1, когда из базы я передаю ему значение типа дата
выдаеться ошибка '10-Jun-04' is not valid Date,
я пытаюсь использовать процедуру GetLocaleFormatSettings для получения значений местных
установок на машине, но не все равно выдаеться та же ошибка....
Что неправильно в данном коде ?
Не совсем понимаю правда для чего в процедуре GetLocaleFormatSettings первый параметр,
я поставила 0 , потому что не поняла что туда сажать....


var v_formatset:TFormatSettings;

GetLocaleFormatSettings(0,v_formatset);
TDateTimePicker1.date :=StrToDate(TAdoQuery1.Fields.fieldbyname('ord_date').asstring,v_formatset);

Автор: Петрович 26.6.2004, 09:38
Цитата
совсем другая тема

Прошу прощения, дал неправильную ссылку. Правильная http://forum.vingrad.ru/index.php?showtopic=24842&view=findpost&p=173424
В качестве компенсации smile.gif раскажу здесь поподробнее.
В модуле System есть определение нескольких глобальных переменных:
Код
var CurrencyString: string;
var CurrencyFormat: Byte;
var NegCurrFormat: Byte;
var ThousandSeparator: Char;
var DecimalSeparator: Char;
var CurrencyDecimals: Byte;
var DateSeparator: Char;
var ShortDateFormat: string;
var LongDateFormat: string;
var TimeSeparator: Char;
var TimeAMString: string;
var TimePMString: string;
var ShortTimeFormat: string;

var LongTimeFormat: string;
var ShortMonthNames: array[1..12] of string;
var LongMonthNames: array[1..12] of string;
var ShortDayNames: array[1..7] of string;
var LongDayNames: array[1..7] of string;

var SysLocale: TSysLocale;
var EraNames: array[1..7] of string;
var EraYearOffsets: array[1..7] of Integer;
var TwoDigitYearCenturyWindow: Word = 50;

var TListSeparator: Char;

Все стандартные Delphi-функции преобразования данных пользуются значениями этих переменных.
Эти переменные в в момент старта программы автоматически заполняются региональными настройками системы. Более того, в процессе работы программы, значения в этих переменных могут измениться (см.ссылку выше).
Вы можете сами присваивать этим переменным те или иные значения, в зависимости какой формат используете Вы. Но, при этом, дабы работу Вашей программы не нарушил пользователь сменивший региональные настройки уже после того как Ваша программа была запущена, Вам надо выполнить действия приведенные описанные мною все в той-же, указанной выше теме smile.gif.
Например, если Вы, в своих данных, имеете даты в виде ''10-Jun-04', то Вы можете сделать следующие присваивания:
Код
DateSeparator := '-';
ShortDateFormat := 'dd/mmm/yy';


Тагда, Ваш TDateTimePicker1 будет работать нормально.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)