![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как из edit вытащить дробное число ?
@gent © (2006-05-03 18:11:00)Помогите PLS вытащить из Edit дробное число. До этого можно было с целой частью и пользовался StrToInt, а сейчас чем ?
Заранее спасибо.
unknown (2006-05-05 02:33:00) [1]
{ Событие OnKeyPress у Edit1 }
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
{ Проверяем - праильные ли символы юзер пытается ввести }
if not (Key in ['0'..'9',DecimalSeparator]) then
{ Если неправильные - не даем вводить }
Key:=#0;
{ Если вводится повторно разделитель дробной части, }
if (Key=DecimalSeparator)and(AnsiPos(DecimalSeparator,Edit1.Text)>0) then
{ то запрещаем его вводить }
Key:=#0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
D:Double;
begin
{ Проверка ввода (мало ли, вдруг юзер copy/paste сделал?) }
if not TryStrToFloat(Edit1.Text,D) then
MessageBox(0, 'Неправильный текст в Edit1.', 'Ашипка', MB_ICONERROR or MB_OK)
else
MessageBox(0, PChar(Format('%n',[D])), ':)', MB_ICONASTERISK or MB_OK);
end;
Галинка (2006-05-05 00:02:00) [2]А ввобще тфкие вещи красивее и безопаснее делать в try ... exception блоке или маскедит использовать. Тогда вопросы типа
> Desdechado © (04.05.06 18:57) [7]
>
> а еще будет фокус при наличии нескольких точек :)
>
будут решаться на стороне юзера. Не умеет работать головой - начнет руками, пока не введет правильное.
Anatoly Podgoretsky (2006-05-04 19:20:00) [3]Boris Marchenko © (04.05.06 19:08) [8]
Это не ИП адрес, а элипс
Zeqfreed (2006-05-04 19:13:00) [4]
> просили из Эдита дробное число заполучить. А несколько точек
> - эт уже не дробное число, эт IP-адрес ;)
Или очень дробное число…
Boris Marchenko (2006-05-04 19:08:00) [5]просили из Эдита дробное число заполучить. А несколько точек - эт уже не дробное число, эт IP-адрес ;)
Desdechado (2006-05-04 18:57:00) [6]> Boris Marchenko
вообще-то есть ReplaceString
а еще будет фокус при наличии нескольких точек :)
Boris Marchenko (2006-05-04 18:45:00) [7]Бррр, точнее
> if (Edit1.Text[i] = ',') or (Edit1.Text[i] = '.') then
> Edit1.Text[i] := DecimalSeparator;
Boris Marchenko (2006-05-04 18:43:00) [8]угу... типа
var
i: Integer;
j: Double;
begin
for i := 1 to Length(Edit1.Text) do
if (Edit1.Text[i] = ',') or (Edit1.Text[i] = '.') then Edit1.text := DecimalSeparator;
j := StrToFloat(Edit1.Text);
end;
AlexanderMS (2006-05-04 18:25:00) [9]Нужно создать обработчик события OnKeyPress у Edit и заменять нажатие "." и "," на DECIMALSEPARATOR. А можно и перед конвертацией заменять эти символы.
Плохиш (2006-05-03 18:31:00) [10]Значит надо прочитать справку, особенно абзац, в котором упоминается DecimalSeparator
@gent (2006-05-03 18:25:00) [11]пробовал. Почему-то не действует.
Плохиш (2006-05-03 18:14:00) [12]StrToFloat