Консультация № 140866
28.07.2008, 10:04
0.00 руб.
0 4 2
Уважаемые эксперты, помогите пожалуйста!!!Возникла такая проблема:база interbase, когда вношу в поле price цену ,то вместо запятой ставлю точку (иначе выдается ошибка), цена добавляется, но точка в базе меняется на запятую. Когда считываю значение цены из базы в Edit, то вместо точки стоит запятая, а при внесении изменений в базу нужно, чтобы стояла точка.Подскажите, как сделать, чтобы запятая в Edit менялась на точку или как сделать в базе вместо запятой точку.Заранее спасибо.

Обсуждение

Неизвестный
28.07.2008, 10:22
общий
это ответ
Здравствуйте, OlkaOlenka!
Есть разные способы это сделать. Можете в OnKeyPress вашего Edit'а смотреть на нажатую клавишу и вводить другую, если требуется. Однако проще перед внесением в базу просто поменять в строке все запятые на точки. В приложении функция, заменяющая все запятые на точки в строке.

Кстати, существует глобальная переменная DecimalSeparator, значение которой определяет как раз этот самый разделитель (точка, запятая или еще чего:))
Удачи вам, Ольга!

Приложение:
Function TochkiForever(S: String): String;
Var
i: Byte;
Begin
i:=1;
While i<=Length(S) do
begin
If S[i]=',' then S[i]:='.';
inc(i);
end;
Result:=S;
End;
Неизвестный
28.07.2008, 11:30
общий
Большое спасибо, Troyan!
Очень помогло!
Неизвестный
29.07.2008, 13:37
общий
это ответ
Здравствуйте, OlkaOlenka!
Отвечу с запозданием, но все же.
Есть более гибкий, и более правильный (на мой взгдяд) способ.
В Delphi есть специальная переменная DecimalSeparator. Установив ее в нужный вам разделитель, вам не нужно будет писать обработчик нажатия клавиши на каждый из эдитов.
Рекомендую устанавливать эту переменную в модуле проекта (см. приложение). Не забудьте добавить в uses модуль SysUtils.

С уважением, Руслан.

Приложение:
program Project1;

uses
Forms, SysUtils,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
DecimalSeparator := '.';
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Неизвестный
29.07.2008, 13:51
общий
Спасибо, Примак Руслан Николаевич!
Форма ответа