Страница 1 из 1
В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Пт сен 25, 2015 1:07 pm
ota-elena
Добрый день!
В скрипте использую метод mSendPrivateMessage и мне нужно, чтобы на выходе пользователь от бота получил сообщение такого вида:
Платеж №1 не отправлен
Платеж №2 не отправлен
Пишу s:=text1+#13#10+text2;
В итоге получаю
Сообщение от Бота: Платеж №1 не отправлен
<пустая строка>
то есть text1+#13#10 отработал, а дальше текст не съел((( Что я делаю не так?
Re: В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Пт сен 25, 2015 1:37 pm
Алексей Пикуров
Здравствуйте.
В тексте просто вставьте слово [CRLF] — это и есть признак переноса строки.
Re: В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Вт сен 29, 2015 6:21 am
ota-elena
Спасибо! Получилось
Re: В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Пт сен 09, 2016 2:56 pm
Алексей Пикуров
Елена, в новой версии MyChat скриптовая функция mSendPrivateMessage была изменена, пожалуйста, учтите это и переделайте свои скрипты.
Справка
Re: В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Пт сен 09, 2016 3:01 pm
Алексей Пикуров
Елена, в новой версии MyChat скриптовая функция mSendPrivateMessage была изменена, пожалуйста, учтите это и переделайте свои скрипты. Вставка константы для переноса строки уже не нужна, можно воспользоваться специальной функцией, а можно просто добавить #13#10, как вам удобнее. Классика, в общем
Справка
Re: В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Чт сен 29, 2016 6:32 am
ota-elena
Поздно увидела ваше сообщение, уже успела новую тему создать.
Спасибо за ответ, пойду исправлять свои тексты((
Re: В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Чт сен 29, 2016 6:52 am
ota-elena
Не получается, такая же ошибка, как и в теме поста
Исходный файл такого вида:
2 3 Задача №
24421 от 09.10.15 была изменена. Состояние - Выполнена
Сообщение пользователю приходит только Задача № и больше текста нет
Re: В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Чт сен 29, 2016 7:11 am
ota-elena
Делаю как в пример
https://nsoft-s.com/mcserverhelp/ s := s + CRLF + 'OS: ' то есть в самом скрипте прописываю перенос строки - то же самое, после пусто (((
Или я что-то не так делаю, может у меня моя обработка текстового файла не верная для измененных методов? раньше же усе работалоооо
Re: В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Чт сен 29, 2016 8:50 am
Алексей Пикуров
Покажите исходный текст своего скрипта полностью, пожалуйста.
Re: В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Чт сен 29, 2016 8:52 am
ota-elena
да я уже залезла в скрипт, правлю (там так все коряво) - сейчас попробую подправить
Re: В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Чт сен 29, 2016 9:12 am
ota-elena
В общем имеем текст типа (поставила разделитель | свой, чтобы парсить текст)
2 Сервис-менеджеру.|В заявке 131357 от 26.09.16 Возможно статутс:Вып_частично.решение не найдено.Открывали памятку по эскалации
Надо текст, что после | имел перенос строки
Ковыряю код
if FileExists(nameFile1) then begin
x1:=GetTextFileLinesCount(nameFile1);
for i1:=1 to x1 do begin
LoadLineFromFile(nameFile1,i1,s1);
n1:=pos(' ',s1);
uin0:=strtoint(copy(s1,1,n1-1)); // здесь получатель
delete(s1,1,n1);
zx:=pos('|',s1);
st_message_begin:=copy(s1,1,zx-1);
st_message1:=st_message_begin; // то, что до |
delete(s1,1,zx);
st_message1:=st_message1+CRLF+s1;
MSendPrivateMessage(uin11,uin0,st_message1,21,true);
end;
В итоге получает пользователь сообщение вида
[Чт 29 сен 13:05:46] SpamBot> Сервис-менеджеру.
В заявке 131357 от 26.09.16 Возможно статутс:Вып_частично.решение не найдено.Открывали памятку по эскалации
Re: В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Чт сен 29, 2016 9:15 am
Алексей Пикуров
В текстовом файле какой конкретно текст находится?
Re: В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Чт сен 29, 2016 9:31 am
ota-elena
Раньше был просто текст с прописанной константой разделителя и функция отправки его "понимала " в тексте, как свой язык.
2 Сервис-менеджеру.[CRLF] В заявке 131357 от 26.09.16 Возможно статутс:Вып_частично.решение не найдено.Открывали памятку по эскалации
После того, как добавился признак iMsgType integer тип приватного сообщения равный 21 в метод mSendPrivateMessage , все воспринимает система сплошным текстом
Re: В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Чт сен 29, 2016 9:39 am
Алексей Пикуров
Ок, сейчас напишу вам пример.
Re: В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Чт сен 29, 2016 11:40 am
ota-elena
Спасибо, жду
В принципе можно и без переноса, но для визуального понимания пользователю лучше "разбивать текст"
Re: В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Чт сен 29, 2016 11:41 am
Алексей Пикуров
Ждите, делаю ещё функцию чтения из файла, чтобы не извращаться с построчным чтением, скоро всё будет

Re: В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Пт сен 30, 2016 11:50 am
Алексей Пикуров
Добрый день, Елена.
Написал скрипт, получилось вот так:
Код: Выделить всё// ---------------------------------------
// Script created by Алексей Пикуров (UIN 6)
// 30.09.2016 11:16:43
// ---------------------------------------
const
FILE_NAME = 'C:\Temp\message.txt';
var
sMsg, sCurrentLine, sOut: string;
iUINTo: integer;
begin
if FileExists(FILE_NAME) then begin
sMsg := trim(LoadTextFromFile(FILE_NAME, 6)); // текстовый файл в UTF-8
while length(sMsg) > 0 do begin
sCurrentLine := getnextst(sMsg, CRLF);
iUINTo := strtoint(getnextst(sCurrentLine, ' '));
sOut := ReplaceString(sCurrentLine, '|', CRLF, true, false);
mSendPrivateMessage(0, iUINTo, sOut, 10, true);
end;
DeleteFile(FILE_NAME);
end;
end.
Он читает строки из текстового файла, каждая строка может быть отдельным сообщением. Выбирает оттуда UIN, кому отправлять и остаток отправляет многострочным текстом. Затем удаляет исходный файл.
Выглядит это так:
testscriptfromfile.png
Сам файл (в формате UTF-8, если у вас другая кодировка — поставьте в функции LoadTextFromFile нужную):
message.txt
Обновлённый сервер —
https://nsoft-s.com/files/mcserv.zipСправка по используемым функциям — на сайте:
https://nsoft-s.com/mcserverhelp/index. ... ctions.htmКлиентов обновлять не нужно, версия та же, 5.22.1, обновить только сервер, поверху.
Re: В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Пт сен 30, 2016 12:37 pm
ota-elena
Спасибо большое!!!
"Ура,заработало (с)",
кодировку поставила 0 (как есть)
Re: В скрипте прописана строка с переносом строк, но при получении сообщения видно только первую часть строки

Добавлено:
Пт сен 30, 2016 12:38 pm
Алексей Пикуров
Ок, работайте на здоровье
