Вверх ↑
Этот топик читают: Гость
Ответов: 322
Рейтинг: 8
#1: 2018-10-10 13:01:44 ЛС | профиль | цитата
Привет всем.
После формирования строки, если за русскими буквами ставишь любой символ их заменяет на непонятно что.
Без символа:
1.png
С символом-"\":
2.png
Помогите кто сталкивался с такой ситуацией.
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 4621
Рейтинг: 746
#2: 2018-10-10 13:07:03 ЛС | профиль | цитата
1) Пробуй 2 слеша - "\\"
2) Пробуй другой символ, вместо "\", например, "/"
карма: 26

0
Ответов: 322
Рейтинг: 8
#3: 2018-10-10 13:16:50 ЛС | профиль | цитата
Netspirit писал(а):
1) Пробуй 2 слеша - "\\"
2) Пробуй другой символ, вместо "\", например, "/"

Уже разные варианты перепробовал, всё равно коверкает.
С этим уже не первый раз встречаюсь.

--- Добавлено в 2018-10-10 13:21:50

Программа: (https://ru.files.fm/u/6d5jytb4)

В программе нужно создать вкладки (2 достаточно)
открыть любую вкладку
в нижней строке написать любые буквы нажать на кнопку (повторить 2 раза)
переключится на другую вкладку и обратно
После этого при сохранении строки программа коверкает буквы на символы.

Самое главное: цифры и английские буквы не коверкает!

Редактировалось 4 раз(а), последний 2018-10-10 13:31:30
карма: 0

0
Ответов: 4621
Рейтинг: 746
#4: 2018-10-10 14:11:47 ЛС | профиль | цитата
Удаляй по-очереди все компоненты, пока не выяснишь в каком компоненте происходит глюк. Делаешь минимальную схемку, в которой можно нажать на кнопку и увидеть проблему. Выложишь её сюда.
карма: 26

0
Ответов: 322
Рейтинг: 8
#5: 2018-10-10 14:59:42 ЛС | профиль | цитата
Нашёл в схеме компонент который коверкает - MT_MTArrayRW
выкладываю кусок программы

Add(MainForm,2953706,280,203)
{
Width=610
Height=144
}
Add(MultiElement,13981914,406,273)
{
link(onEvent1,11369235:doAdd,[])
link(Data1,12524872:Count,[])
link(Data2,12524872:Array,[])
}
BEGIN_SDK
Add(EditMulti,11143823,21,21)
{
EventCount=1
WorkCount=1
DataCount=2
Width=461
link(doWork1,6005182:doEvent1,[])
}
Add(MultiElement,13154562,77,112)
{
link(onEvent1,305587:doValue,[])
link(onEvent2,7382753:doData,[(117,125)(117,181)])
link(Data1,11143823:Data1,[(83,63)(27,63)])
link(Data2,11143823:Data2,[(90,58)(34,58)])
}
BEGIN_SDK
Add(EditMulti,2067573,21,21)
{
EventCount=2
WorkCount=1
DataCount=2
Width=496
Height=109
link(doWork1,13463841:doEvent1,[(39,27)(39,83)])
}
Add(MT_MTArrayRW,11194375,413,84)
{
link(onRead,2067573:onEvent1,[(454,90)(454,27)])
link(Array,2067573:Data2,[(419,51)(34,51)])
}
Add(Math,11825494,112,70)
{
Op2=1
Point(doClear)
link(onResult,13606915:doEvent1,[])
link(Op1,1113083:Value,[(118,58)(152,58)(152,113)(195,113)])
}
Add(Math,1242406,287,77)
{
OpType=1
Op2=1
link(onResult,682634:doCompare,[])
}
Add(If_else,682634,336,77)
{
Type=2
link(onTrue,2067573:onEvent2,[(466,83)(466,34)])
link(onFalse,296717:doEvent1,[])
link(Op2,2067573:Data1,[(349,60)(27,60)])
}
Add(Hub,13463841,49,77)
{
OutCount=3
link(onEvent1,11825494:doClear,[])
link(onEvent2,1435850:doClear,[(84,90)(84,34)])
link(onEvent3,2214984:doEvent1,[])
}
Add(Hub,2214984,77,91)
{
InCount=2
OutCount=1
link(onEvent1,11825494:doOperation,[(104,97)(104,76)])
}
Add(Hub,296717,378,84)
{
link(onEvent1,11194375:doRead,[])
link(onEvent2,2214984:doEvent2,[(401,97)(401,115)(65,115)(65,104)])
}
Add(Memory,1113083,189,70)
{
link(onData,4374642:doCompare,[])
}
Add(Hub,13606915,161,70)
{
InCount=2
OutCount=1
link(onEvent1,1113083:doValue,[])
}
Add(Memory,1435850,105,21)
{
Default=Integer(0)
link(onData,13606915:doEvent2,[(149,27)(149,83)])
}
Add(If_else,4374642,238,70)
{
Op2=Integer(0)
link(onFalse,1242406:doOperation,[])
}
END_SDK
Add(FormatStr,10608961,182,112)
{
Mask="%1_%2"
Point(FString)
link(onFString,2473008:doSplit,[])
link(Str2,9669325:Var1,[(195,100)(332,100)(332,164)])
}
Add(MT_Memory,272861,420,119)
{
}
Add(If_else,859088,287,112)
{
Op2=Integer(0)
link(onTrue,9072966:doData,[(327,118)(327,62)])
link(onFalse,8062979:doData,[])
}
Add(DoData,8062979,336,119)
{
link(onEventData,6513820:doEvent1,[])
link(Data,10608961:FString,[(342,107)(282,107)(282,159)(188,159)])
}
Add(DoData,9072966,336,56)
{
link(onEventData,6513820:doEvent3,[(379,62)(379,139)])
link(Data,305587:Value,[(342,39)(224,39)(224,172)(139,172)])
}
Add(MT_Memory,305587,133,112)
{
link(onData,10608961:doString,[])
}
Add(DoData,7382753,420,175)
{
link(onEventData,11143823:onEvent1,[(467,181)(467,27)])
link(Data,9669325:Var2,[])
}
Add(GetDataEx,9669325,420,159)
{
link(Data,272861:Value,[])
}
Add(Memory,5163133,140,28)
{
Default=Integer(0)
link(onData,6513820:doEvent2,[(385,34)(385,132)])
}
Add(Hub,6005182,49,21)
{
link(onEvent1,5163133:doClear,[(101,27)(101,41)])
link(onEvent2,13154562:doWork1,[(70,34)(70,118)])
}
Add(StrPart,2473008,231,112)
{
Char="_"
link(onSplit,859088:doCompare,[])
}
Add(Hub,6513820,392,119)
{
InCount=3
OutCount=1
link(onEvent1,272861:doValue,[])
}
END_SDK
Add(Button,4963711,343,273)
{
Left=295
Top=75
Caption="Далее"
link(onClick,13981914:doWork1,[])
}
Add(RichEdit,11369235,469,273)
{
Left=355
Top=15
Width=205
}
Add(Label,11130996,301,133)
{
Left=35
Top=5
Width=149
Height=17
Caption="В этом окне написать слова"
}
Add(RichEdit,12524872,399,203)
{
Left=5
Top=20
Width=205
}

--- Добавлено в 2018-10-10 15:10:14


Add(MainForm,2953706,280,203)
{
Width=610
Height=144
}
Add(Button,4963711,343,273)
{
Left=295
Top=75
Caption="Далее"
Data=Integer(0)
link(onClick,281683:doRead,[])
}
Add(RichEdit,11369235,469,273)
{
Left=355
Top=15
Width=205
}
Add(Label,11130996,301,133)
{
Left=35
Top=5
Width=149
Height=17
Caption="В этом окне написать слова"
}
Add(RichEdit,12524872,399,203)
{
Left=5
Top=20
Width=205
}
Add(MT_MTArrayRW,281683,413,273)
{
link(onRead,11369235:doAdd,[])
link(Array,12524872:Array,[])
}


Редактировалось 1 раз(а), последний 2018-10-10 15:10:14
карма: 0

0
Ответов: 4621
Рейтинг: 746
#6: 2018-10-10 15:11:54 ЛС | профиль | цитата
Что здесь нужно увидеть?

карма: 26

0
Ответов: 322
Рейтинг: 8
#7: 2018-10-10 15:19:28 ЛС | профиль | цитата
Во втором окне вместо русских букв цифры!!!

--- Добавлено в 2018-10-10 15:19:54

Попробуй только русскими буквами писать

--- Добавлено в 2018-10-10 15:24:34

Во втором примере проще

Редактировалось 2 раз(а), последний 2018-10-10 15:24:34
карма: 0

0
Ответов: 4621
Рейтинг: 746
#8: 2018-10-10 15:26:10 ЛС | профиль | цитата
Зачем используются компоненты вкладки "MT потоки"? Используй "Memory" ("Инструменты"), "ArrayEnum" "ArrayRW" ("Массивы").
Опиши словами что должна делать схема. Объединить строки списка через разделитель в обратном порядке?

--- Добавлено в 2018-10-10 15:44:09

Решение - не использовать RichEdit.


Народ, а с каких пор у нас ArrayEnum + RichEdit не дружат с русскими буквами?
Add(RichEdit,12524872,266,140)
{
Left=10
Top=10
Width=90
Height=85
Strings=#3:aaa|3:bbb|3:ccc|3:абв|3:где|
}
Add(RichEdit,11369235,364,217)
{
Left=120
Top=10
Width=110
Height=85
}
Add(Button,13955069,224,217)
{
Left=10
Top=105
link(onClick,608074:doEnum,[])
}
Add(ArrayEnum,608074,280,217)
{
link(onItem,11369235:doAdd,[])
link(Array,12524872:Array,[])
}

Редактировалось 2 раз(а), последний 2018-10-10 15:44:09
карма: 26

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#9: 2018-10-10 16:23:58 ЛС | профиль | цитата
Netspirit писал(а):
Народ, а с каких пор у нас ArrayEnum + RichEdit не дружат с русскими буквами?

ЕМНИП, то так всегда было.
карма: 22

0
Ответов: 322
Рейтинг: 8
#10: 2018-10-10 17:53:18 ЛС | профиль | цитата
Netspirit писал(а):
Опиши словами что должна делать схема

Вообщем это кусок программы от общалки по интернету.
Приходит новое сообщение от контакта - появляется вкладка с сообщением.
Или я хочу отправить - выбираю в контактах жму написать и открывается новая вкладка с будущим чатом.
Вот этот кусок как раз в себе собирает все сообщения и если нажать определённую закладку выдает именно то общение чей логин на вкладке.
В окне чата находится переписка (1 строка, 2 строка и т.д.), а сохранить в памяти нужно всё в одну строку. Да и ещё если общение продолжается нужно заменять уже созданную ранее строку на новую, потом по запросу программы данные нужно опять выдать в окно чата (1 строка, 2 строка и т.д.).
В проге (ранее выкладывал ссылку) я этого добился, но кубик - MT_MTArrayRW начал коверкать русские буквы.
Буду пробовать искать аналог этому кубику.

--- Добавлено в 2018-10-10 18:02:58

Использовал Memo вместо RichEdit.
Всё работает отлично!
Netspirit писал(а):
ArrayEnum + RichEdit не дружат с русскими буквами

спасибо за подсказку.
Не пришлось искать аналог кубику MT_MTArrayRW

Редактировалось 3 раз(а), последний 2018-10-10 18:04:04
карма: 0

0
Ответов: 8887
Рейтинг: 823
#11: 2018-10-10 18:06:38 ЛС | профиль | цитата
Dad2016, всякие рюшечки с подсветкой в RichEdit конечно очень важны для программы, где там обычному Memo
Но если очень хочется:
хотелка с подкруткой


Add(RichEdit,12524872,350,70)
{
Left=10
Top=10
Width=90
Height=85
Strings=#3:aaa|3:bbb|3:ccc|3:абв|3:где|
}
Add(RichEdit,11369235,462,140)
{
Left=120
Top=10
Width=110
Height=85
}
Add(Button,13955069,301,140)
{
Left=10
Top=105
link(onClick,10422696:doReplace,[])
}
Add(Str_Enum,12470620,399,140)
{
Delimiter="#"
link(onEnum,11369235:doAdd,[])
}
Add(Replace,10422696,350,140)
{
SubStr="\10\13"
DestStr="#"
link(onReplace,12470620:doEnum,[])
link(Str,12524872:Text,[])
}

карма: 19

0
Ответов: 322
Рейтинг: 8
#12: 2018-10-10 18:10:19 ЛС | профиль | цитата
Леонид писал(а):
Но если очень хочется:

Огромное спасибо.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#13: 2018-10-10 20:59:46 ЛС | профиль | цитата
Леонид, я чего-то не понимаю ?
Add(MainForm,2953706,161,126)
{
}
Add(RichEdit,12524872,315,126)
{
Left=10
Top=10
Width=90
Height=85
Strings=#3:aaa|3:bbb|3:ccc|3:абв|3:где|
}
Add(RichEdit,11369235,315,182)
{
Left=120
Top=10
Width=110
Height=85
link(Str,12524872:Text,[])
}
Add(Button,13955069,154,182)
{
Left=10
Top=105
link(onClick,11369235:doAdd,[])
}
Add(Str_Enum,12470620,259,245)
{
Delimiter="#"
}
Add(Replace,10422696,210,245)
{
SubStr="\10\13"
DestStr="#"
}

Вот это что
SubStr="\10\13"


Редактировалось 1 раз(а), последний 2018-10-10 21:00:28
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8887
Рейтинг: 823
#14: 2018-10-10 21:23:41 ЛС | профиль | цитата
Tad, там же автор (кстати, кто это?) обозначил:
Автор писал(а):
Символ-разделитель. Если не задан, то строка перебирается группами символов с шагом Step
Вот если бы там было "..строка-разделитель..", то и менять два символа на один не пришлось
А может я чего и не знаю
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#15: 2018-10-11 08:18:54 ЛС | профиль | цитата
Tad писал(а):
Вот это что
SubStr="\10\13"
В Windows такого нет.
В Windows есть \13\10.
Так что у Вас там никакой заменой даже не пахнет.

Редактировалось 1 раз(а), последний 2018-10-11 08:50:40
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)