This is topic Проблема конкатенации строк in forum Языки программирования в TRACE MODE 6 / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/33/t/000068.html

Posted by Artem98 (Участник № / Member № 2308) on :
 
На ST написал такую программу, которая переводит целое число в строку:
code:
PROGRAM
VAR_INPUT int_in : INT; END_VAR
VAR_OUTPUT str_out : STRING; END_VAR
VAR neg : BOOL; END_VAR
VAR si : INT; END_VAR
VAR str_tmp : STRING; END_VAR

str_out = '';
neg = (int_in<0);
if (neg) then
int_in = -int_in;
end_if;
repeat
si = int_in mod 10;
str_tmp = si;
str_out = str_tmp + str_out;
int_in = int_in / 10;
until (int_in>0) end_repeat;
if (neg) then
str_out = '-' + str_out;
end_if;
END_PROGRAM

Я понимаю, что есть автоматический перевод, но всплыла интересная проблема. При вводе в int_in 5-значного числа, например 12345, валится и среда разработки, если запускаю только программу на отладку, и профайлер, если запускаю в профайлере. Для 4-значных чисел и менее - работает корректно.
Пробовал на 6.05.1 и на 6.06.
Если заменить строки
code:
	str_tmp = si;
str_out = str_tmp + str_out;

на
code:
	str_out = si + str_out;

то число -12345 преобразуется в -2345.
Подскажите, в чем дело?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
По умолчанию аргумент STRING содержит только 4 символа. Чтобы содержал больше:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/000459.html
 
Posted by Artem98 (Участник № / Member № 2308) on :
 
Дело не в количестве символов. У меня выводит на экран и 5, и 6 символов, если к строке еще дописать что-то текстовое, но не добавляется 5-й символ в числе. Как уже было сказано, "падает" и сама среда разработки, и профайлер.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Проблема во множественном присвоении строковой переменной INT'а. Будем исправлять.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2