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
Делаю конвертер валют и при нажатии на кнопку «Посчитать» появляется ошибка
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 |
|||||||
Добавлено через 8 минут
Ну значит у тебя несовместимость типов.
0 |
Супер-модератор 32582 / 21053 / 8131 Регистрация: 22.10.2011 Сообщений: 36,326 Записей в блоге: 8 |
|
26.10.2012, 11:53 |
4 |
Во-первых, это не должно даже компилироваться (не хватает скобок в If-ах), а если и скомпилируется, то работать может не так, как подразумевалось, так что исправляй. А во-вторых, покажи скриншот, что именно ты вводишь в эдиты.
0 |
HanDi |
26.10.2012, 11:57
|
Не по теме:
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 |
Это компилируется… Миниатюры
0 |
0 / 0 / 0 Регистрация: 06.11.2011 Сообщений: 31 |
|
26.10.2012, 12:00 [ТС] |
7 |
Не по теме: о мои глаза.. о мой МОЗГ! просто сначало использовал CheckBox
0 |
volvo Супер-модератор 32582 / 21053 / 8131 Регистрация: 22.10.2011 Сообщений: 36,326 Записей в блоге: 8 |
||||||||||||
26.10.2012, 12:05 |
8 |
|||||||||||
Это компилируется… А я предупреждал, что это может работать неправильно. Смотри, как условие
видит компилятор (учитывая, что приоритет AND выше приоритета операции сравнения, а все операции сравнения выполняются, как им и положено, слева направо)
Чувствуешь разницу? То есть, какой кусок кода выполняется в какой момент времени — совершенно непонятно. Добавь скобки:
— будет ближе к истине (приоритет NOT выше, чем сравнения, так что тут проблем не будет).
0 |
Alkcatras 0 / 0 / 0 Регистрация: 06.11.2011 Сообщений: 31 |
||||||||
26.10.2012, 12:15 [ТС] |
9 |
|||||||
поставил так
считает только для RUS Добавлено через 4 минуты
Можешь объяснит??
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 |
|||||||||||||||
А я предупреждал, что это может работать неправильно. Смотри, как условие
видит компилятор (учитывая, что приоритет AND выше приоритета операции сравнения, а все операции сравнения выполняются, как им и положено, слева направо)
Чувствуешь разницу? То есть, какой кусок кода выполняется в какой момент времени — совершенно непонятно. Добавь скобки:
— будет ближе к истине (приоритет NOT выше, чем сравнения, так что тут проблем не будет). поставил так
считает только для RUS, для USD и EUR не считает
0 |
Супер-модератор 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 |
Ты все свои условия подобным образом поправил, или только одно какое-то? Исправь все (строки 21, 27, 32 из третьего сообщения), потом скажешь, получилось или нет. Да все, и 21 и 27 и 32.Считает только для RUS.В RUS пишу число в сумме 1 в остольных Edit-ах 0(если не писать то появляется ошибка «is not a valid integer value») при выполнении появляется число из RUS.но если делать это для USD или EUR ничего вообще не происходит.
0 |
volvo Супер-модератор 32582 / 21053 / 8131 Регистрация: 22.10.2011 Сообщений: 36,326 Записей в блоге: 8 |
||||||||
26.10.2012, 17:33 |
14 |
|||||||
И вообще, почему нельзя вместо трех независимых RadioButton-ов использовать один RadioGroup с тремя элементами, и проверять:
? Кстати, ошибка твоя — от невнимательности:
, и потом, у тебя вообще не присутствовал RADIOBUTTON3, зато RADIOBUTTON2 везде проверялся по 2 раза…
0 |
Alkcatras 0 / 0 / 0 Регистрация: 06.11.2011 Сообщений: 31 |
||||||||
26.10.2012, 17:59 [ТС] |
15 |
|||||||
И вообще, почему нельзя вместо трех независимых RadioButton-ов использовать один RadioGroup с тремя элементами, и проверять:
? Кстати, ошибка твоя — от невнимательности:
, и потом, у тебя вообще не присутствовал 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 и все будет ОК)))