Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Вниз

Проверка eidta на наличие цифр   Найти похожие ветки 

 
TDionis   (2005-08-03 11:46) [0]

Вобщем, так. Надо написать код, чтоб в поле ввода телефона нельзя было ввести ничего кроме цифр. Проблема вот в чем: номер телефона (мобилы) больше значения integer. (89151234567 > 2147483647). Поэтому этот код:

a := strtointdef(edit1.Text,0);
  if a = 0 then begin
    beep;
    With Edit1 Do Text:=Copy(Text,1,Length(Text)-1);
    edit1.SelStart := length(edit1.text);
    listbox1.Items.Add(" > Неправильный ввод телефона! Только        числа!");
    listbox1.Perform(wm_vscroll,1,0);
  end;  

Будет лагать после 10 цифры. Как можно обойти это? Заранее спасибо!


 
Ega23 ©   (2005-08-03 11:51) [1]

for i:=1 to Length(Edit1.Text) do
if not (Edit1.Text[i] in ["0".."9"]) then
 begin
  ShowMessage(Edit1.Text[i]+" - не цифра!!!");
  Break;
 end;


 
Eraser ©   (2005-08-03 11:53) [2]

TDionis   (03.08.05 11:46)

Ещё вариант - TryStrToInt.


 
TDionis   (2005-08-03 12:04) [3]

спасибо всем уже разобрался: val() и real - форева!! )))

var a:real;
b:integer;
begin
val(edit1.Text,a,b);
if b = 0 then else begin
beep;
With Edit1 Do Text:=Copy(Text,1,Length(Text)-1);
edit1.SelStart := length(edit1.text);
listbox1.Items.Add(" > Неправильный ввод телефона! Только числа!");
listbox1.Perform(wm_vscroll,1,0);
end;


 
DesWind ©   (2005-08-03 12:14) [4]

Надо написать код, чтоб в поле ввода телефона нельзя было ввести ничего кроме цифр.
Логичнее была бы маска. Или глушить все вводимые символы кроме циферок.


 
DesWind ©   (2005-08-03 12:17) [5]


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ["0".."9"]) then
 Key:=#0;
end;


 
Ega23 ©   (2005-08-03 12:19) [6]

2 DesWind ©   (03.08.05 12:17) [5]

Про такую штуку, как Copy/Paste случайно не забыл?


 
DesWind ©   (2005-08-03 12:23) [7]

забыл...


 
Ольга   (2005-08-03 12:41) [8]

Для вашего случая очень подходит CurrencyEdit1 из RXControl
Там можно настроить формат, задать шаблон и не надо никаких проверок.


 
ECM ©   (2005-08-03 12:48) [9]

ES_NUMBER ?
..не помню уже как это в VCL проще...

SetWindowLong(Edit1.Handle,GWL_STYLE,GetWindowLong(Edit1.Handle,GWL_STYLE) or ES_NUMBER);


 
Macrodens ©   (2005-08-03 12:52) [10]

А не проще в онКейПресс обработку задать:

...
begin
...
  if not (kei in ["0"..."9", #8]) then
     key:=#0;
...
end;

И будут вводиться только цифери!


 
Ega23 ©   (2005-08-03 13:12) [11]

2 Macrodens ©   (03.08.05 12:52) [10]

см. [6]
Через Copy/Paste я смогу туда любую строку вставить


 
SergP.   (2005-08-03 17:03) [12]


> TDionis   (03.08.05 11:46)  
> Вобщем, так. Надо написать код, чтоб в поле ввода телефона
> нельзя было ввести ничего кроме цифр. Проблема вот в чем:
> номер телефона (мобилы) больше значения integer. (89151234567
> > 2147483647). Поэтому этот код:


Если тебе integer мало, то есть int64


 
msguns ©   (2005-08-03 17:18) [13]

>Ольга   (03.08.05 12:41) [8]
>Для вашего случая очень подходит CurrencyEdit1 из RXControl
>Там можно настроить формат, задать шаблон и не надо никаких проверок.

Дадад, а если мне надо будет вводить что-нибудь вроде LXXIV, то Вы посоветуете какой-нибудь RYControl. Из соответствующей библиотеки компонент..
Или RxLib чтал уже стандартом и поставляется с Делфи ?
Не надо советовать "для ленивых", тем более для такой чепуховой проблемы.


 
Ega23 ©   (2005-08-03 17:27) [14]

2 msguns ©   (03.08.05 17:18) [13]
Или RxLib чтал уже стандартом и поставляется с Делфи ?

Ну, по крайней мере, я неоднократно встречал рекомендации пользоваться RxLib от ТВ


 
msguns ©   (2005-08-03 17:55) [15]

>Ega23 ©   (03.08.05 17:27) [14]
>Ну, по крайней мере, я неоднократно встречал рекомендации пользоваться RxLib от ТВ

А ты сам-то его юзаешь ?
Я, к примеру после того, как заморился ходить отладчиком по его "кишкам" при бряке где-нибудь в AfterScroll или OnGetText, выбросил его в мусорку.
И не жалею ни разу


 
Ольга   (2005-08-03 17:56) [16]


> msguns ©

А зачем велосипед изобретать, тратить время на чепуховые задачки.

А Вы, msguns, по-видимому исключительно на асемблере пишите, т.к. все остальное для ленивых.


 
Ольга   (2005-08-03 18:03) [17]


> [15]

Я на днях с Ораклом заморилась "ходить по его кишкам", решила "выбросить его в мусорку".
Следуя вашей логике, Оракл - дрянь.


 
DVladimir   (2005-08-03 19:37) [18]

Это как с Ораклом можно заморочиться?


 
TStas ©   (2005-08-03 20:05) [19]

А нельзя в onkeyup проверять цифра была последней введена или нет?


 
Leonid Troyanovsky ©   (2005-08-03 20:23) [20]


> TStas ©   (03.08.05 20:05) [19]
> А нельзя в onkeyup проверять цифра была последней введена
> или нет?


Проверять надо все поле, в OnChange.

--
Regards, LVT.


 
TStas ©   (2005-08-03 20:25) [21]

procedure TForm1.Edit1Change(Sender: TObject);
const numStr="0123456789";
var
 i:Integer;
 c:Char;
 str:String;
begin
str:=(Sender As TEdit).Text;
i:=1;
while i<=Length(str) do
 begin
 c:=str[i];
 if Pos(c, numStr)=0 then Delete(str, i, 1);
 inc(i);
 end;
(Sender As TEdit).Text:=str;
(Sender As TEdit).SelStart:=Length(str);
(Sender As TEdit).SelLength:=0;
(Sender As TEdit).SetFocus;
end;
у любого едита, у котрого это назначено в onchange будут только одни циферки и вводиться, в т. ч. копирование.


 
TStas ©   (2005-08-03 20:27) [22]

>Leonid Troyanovsky ©  
Согласен, когда ответ писал, сообразил, что так лучше, поскольку ведь из буфера можно вставить. Onkeyup хотел, чтобы лишней проверки не было, так ведь их две получается, скрытая рекурсия: onchange вызывает изменение, а оно onchange.


 
Leonid Troyanovsky ©   (2005-08-03 20:37) [23]


> TStas ©   (03.08.05 20:27) [22]

> проверки не было, так ведь их две получается, скрытая рекурсия:
> onchange вызывает изменение, а оно onchange.


http://rsdn.ru/Forum/?mid=626935

--
Regards, LVT.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.037 c
4-1120035773
DarkSet
2005-06-29 13:02
2005.08.21
открытие файла приложением


8-1107270985
SFproG
2005-02-01 18:16
2005.08.21
программный MIDI синтезатор


5-1093329528
Tormoz
2004-08-24 10:38
2005.08.21
Класс, описывающий древовидную структуру.


14-1122620714
NickMan
2005-07-29 11:05
2005.08.21
Программы для интернет - радио


4-1119855411
Dot
2005-06-27 10:56
2005.08.21
Как создать линк?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский