Is not a valid integer value ошибка

Unfortunately, you have shown code that does not match the error message that you report. Your actual code calls StrToInt rather than IntToStr. I know this because that error message is produced by calls to StrToInt rather than IntToStr.

Your code looks more like this:

UniqueID := StrToInt('2312357250');

Note that StrToInt returns a signed 32 bit integer type. Valid values are in the range -2,147,483,648 to 2,147,483,647. Your value is outside the valid range for Integer, hence the error.

If you want a simple way to side step all these range issues, then use Int64 instead of DWORD or Integer, and call StrToInt64.

Furthermore, these lines are troublesome:

UniqueID := GetTickCount;
LastUniqueID := GetTickCount + 1000;

You make two distinct calls to GetTickCount. These two calls may yield different values. Indeed, if GetTickCount rolls over, then the second call may return a value that is less than the first one.

Yet more troubles surround GetTickCount + 1000. If GetTickCount returns a value close to the upper limit, then you will encounter integer overflow, which may have results that you don’t expect. Use GetTickCount64 to avoid that pitfall.

However, I remain to be convinced that the system tick count can is a good way to generate a unique ID. Depending on your requirements, this may well be a poor solution to your problem, whatever it is. On the face of it, your code appears to preclude requesting a unique ID less than a second later than the previous time you requested one. Of course, without knowing your requirements it is hard to recommend an alternative.

30K

22 марта 2010 года

Morphling

74 / / 17.01.2010

может я вам не так объяснил, кароч я хотел создать типо калькулятор, к каждой кнопке присвоил caption 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 соответственно. Также есть кнопка «/», «*», «-«, «+» и «=» (без кавычек конечно), которые должны выполнять действие caption. Вот когда я нажимаю на одну из кнопок то в edit1.text появляется собственно caption нажатой кнопки. Например нажал на кнопку «2» «+» «3», в edit1.text появился текст 2 + 3, а потом нажимаю на «=». Вот он должен был мне возвратить 2+3=5, потому что, как я описал выше сначала edit1.text преобразуется в число strtoint(edit1.text), а это в свою очередь присваивается к result, у нас уже это выглядит так
result := strtoint(edit1.text), после этого, result должен посчитать и присвоить значение от 2+3 и вывести на edit1.text (преобразовать целое в строку я не забыл), а он этого не делает и вместо выходит ошибка… Кто понимает, в чем тут проблема?

0 / 0 / 0

Регистрация: 06.11.2011

Сообщений: 31

1

26.10.2012, 11:39. Показов 21024. Ответов 14


Студворк — интернет-сервис помощи студентам

Делаю конвертер валют и при нажатии на кнопку «Посчитать» появляется ошибка
«is not a valid integer value».
Когда вместо integer ставим тип longint или real то ничего не происходит.
В чём проблема???помогите решить.



0



898 / 345 / 65

Регистрация: 11.02.2012

Сообщений: 1,502

26.10.2012, 11:41

2

Ну значит у тебя несовместимость типов.
Продемонстрируй код.



0



Alkcatras

0 / 0 / 0

Регистрация: 06.11.2011

Сообщений: 31

26.10.2012, 11:52

 [ТС]

3

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
var   BUR,EUR,USD,RUB,SUMMA:integer;
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
CLOSE;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
SUMMA:=StrToInt(EDIT1.TEXT);
BUR:=STRTOINT(EDIT2.Text);
RUB:=STRTOINT(EDIT3.Text);
USD:=STRTOINT(EDIT4.Text);
EUR:=STRTOINT(EDIT5.Text);
 
if RADIOBUTTON1.Checked=TRUE AND RADIOBUTTON2.Checked=FALSE AND RADIOBUTTON2.Checked=FALSE then
BEGIN
BUR:=SUMMA*RUB;
EDIT2.Text:=INTTOSTR(BUR);
//SHOWMESSAGE('BUR');
END;
if RADIOBUTTON1.Checked=FALSE AND RADIOBUTTON2.Checked=TRUE AND RADIOBUTTON2.Checked=FALSE then
BEGIN
BUR:=SUMMA*USD;
EDIT2.Text:=INTTOSTR(BUR);
END;
if RADIOBUTTON1.Checked=FALSE AND RADIOBUTTON2.Checked=FALSE AND RADIOBUTTON2.Checked=TRUE then
BEGIN
BUR:=SUMMA*EUR;
EDIT2.Text:=INTTOSTR(BUR);
END;
end;
 
end.

Добавлено через 8 минут

Цитата
Сообщение от HanDi
Посмотреть сообщение

Ну значит у тебя несовместимость типов.
Продемонстрируй код.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
var   BUR,EUR,USD,RUB,SUMMA:integer;
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
CLOSE;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
SUMMA:=StrToInt(EDIT1.TEXT);
BUR:=STRTOINT(EDIT2.Text);
RUB:=STRTOINT(EDIT3.Text);
USD:=STRTOINT(EDIT4.Text);
EUR:=STRTOINT(EDIT5.Text);
 
if RADIOBUTTON1.Checked=TRUE AND RADIOBUTTON2.Checked=FALSE AND RADIOBUTTON2.Checked=FALSE then
BEGIN
BUR:=SUMMA*RUB;
EDIT2.Text:=INTTOSTR(BUR);
//SHOWMESSAGE('BUR');
END;
if RADIOBUTTON1.Checked=FALSE AND RADIOBUTTON2.Checked=TRUE AND RADIOBUTTON2.Checked=FALSE then
BEGIN
BUR:=SUMMA*USD;
EDIT2.Text:=INTTOSTR(BUR);
END;
if RADIOBUTTON1.Checked=FALSE AND RADIOBUTTON2.Checked=FALSE AND RADIOBUTTON2.Checked=TRUE then
BEGIN
BUR:=SUMMA*EUR;
EDIT2.Text:=INTTOSTR(BUR);
END;
end;
 
end.



0



Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32582 / 21053 / 8131

Регистрация: 22.10.2011

Сообщений: 36,326

Записей в блоге: 8

26.10.2012, 11:53

4

Во-первых, это не должно даже компилироваться (не хватает скобок в If-ах), а если и скомпилируется, то работать может не так, как подразумевалось, так что исправляй. А во-вторых, покажи скриншот, что именно ты вводишь в эдиты.



0



HanDi

26.10.2012, 11:57

Не по теме:

Цитата
Сообщение от Alkcatras
Посмотреть сообщение

if RADIOBUTTON1.Checked=TRUE AND RADIOBUTTON2.Checked=FALSE AND RADIOBUTTON2.Checked=FALSE then

о мои глаза.. о мой МОЗГ!



0



0 / 0 / 0

Регистрация: 06.11.2011

Сообщений: 31

26.10.2012, 11:58

 [ТС]

6

Это компилируется…

Миниатюры

Ошибка "is not a valid integer value".
 



0



0 / 0 / 0

Регистрация: 06.11.2011

Сообщений: 31

26.10.2012, 12:00

 [ТС]

7

Цитата
Сообщение от HanDi
Посмотреть сообщение

Не по теме:

о мои глаза.. о мой МОЗГ!

просто сначало использовал CheckBox



0



volvo

Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32582 / 21053 / 8131

Регистрация: 22.10.2011

Сообщений: 36,326

Записей в блоге: 8

26.10.2012, 12:05

8

Цитата
Сообщение от Alkcatras
Посмотреть сообщение

Это компилируется…

А я предупреждал, что это может работать неправильно. Смотри, как условие

Delphi
1
if RADIOBUTTON1.Checked=FALSE AND RADIOBUTTON2.Checked=TRUE AND RADIOBUTTON2.Checked=FALSE then

видит компилятор (учитывая, что приоритет AND выше приоритета операции сравнения, а все операции сравнения выполняются, как им и положено, слева направо)

Delphi
1
if ((RADIOBUTTON1.Checked=(FALSE AND RADIOBUTTON2.Checked))=(TRUE AND RADIOBUTTON2.Checked))=FALSE then

Чувствуешь разницу? То есть, какой кусок кода выполняется в какой момент времени — совершенно непонятно. Добавь скобки:

Delphi
1
2
3
if (RADIOBUTTON1.Checked=FALSE) AND (RADIOBUTTON2.Checked=TRUE) AND (RADIOBUTTON2.Checked=FALSE) then
// или вот так
if not RADIOBUTTON1.Checked AND RADIOBUTTON2.Checked AND not RADIOBUTTON2.Checked then

— будет ближе к истине (приоритет NOT выше, чем сравнения, так что тут проблем не будет).



0



Alkcatras

0 / 0 / 0

Регистрация: 06.11.2011

Сообщений: 31

26.10.2012, 12:15

 [ТС]

9

поставил так

Delphi
1
if (RADIOBUTTON1.Checked=TRUE) AND (RADIOBUTTON2.Checked=FALSE) AND (RADIOBUTTON2.Checked=FALSE) then

считает только для RUS

Добавлено через 4 минуты
немного не понимаю вот это

Delphi
1
if not RADIOBUTTON1.Checked AND RADIOBUTTON2.Checked AND not RADIOBUTTON2.Checked then

Можешь объяснит??



0



Модератор

3488 / 2611 / 741

Регистрация: 19.09.2012

Сообщений: 7,971

26.10.2012, 12:36

10

not true = false, а RADIOBUTTON1.Checked уже само по себе либо true, либо false, незачем его еще с чем-то сравнивать.



0



Alkcatras

0 / 0 / 0

Регистрация: 06.11.2011

Сообщений: 31

26.10.2012, 17:18

 [ТС]

11

Цитата
Сообщение от UI
Посмотреть сообщение

А я предупреждал, что это может работать неправильно. Смотри, как условие

Delphi
1
if RADIOBUTTON1.Checked=FALSE AND RADIOBUTTON2.Checked=TRUE AND RADIOBUTTON2.Checked=FALSE then

видит компилятор (учитывая, что приоритет AND выше приоритета операции сравнения, а все операции сравнения выполняются, как им и положено, слева направо)

Delphi
1
if ((RADIOBUTTON1.Checked=(FALSE AND RADIOBUTTON2.Checked))=(TRUE AND RADIOBUTTON2.Checked))=FALSE then

Чувствуешь разницу? То есть, какой кусок кода выполняется в какой момент времени — совершенно непонятно. Добавь скобки:

Delphi
1
2
3
if (RADIOBUTTON1.Checked=FALSE) AND (RADIOBUTTON2.Checked=TRUE) AND (RADIOBUTTON2.Checked=FALSE) then
// или вот так
if not RADIOBUTTON1.Checked AND RADIOBUTTON2.Checked AND not RADIOBUTTON2.Checked then

— будет ближе к истине (приоритет NOT выше, чем сравнения, так что тут проблем не будет).

поставил так

Delphi
1
if (RADIOBUTTON1.Checked=TRUE) AND (RADIOBUTTON2.Checked=FALSE) AND (RADIOBUTTON2.Checked=FALSE) then

считает только для RUS, для USD и EUR не считает



0



Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32582 / 21053 / 8131

Регистрация: 22.10.2011

Сообщений: 36,326

Записей в блоге: 8

26.10.2012, 17:24

12

Ты все свои условия подобным образом поправил, или только одно какое-то? Исправь все (строки 21, 27, 32 из третьего сообщения), потом скажешь, получилось или нет.



0



0 / 0 / 0

Регистрация: 06.11.2011

Сообщений: 31

26.10.2012, 17:30

 [ТС]

13

Цитата
Сообщение от UI
Посмотреть сообщение

Ты все свои условия подобным образом поправил, или только одно какое-то? Исправь все (строки 21, 27, 32 из третьего сообщения), потом скажешь, получилось или нет.

Да все, и 21 и 27 и 32.Считает только для RUS.В RUS пишу число в сумме 1 в остольных Edit-ах 0(если не писать то появляется ошибка «is not a valid integer value») при выполнении появляется число из RUS.но если делать это для USD или EUR ничего вообще не происходит.



0



volvo

Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32582 / 21053 / 8131

Регистрация: 22.10.2011

Сообщений: 36,326

Записей в блоге: 8

26.10.2012, 17:33

14

И вообще, почему нельзя вместо трех независимых RadioButton-ов использовать один RadioGroup с тремя элементами, и проверять:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   case RadioGroup1.ItemIndex of
      0 : // Рубли
      begin
         // переводишь рубли по курсу
      end;
      1 : // Баксы
      begin
         // переводишь баксы по курсу
      end;
      2 : // Евро
      begin
         // переводишь евробаксы по курсу
      end;
   end;

?

Кстати, ошибка твоя — от невнимательности:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
procedure TForm1.Button2Click(Sender: TObject);
begin
SUMMA:=StrToInt(EDIT1.TEXT);
 
// Это не надо делать. Возьми только данные для нужной единицы, в соотв. ветке ниже.
//BUR:=STRTOINT(EDIT2.Text);
//RUB:=STRTOINT(EDIT3.Text);
//USD:=STRTOINT(EDIT4.Text);
//EUR:=STRTOINT(EDIT5.Text);
 
if RADIOBUTTON1.Checked AND not RADIOBUTTON2.Checked AND not RADIOBUTTON3.Checked then
BEGIN
RUB:=STRTOINT(EDIT3.Text);
BUR:=SUMMA*RUB;
EDIT2.Text:=INTTOSTR(BUR);
//SHOWMESSAGE('BUR');
END;
if not RADIOBUTTON1.Checked AND RADIOBUTTON2.Checked AND not RADIOBUTTON3.Checked then
BEGIN
USD:=STRTOINT(EDIT4.Text);
BUR:=SUMMA*USD;
EDIT2.Text:=INTTOSTR(BUR);
END;
if not RADIOBUTTON1.Checked AND not RADIOBUTTON2.Checked AND RADIOBUTTON3.Checked then
BEGIN
EUR:=STRTOINT(EDIT5.Text);
BUR:=SUMMA*EUR;
EDIT2.Text:=INTTOSTR(BUR);
END;
end;

, и потом, у тебя вообще не присутствовал RADIOBUTTON3, зато RADIOBUTTON2 везде проверялся по 2 раза…



0



Alkcatras

0 / 0 / 0

Регистрация: 06.11.2011

Сообщений: 31

26.10.2012, 17:59

 [ТС]

15

Цитата
Сообщение от UI
Посмотреть сообщение

И вообще, почему нельзя вместо трех независимых RadioButton-ов использовать один RadioGroup с тремя элементами, и проверять:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   case RadioGroup1.ItemIndex of
      0 : // Рубли
      begin
         // переводишь рубли по курсу
      end;
      1 : // Баксы
      begin
         // переводишь баксы по курсу
      end;
      2 : // Евро
      begin
         // переводишь евробаксы по курсу
      end;
   end;

?

Кстати, ошибка твоя — от невнимательности:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
procedure TForm1.Button2Click(Sender: TObject);
begin
SUMMA:=StrToInt(EDIT1.TEXT);
 
// Это не надо делать. Возьми только данные для нужной единицы, в соотв. ветке ниже.
//BUR:=STRTOINT(EDIT2.Text);
//RUB:=STRTOINT(EDIT3.Text);
//USD:=STRTOINT(EDIT4.Text);
//EUR:=STRTOINT(EDIT5.Text);
 
if RADIOBUTTON1.Checked AND not RADIOBUTTON2.Checked AND not RADIOBUTTON3.Checked then
BEGIN
RUB:=STRTOINT(EDIT3.Text);
BUR:=SUMMA*RUB;
EDIT2.Text:=INTTOSTR(BUR);
//SHOWMESSAGE('BUR');
END;
if not RADIOBUTTON1.Checked AND RADIOBUTTON2.Checked AND not RADIOBUTTON3.Checked then
BEGIN
USD:=STRTOINT(EDIT4.Text);
BUR:=SUMMA*USD;
EDIT2.Text:=INTTOSTR(BUR);
END;
if not RADIOBUTTON1.Checked AND not RADIOBUTTON2.Checked AND RADIOBUTTON3.Checked then
BEGIN
EUR:=STRTOINT(EDIT5.Text);
BUR:=SUMMA*EUR;
EDIT2.Text:=INTTOSTR(BUR);
END;
end;

, и потом, у тебя вообще не присутствовал RADIOBUTTON3, зато RADIOBUTTON2 везде проверялся по 2 раза…

ахахахах глупая ошибка спасибо, следующий раз буду повнимательнее



0



Problem:

When I enable EurekaLog for my project in IDE — I get one of the following errors:

  • «‘true’ is not a valid integer value»
  • «[dcc32 Warning] W1030 Invalid compiler directive: ‘true'»
  • «File not found: ‘True.dpr'»
  • «0» is an invalid value for the «DebugInformation» parameter of the «DCC» task. The «DebugInformation» parameter is of type «System.Boolean»

Reason:

EurekaLog uses OTA to modify options of your opened project. Specifically, EurekaLog must enable debug information. The error messages comes from a known bug (see QC #122547) in Delphi OTA (OpenTools API). Alternatively, it may be caused by opening project in older Delphi version (for example, opening XE6 project in XE3).

Solution:

Try to use any of the following:

A). Switch to «Debug» profile;

B). Delete .dproj file (when downgrading project);

C). Remove all mentions of DCC_DebugInformation from .dproj file (edit with text editor);

D). Go to Project / Options / Delphi Compiler/ Compiling and manually set «Debug information» option to «Debug information» value or «Limited debug information» value. Do not use «No debug information» value.

You have to do this only once.

See also:

  • When the Delphi XE5 commandline compiler fails with `error F1026: File not found: ‘False.dpr’`
  • MSBuild failing in Cpp.Targets searching for ‘True.dpr’, with a new XE4 project
  • QC Report #122547

Checked:

EurekaLog 7.1, RAD Studio XE5, XE6, XE7.

dsb80


  • #1

Ну что-то типа не int там где нада…
Народ, помогите нубу….
Написал кой какой код… ака messenger(Delphi+PHP+Js).
Работает тип-топ, но «чиста хаотично» выскакивает сообщение о данной ошибке….
Замечено, что происходит это в районе: скачивания неких данных- сладываия в свою базу- распознавания(знаю — незнаю)- вывода в Grig того есть…. Но в какой строке это происходит непонятно…
Мож есть какиенить средства (кроме F8) чтоб отискать эту гадость ????
Так понимаю, что гдето в integer пробел( или несколько) пишется….

VahaC


  • #2

Нужно все места где делается преобразование типов заключить в try … except … end;

VahaC


  • #3

Либо trystrtoint всякие …

Имхо лучше с помощью try так как в случае ошибки использовать свой обработчик ошибок.

VahaC


dsb80


  • #5

Ха… прикинте…

Код:

try
program my;
uses Crt;
begin
Application.Initialize;
Application.Run;
end.
except
showmessage('Game Over');
end;

не…. чтото меня прибило….)))
Спс за варианты, но что-то помнится мне в паскале была такая приблуда что-то типа «debug» — можно было посмотреть значение каждой переменной на каждом шаге… в delphi чтото немогу найти…
try except end впихнуть где нужно и ненужно… хотя как вариант… попробую…
З.Ы.
несмогу решить… приду кзаказчику и сажу мол

прога работает… а окошко с непонятными букафками вылетает так это злой сисадмин чтото там напортачил.

… ))) шутко разумеется….

vital


berserker


  • #7

Спс за варианты, но что-то помнится мне в паскале была такая приблуда что-то типа «debug» — можно было посмотреть значение каждой переменной на каждом шаге… в delphi чтото немогу найти…

Вообще странное заявление, так как уж debug то в делфи есть … Жми F7 или F8 и все будет ОК)))

Понравилась статья? Поделить с друзьями:
  • Is not a block device ошибка монтирования
  • Is mf03 5 ошибка при удалении
  • Is mf02 5 ошибка gta v
  • Is lulu is in the garden где ошибка
  • Is fc05 файл поврежден код ошибки