Просмотр полной версии : OSU.ReplaceSubstring и входные переменные более 255 символов
aaaSashaMGGU
11.06.2024, 10:26
Добрый день!
Нужно сделать замену подстроки в переменной типа String(2047)
Что можно придумать, чтобы не городить кучу новых самописных функций?
Спасибо заранее!
Евгений Кислов
11.06.2024, 10:40
Добрый день!
Нужно сделать замену подстроки в переменной типа String(2047)
Что можно придумать, чтобы не городить кучу новых самописных функций?
Спасибо заранее!
Добрый день.
См. функцию StrReplaceA из библиотеки StringUtils.
Хотя в сигнатуре указан тип POINTER TO STRING(255) - насколько я помню, она работает со строками, длину которых можно представить типом INT (т.е. до 32 767 символов).
aaaSashaMGGU
11.06.2024, 12:57
Добрый день.
См. функцию StrReplaceA из библиотеки StringUtils.
Хотя в сигнатуре указан тип POINTER TO STRING(255) - насколько я помню, она работает со строками, длину которых можно представить типом INT (т.е. до 32 767 символов).
Функция порвала мне мозг, но я её победил...
Спасибо!
Всё работает. Вот, если кому надо:
//Заменяем в команде текст имени БД с 58 символа 9 символов на sBD_Name_UTF8
StrReplaceA(ADR(sCommand_Real), SIZEOF(sCommand_Real), ADR(sBD_Name_UTF8), SIZEOF(sCommand_Real), 9, TO_INT(STU.StrLenA(ADR(sBD_Name_UTF8))), 58);
Замечу, что это вот ни разу не аналог OSU.ReplaceSubstring, т.к., OSU.ReplaceSubstring заменяет указанную подстроку на другую указанную подстроку
StrReplaceA же заменяет в строке ряд символов на другой ряд символов, начиная с определённого символа в требуемом количестве символов (кто понял - молодец)
Соответственно, если заранее символ, с которого надо менять, неизвестен - то придётся сильно извернуться. У меня он известен - так что, у меня всё ОК
в плк есть питон с requests можно просто набрать команду 'python3 app.py value1 value2' а в коде взять аргументы и вставить/заменить их в любые места какого угодно шаблона текста и отправить куда нужно, а контроллеру заниматься непосредственно технологическим процессом
aaaSashaMGGU
11.06.2024, 22:09
в плк есть питон с requests можно просто набрать команду 'python3 app.py value1 value2' а в коде взять аргументы и вставить/заменить их в любые места какого угодно шаблона текста и отправить куда нужно, а контроллеру заниматься непосредственно технологическим процессом
Так контроллер ведь как раз и отправляет команду во внешнюю линуксовую консоль. Так не всё ли равно, что он будет делать: слать SQL-команду через bsqldb, либо запускать питоновский скрипт, который уже отправит тот же самый SQL-запрос?
Так или иначе, я, кажется, нашёл более компактное и простое решение для отправки ОГРОМНЫХ SQL-запросов: см. мою тему https://owen.ru/forum/showthread.php?t=39810
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot