Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2010, 14:02   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию Наличие цифры

Как определелить цифра ли находится в переменной b
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  a, b, c, d, e: string;
begin
  a := '<0>1<1>Test<2>Delphi7<3>Unit<4>';

  b := Copy(a, Pos('<0>', a) + 3, Pos('<1>', a) - 4);
  c := Copy(a, Pos('<1>', a) + 3, Pos('<2>', a) - Pos('<1>', a) - 3);
  d := Copy(a, Pos('<2>', a) + 3, Pos('<3>', a) - Pos('<2>', a) - 3);
  e := Copy(a, Pos('<3>', a) + 3, Pos('<4>', a) - Pos('<3>', a) - 3);
end;
Shouldercannon вне форума Ответить с цитированием
Старый 25.07.2010, 14:30   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Код:
Val
Дает инфу, если бред дали внутрь.

http://www.delphibasics.ru/
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 25.07.2010, 14:42   #3
Vikenty
Заслуженный флудер
Участник клуба
 
Аватар для Vikenty
 
Регистрация: 31.03.2010
Сообщений: 1,473
По умолчанию

проверяет число ли
Код:
function IsNumber(s: string): boolean;
var
v: integer;
l: integer;
begin
Val(s,v,l);
if Length(IntToStr(v))=Length(s) then IsNumber:=true;
end;
Vikenty вне форума Ответить с цитированием
Старый 25.07.2010, 15:37   #4
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Похоже что-то я не так сделал. Не определяет если в b буква
Код:
function IsNumber(s: string): Boolean;
var
  i, v: integer;
begin
  Val(s, v, i);

  if Length(IntToStr(v)) = Length(s) then
    IsNumber := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  a, b: string;
  p: Integer;
begin
  a := '1<0>Test<0>Delphi7<0>Unit<0>';

  p := Pos('<0>', a);
  b := Copy(a, 1, p - 1);

  if IsNumber(b) then
    ShowMessage('Число')
  else
    ShowMessage('Не число');

  MessageBox(0, PChar(b), 'Информация', MB_ICONInformation);
end;
Shouldercannon вне форума Ответить с цитированием
Старый 25.07.2010, 15:46   #5
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var i: smallint;
begin
  ListView1.Clear;
  for i:=1 to length(Edit1.Text) do
    if Edit1.Text[i] in ['0'..'9'] then begin
      ListView1.AddItem(IntToStr(i), nil);
      ListView1.items.Item[ListView1.Items.Count-1].SubItems.add(Edit1.Text[i]);
    end;
end;
Пример ниже
Вложения
Тип файла: rar число.rar (2.9 Кб, 7 просмотров)
dr.Chas вне форума Ответить с цитированием
Старый 25.07.2010, 16:15   #6
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Вы меня не так поняли. Значение уже получено b := Copy(a, 1, p - 1);. Его нужно обработать через предложенную выше функцию IsNumber(s и сообщить что это за значени (цифра или что-то иное).
Shouldercannon вне форума Ответить с цитированием
Старый 25.07.2010, 16:33   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Код:
 if Length(IntToStr(v)) = Length(s) then
А зачем так делать?! в VAL третий параметр для того, чтобы вернуть ошибочное значение - если он равен нулю, значит в s число, иначе - нет (в i величина смещения в стркое, где встретилась ошибка при попытке преобразовать строку в число).

Но это бы ещё работало.
Если бы не ошибка!
А в False фунцию кто будет сбрасывать?

пробуйте так:
Код:
function IsNumber(s: string): Boolean;
var
  i, v: integer;
begin
  Val(s, v, i);
  IsNumber := (i=0);
end;


___________________

Цитата:
Сообщение от Shouldercannon
IsNumber(s и сообщить что это за значени (цифра или что-то иное).
погодите... а Вы не путаете понятия ЦИФРА и понятие ЧИСЛО ???!
Вам что проверить то надо?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.07.2010, 16:42   #8
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Код:
function IsNumber(s: string): Boolean;
var 
  i: Integer;
begin
  Result := False;
  for i := 1 to Length(s) do
    case s[i] of
      '0'..'9':;
      else 
        Exit;
    end;
  Result := True;
end;
www.torry.net
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 26.07.2010, 05:28   #9
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

а вот это не поможет?
Код:
function TryStrToInt(const S: string; out Value: Integer): Boolean;
принимаю благодарности в письменном виде( весы слева)...
MaxNik2009 вне форума Ответить с цитированием
Старый 26.07.2010, 08:20   #10
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Или так:
Код:
function IsNumber(C : Char): boolean;
begin
   Result := False;
   Result := C in ['0'..'9'];
end;
VintProg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка на наличие файла ruavia3 Microsoft Office Excel 1 05.02.2010 21:13
Проверка на наличие файла Vladya Общие вопросы Delphi 7 10.10.2009 01:26
Сортирует цифры по строкам, а надо чтобы сортировала цифры , записанные через пробелы Алексей_xXx Помощь студентам 14 06.05.2009 17:42
проверяем наличие счета Romuald Microsoft Office Excel 2 14.01.2009 12:44
Определить наличие коммента softrix Microsoft Office Excel 2 28.04.2008 23:01