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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.07.2011, 14:31   #1
Человек Панда
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 75
По умолчанию Использование val для Stringgrid.

Здравстуйте.Работаю в Stringgrid,использую val(st,x,code) для проверки правильности ввода числа.Если ввожу целое число,то все нормально,если пытаюсь вещественное-сразу ошибка.В чем может быть ошибка?Вот код этого участка

Код:
function TProizvektor.proverkavvoda(X: TStringGrid;Y:boolean):boolean;
var len:integer;//длина строки
    s:string;//проверка верной записи числа
    number,code:Integer;//для функции val();
begin
len := length(X.cells[X.col, X.row]); //проверка длины ввода
  if len >9 then
      begin
      MessageDlgpos('Число не должно содержать более 9 символов',mterror,[mbOK],0,700,300);
      X.cells[X.col, X.row]:='';
      y:=False; //ввод неверный
      end
  else
      begin  //проверка на ввод числа
      s:=X.Cells[x.Col,x.Row];
      Val(s,number,code);
      if code=0 then  Y:=true //верный ввод
      else
          begin
          MessageDlgpos('Введите число',mterror,[mbOK],0,700,300);
          y:=False; //ввод неверный
          X.cells[X.col, X.row]:='';  //очищаем для следующего ввода
          end;
      end;
result:=y;
end;


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 04.07.2011 в 15:08.
Человек Панда вне форума Ответить с цитированием
Старый 04.07.2011, 15:10   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

наследие паскаля, применяйте StrToInt для целых чисел, а StrToFloat для вещественных.

ЗЫ: ошибка потому что val работает с целыми.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.07.2011, 15:11   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
var len:integer;//длина строки
    s:string;//проверка верной записи числа
    number,code:Integer;//для функции val();

      begin  //проверка на ввод числа
      s:=X.Cells[x.Col,x.Row];
      Val(s,number,code);
Ещё вопросы есть?! (функция VAL не может преобразовать вещественное число, если для результата задана переменная целого типа...)



Цитата:
Сообщение от Пепел Феникса
ЗЫ: ошибка потому что val работает с целыми.
Пепел Феникса, ну не надо обижать отличный "классический" оператор Паскаля!!
Код:
program ProjectVal1;
{$APPTYPE CONSOLE}
uses SysUtils;
var s : string;
  code : integer;
  vvv : double;
begin
  s := '12.456';
  val(s, vvv, code);
  if code = 0 then
    WriteLn('Successful! Now number is ',vvv:15:7)
  else
    WriteLn('Oh! No! Error!(wrong symbol at position ',Code);
  Readln;
end.

Последний раз редактировалось Serge_Bliznykov; 04.07.2011 в 15:17.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.07.2011, 15:20   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

он перегруженный? не знал
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.07.2011, 15:24   #5
Человек Панда
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 75
По умолчанию

Огромное всем спасибо,как же это я не усмотрел сам!
Человек Панда вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование компонента StringGrid Dane Помощь студентам 0 06.06.2010 14:25
VAL(s,n,m) dimcoff Паскаль, Turbo Pascal, PascalABC.NET 6 16.03.2010 00:05
Калькулятор val Alfonso1 Софт 5 30.11.2009 14:27
Ошибка при обработке StringGrid + использование XPManifest noname_06 Общие вопросы Delphi 3 18.01.2009 20:52
про VAL Максим-2 Общие вопросы Delphi 7 22.07.2007 12:29