Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
qad_quolo
1 / 1 / 1
Регистрация: 06.05.2017
Сообщений: 60
1

"" is not a valid integer value + ФУНКЦИЯ

10.07.2017, 04:10. Просмотров 312. Ответов 7
Метки нет (Все метки)

есть цикл, который очень очень редко выбивает ошибку "" is not a valid integer value

на скрине видно, что у переменной g есть значение, а на ячейку таблицы делается условие с проверкой.
выходит все указывает на то, что что-то не так с функцией strto100x которая должна из строки убирать запятые либо, если запятых нет, умножать значение на 10 или 100

Delphi
1
2
3
4
5
6
7
8
9
10
function strto100x(a : string) : int64;
begin
  if pos(',',a) > 0 then
    if pos(',',a) <= length(a)-2 then
      RESULT := strtoint64(copy(a, 1, pos(',',a)-1) + copy(a, pos(',',a)+1, 2))
    else if pos(',',a) = length(a)-1 then
      RESULT := strtoint64(copy(a, 1, pos(',',a)-1) + copy(a, pos(',',a)+1, 1))*10
         else RESULT := strtoint64(copy(a, 1, pos(',',a)-1))*100
  else result := strtoint64(a)*100;
end;
Функция вроде правильная... может ли быть такое, что ошибка где-то в другом месте кода, хотя отладчик и указывает на конкретное место.
Повторю, что ошибка возникает периодически, а не постоянно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2017, 04:10
Ответы с готовыми решениями:

Если вводит в объект Edit отрицательное число, то выдает ошибку "-" is not a valid integer value". Как исправить?
var Form1: TForm1; a,r:integer; l,s,v,p:real; implementation {$R...

Ошибка raised exception class EConvertError "is not valid integer value"
при попытке сменить кол-во столбцов в Stringgrid и переходе на него вылазит...

Ошибка: raised exception class econverterror with message "is not valid integer value"
Ребята помогите ошибка &quot;raised exception class econverterror with message is...

Как исправить ошибку "Is not a valid integer value"?
unit Unit1; interface uses Winapi.Windows, Winapi.Messages,...

Прога вылетает с ошибкой "Is not valid integer value"
Задание : Дано два массива. Найти наименьшее среди тех элементов первого...

7
qad_quolo
1 / 1 / 1
Регистрация: 06.05.2017
Сообщений: 60
10.07.2017, 04:13  [ТС] 2
скрин
0
Миниатюры
"" is not a valid integer value + ФУНКЦИЯ  
Massaraksh7
311 / 264 / 87
Регистрация: 27.05.2017
Сообщений: 1,350
10.07.2017, 04:25 3
Скрина отладчика не видно (UPD: уже видно), но сходу замечания:
1. Если в строке есть символ, отличный от цифры и запятой - будет ошибка.
2. Если в строке есть не один символ "запятая" - будет ошибка.
3. Если строка пустая - будет ошибка.
0
qad_quolo
1 / 1 / 1
Регистрация: 06.05.2017
Сообщений: 60
10.07.2017, 04:30  [ТС] 4
Massaraksh7, посмотрите скрин, я думаю замечания сразу отпадут
0
Massaraksh7
311 / 264 / 87
Регистрация: 27.05.2017
Сообщений: 1,350
10.07.2017, 04:32 5
Я вижу скрин, я не вижу значения ячеек стринггрида.
0
qad_quolo
1 / 1 / 1
Регистрация: 06.05.2017
Сообщений: 60
10.07.2017, 04:41  [ТС] 6
Massaraksh7, я, к сожалению, не смог прокрутить таблицу к нужной строке во время ошибки, т.к. форма уже не реагировала на мои действия после вызова отладчика. Но если брать во внимание, что в ковычках самой ошибки '''' is not a valid integer value ПУСТО, то и строка скорее всего была пустая, либо стала пустой после выполнения функции.
0
Massaraksh7
311 / 264 / 87
Регистрация: 27.05.2017
Сообщений: 1,350
10.07.2017, 04:50 7
Там может быть один пробел, например. Или пробел после числа.
Правильным, вообще-то, будет в подобных случаях использовать функцию Trim
Delphi
1
2
3
str1:=Trim(form1.sg3.cells[5,i]);
if str1<>'' then
  if strtoint64(g)<=strto100x(str1) then
Добавлено через 2 минуты
Ну и, конечно, использовать конструкцию try...except...end
0
AHBAR
239 / 239 / 167
Регистрация: 05.04.2013
Сообщений: 1,111
10.07.2017, 05:18 8
qad_quolo, ругается на пустоту. попробуй сделать "отладчик" внутри кода. типа:
Delphi
1
2
3
4
5
6
try 
g := StrToInt(Edit1.Text); // g - Integer
except // если выше будет ошибка, то:
ShowMessage('Ошибка там-то и там-то');
exit;
end;
0
10.07.2017, 05:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2017, 05:18

Ошибка "Is not a valid integer value"
пытаюсь вывести массивы данные из которых берутся из стринг-гридов . кто...

Ошибка : "" is not a valid integer value
Здравствуйте! У меня ест код:procedure TForm3.Button2Click(Sender: TObject);...

Ошибка "is not a valid integer value".
Делаю конвертер валют и при нажатии на кнопку &quot;Посчитать&quot; появляется ошибка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru