Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Is it integer? 
:(
    Опции темы
Dexter
Дата 14.8.2005, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: 1
Всего: 4



Извиняюсь сразу за глупейший вопрос, за дельфей давно не сидел все забыл, порылся в факе, не нашел... Так вот, как проверить что строка является числом... То есть в edit вводится строка и нужно что бы она integerom была...


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
s-mike
Дата 14.8.2005, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 16.1.2005
Где: Киев

Репутация: 9
Всего: 16



Код

function IsInteger(const Value: string; var OutResult: Integer): Boolean;
var
  Code: Integer;
begin
  Val(Value, OutResult, Code);
  Result := (Code = 0);
end;

PM MAIL WWW   Вверх
Quadr0
Дата 14.8.2005, 14:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 15.7.2011, 01:09
  Вверх
s-mike
Дата 14.8.2005, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 16.1.2005
Где: Киев

Репутация: 9
Всего: 16



Quadr0, 0 - тоже Integer smile
Добавлено @ 14:33
Цитата(Quadr0 @ 14.8.2005, 14:12)
function IsInteger(const Value: string): Boolean;
begin
  if StrToIntDef(Value, 0) = 0 then
    Result := False;
end'

Кстати, работать будет неправильно, потому что по умолчанию Boolean-переменным дается значение False. Если писать так, то или
Код

function IsInteger(const Value: string): Boolean;
begin
  Result := True;
  if StrToIntDef(Value, 0) = 0 then
    Result := False;
end;

но короче так:
Код

function IsInteger(const Value: string): Boolean;
begin
  Result := StrToIntDef(Value, 0) <> 0;
end'

PM MAIL WWW   Вверх
Pakshin A. S.
Дата 14.8.2005, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Цитата(Dexter @ 14.8.2005, 13:42)
То есть в edit вводится строка и нужно что бы она integerom была...

Может имеет смысл запретить ввод пользователю всех символов, кроме цифр?
PM   Вверх
vadims
Дата 14.8.2005, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 8.6.2005

Репутация: нет
Всего: 17



Если я дельфи не забыл то есть вариант

Код

val : integer;
errfl: boolean;

String.Trim;
errfl := false;

try 

 val := StrToInt(String);

catch(...)
begin
 errfl := true;
end;


Это сообщение отредактировал(а) Girder - 15.8.2005, 11:14


--------------------
Cpu not found ! Press any key for software emulation.
PM MAIL   Вверх
Alex
Дата 14.8.2005, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162





--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Dexter
Дата 14.8.2005, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: 1
Всего: 4



Цитата(Pakshin @ 14.8.2005, 15:40)
Цитата(Dexter @ 14.8.2005, 13:42)
То есть в edit вводится строка и нужно что бы она integerom была...

Может имеет смысл запретить ввод пользователю всех символов, кроме цифр?

Нет, нужно именно отлавливать цифра введена или символ... Ща попробую все варианты...


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
Snowy
Дата 15.8.2005, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Самый короткий:
if TryIntToStr(...) then
PM MAIL   Вверх
Pakshin A. S.
Дата 15.8.2005, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Цитата(Dexter @ 14.8.2005, 20:16)
Нет, нужно именно отлавливать цифра введена или символ... Ща попробую все варианты...

Код

procedure TFrom1.Edit1KeyPress(Sender: TObject; var Key:Char);
begin
 if (not (Key in ['0'..'9', #8])) or ((Key = '-') and ((Pos('-', Edit1.Text) <> 0) or (Edit1.Text <> ''))
  then
   begin
    Key:=#0;
    Application.MessageBox('Нас интересует только число!', 'Input Error', mb_ok + mb_iconstop);
   end;
end;

PM   Вверх
Medved
Дата 15.8.2005, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



2Pakshin A. S., твой код не компилиться.
Код

  if (not(Key in ['0'..'9', #8])) or ((Key = '-')
  and ((Pos('-', (Sender As TEdit).Text) <> 0) or ((Sender As TEdit).Text <> ''))) then
   begin
    Key:=#0;
    MessageBox(0,'Введите число', 'Предупреждение', MB_OK + MB_ICONWARNING);
   end;




--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
GRU
Дата 18.8.2005, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 20.7.2004

Репутация: 1
Всего: 1



Код

function ToInteger(const AText: string): integer;
begin
  try
    Result := StrToInt(AText); 
  except
    Result := -1;   
  end;
end;



Код

procedure TFrom1.Edit1KeyPress(Sender: TObject; var Key:Char);
begin
  if (Key < #0?) and (Key > #9?) then Key := #0; // 0?- код нуля, ?9 - код девяти
end;

PM MAIL   Вверх
Pakshin A. S.
Дата 18.8.2005, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Так вроде вернее работает...

Код

 if not ((Key in ['0'..'9', #8]) or ((Key = '-')
  and (Pos('-', (Sender as TEdit).Text) = 0))) then
   begin
    Key:=#0;
    MessageBox(0,'Введите число', 'Предупреждение', MB_OK + MB_ICONWARNING);
   end;


Это сообщение отредактировал(а) Pakshin A. S. - 18.8.2005, 12:57
PM   Вверх
GRU
Дата 19.8.2005, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 20.7.2004

Репутация: 1
Всего: 1



я написал бы так:

Код

function ToInteger(const AText: string; var AValue: integer): boolean;
begin
  try
    AValue := StrToInt(AText);
    Result := true;
  except
    AValue := -1;
    Result := false;   
  end;
end;


Да вернее smile

Код

procedure TFrom1.Edit1KeyPress(Sender: TObject; var Key:Char);
begin
  if not ((Key in ['0'..'9', #8]) or ((Key = '-') and (Pos('-', (Sender as TEdit).Text) = 0))) 
    then Key:=#0;
end;



Код

...
var
  AVal: integer;
begin
  if ToInteger(Edit1.Text, AVal) 
    then ShowMessage( ':)' )
    else ShowMessage( ':(' )
end;
...

Добавлено @ 10:39
или исползавать TMaskEdit

Это сообщение отредактировал(а) GRU - 19.8.2005, 10:35
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0589 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.