Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26149
Рейтинг: 2127
#31: 2013-05-23 19:47:39 ЛС | профиль | цитата
Galkov писал(а):
Про фикс добавления пустой строки в Memo - чего молчишь ???

Добавил я его
------------ Дoбавленo в 19.47:
Aziz писал(а):
У меня вот что выдает:

Да, точно, есть такое. Чссзать -- черт его знает почему так выдает Без понятия. Я даже не понял, что это за кодировка
карма: 22

0
Ответов: 9906
Рейтинг: 351
#32: 2013-05-23 19:48:40 ЛС | профиль | цитата
А про точку Array у RichEdit.
У меня какое-то де-жа-вю, что так (кодовое слово - "кракозябры") было с незапамятных времен. И мы не фига не знали, как это забороть.

У тебя они же, или я чего-то не обновил
------------ Дoбавленo в 19.48:
Понял, будем считать, что ответил
карма: 9

0
Ответов: 1291
Рейтинг: 47
#33: 2013-05-24 10:42:54 ЛС | профиль | цитата
nesco писал(а):
Да, точно, есть такое. Чссзать -- черт его знает почему так выдает Без понятия. Я даже не понял, что это за кодировка

Хиасм, вообще программирование - неисчерпаемы на загадки - получше шахмат - за что я их и люблю.. Есть над чем голову ломать)) В этом мире все просто - есть Бог, есть я, есть другие. (кстати, я смотрю на мир с т.зр. объектного прогр-я - все вокруг, даже красивые девушки - являются всего лишь объектами, с внешними и внутренними свойствами ) А в кодинге - сам черт ногу сломит..))
------------ Дoбавленo в 10.25:
Вот еще задачка всплыла - как заставить Replace заменять точное вхождение строки "строка", а не все подряд?


Add(Button,8557857,78,179)
{
Left=40
Top=150
Width=90
Caption="Replace"
link(onClick,15133467:doReplace,[(123,185)(123,132)])
}
Add(Memo,5266467,532,14)
{
Left=15
Top=5
Width=410
Height=125
Strings=#36:Как сделать точную замену подстроки?|49:Точная строка подлежащая замене (слово "строка").|63:Неточнаястрока,конкатенированная, которая не должна заменяться.|
}
Add(Replace,15133467,539,126)
{
SubStr="строка"
DestStr="замена"
link(onReplace,1084182:doWork3,[(578,132)])
link(Str,5266467:Text,[(545,117)(538,117)])
}
Add(Button,6865157,90,290)
{
Left=180
Top=150
Width=90
Caption="Reset"
link(onClick,10879748:doData,[(529,296)(529,272)])
}
Add(StrList,13772903,539,203)
{
Strings=#36:Как сделать точную замену подстроки?|49:Точная строка подлежащая замене (слово "строка").|63:Неточнаястрока,конкатенированная, которая не должна заменяться.|
}
Add(DoData,10879748,539,266)
{
link(onEventData,1084182:doWork1,[(585,272)(585,118)])
link(Data,13772903:Text,[])
}
Add(HubEx,1084182,574,112)
{
Angle=3
link(onEvent,5266467:doText,[(578,111)(522,111)(522,41)])
}

------------ Дoбавленo в 10.42:
Чего-то стормозил - достаточно выполнить поиск строки с пробелом для решения данной задачи. Но все равно, неплохо добавить в компонент данный функционал поиска и замены точного вхождения подстроки в виде булевого свойства Точнаянеточная замена. Включаю в to do list, если никто раньше не сделает.

Add(Button,8557857,78,179)
{
Left=40
Top=150
Width=90
Caption="Replace"
link(onClick,15133467:doReplace,[(123,185)(123,132)])
}
Add(Memo,5266467,532,14)
{
Left=15
Top=5
Width=410
Height=125
Strings=#36:Как сделать точную замену подстроки?|49:Точная строка подлежащая замене (слово "строка").|63:Неточнаястрока,конкатенированная, которая не должна заменяться.|
}
Add(Replace,15133467,539,126)
{
SubStr=" строка"
DestStr=" замена"
link(onReplace,1084182:doWork3,[(578,132)])
link(Str,5266467:Text,[(545,117)(538,117)])
}
Add(Button,6865157,90,290)
{
Left=180
Top=150
Width=90
Caption="Reset"
link(onClick,10879748:doData,[(529,296)(529,272)])
}
Add(StrList,13772903,539,203)
{
Strings=#36:Как сделать точную замену подстроки?|49:Точная строка подлежащая замене (слово "строка").|63:Неточнаястрока,конкатенированная, которая не должна заменяться.|
}
Add(DoData,10879748,539,266)
{
link(onEventData,1084182:doWork1,[(585,272)(585,118)])
link(Data,13772903:Text,[])
}
Add(HubEx,1084182,574,112)
{
Angle=3
link(onEvent,5266467:doText,[(578,111)(522,111)(522,41)])
}


карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 9906
Рейтинг: 351
#34: 2013-05-24 11:21:49 ЛС | профиль | цитата
Aziz писал(а):
неплохо добавить в компонент данный функционал поиска и замены точного вхождения

Это другая задача.
Название у нее - лексический анализ. Несколько более сложная, чем просто добавить булеву переменную.
Народ отдельные программы на эту тему ваяет. Скажем, гнутый вариант - flex называется.

Вот Вы думаете, что <слово> в кавычках заменять не надо, а кто-то другой будет думать, что - надо. И чего, холивары что ли устраивать будем.

Да нет наверное. Закладывать в элементы функционал надо только абсолютно надежный, а не пришедший в голову в первые пять минут.
Чтобы не икалось потом, когда тебя будет вспоминать тот, кто борется с твоим "интеллектом".
Незлым тихим словом.
карма: 9

0
Ответов: 1291
Рейтинг: 47
#35: 2013-05-24 12:18:39 ЛС | профиль | цитата
Ясно.. Но первое что мне пришло в голову как это реализовать - сравнивать длину искомой строки с длиной паттерна - если больше - не заменять. Хотя и там придется проводить анализ что считать частью искомой строки, пробелы и тп.
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 4630
Рейтинг: 749
#36: 2013-05-24 13:39:47 ЛС | профиль | цитата
nesco писал(а):
черт его знает почему так выдает?

Похоже, RichEdit как-то иначе обрабатывает EM_GETLINE в процедуре TControl.GetItems (которое пришло из RichEditActions.aGetItemText). Тогда как EM_GETTEXTRANGE работает нормально.
карма: 26

0
Ответов: 9906
Рейтинг: 351
#37: 2013-05-24 14:12:21 ЛС | профиль | цитата
Это-то понятно...
Надо посмотреть, чего там в новых KOL-ах на эту тему сделано.
Не исключено, что народ таки разобрался, чего вместо EM_GETLINE надо клеить.

Руки пока не доходят
карма: 9

0
Ответов: 4630
Рейтинг: 749
#38: 2013-05-24 14:18:24 ЛС | профиль | цитата
В новом KOL та же самая лажа. Судя по результатам EM_GETLINE в отладчике, для кириллических символов он тупо возвращает младший байт из двухбайтной кодировки. В обычном Delphi 7 - та же проблема. У нас можно попробовать переделать на использование EM_GETTEXTRANGE с ручным вычислением начала и конца строки.
карма: 26

0
файлы: 1em_getline.jpg [195.8KB] [417]
Ответов: 1291
Рейтинг: 47
#39: 2013-05-25 12:17:25 ЛС | профиль | цитата
Вот еще, странное поведение StrMask - мне нужно чтобы он учитывал пробелы в маске, а он ни в какую. Необходимо отфильтровать названия функций из кода. Чтобы любое изменение ключевого слова int (например, dint, dintf), вызывало его исчезновение из списка функций. Странно, что это работает только для последних функций в строке (int function3 () и int function4 ())

code_31093.txt
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
файлы: 1code_31093.txt [2KB] [367]
Ответов: 9906
Рейтинг: 351
#40: 2013-05-25 12:43:50 ЛС | профиль | цитата
Aziz писал(а):
Чтобы любое изменение ключевого слова int (например, dint, dintf), вызывало его исчезновение из списка функций. Странно, что это работает только для последних функций в строке (int function3 () и int function4 ())

Не подтверждается
4aziz1.png
------------ Дoбавленo в 12.43:
Aziz, мы были бы Вам благодарны за предварительную, все-таки - подготовку схемы.
Например, как на рисунке. А не так, как у Вас.

Настолько благодарны, что даже продолжили БЫ работу с Вами
карма: 9

0
файлы: 14aziz1.png [19.3KB] [477]
Ответов: 1291
Рейтинг: 47
#41: 2013-05-25 12:49:50 ЛС | профиль | цитата
Спасибо за совет, простите, но таков мой стиль, ничего не в силах с этим поделать. И в школе был троечником.. Не верите, посмотрите все мои схемы. Моя нейросеть хромает на оба полушария, руки трясет тремор, заикаюсь через 3 слова и хромаю на правую ногу, поэтому линк прямой провести или прямо поставить кубики в ряд - для меня сущая пытка..))
Схема примитивна и тестовая, поэтому я не счел нужным ее причесывать и вылизывать.

Galkov, а Вы попробуйте сделать точно как я посоветовал - изменить ключ. слово не в середине, а по краям. Тогда удастся воспроизвести баг-эффект. Так и у меня все работает.
Мне кажется, общественная польза от выявленных мной потенциальных багов в компонентах перевешивает всю сложность работы со мной и изучения моих корявых схем.. По сути я у вас бета-тестер, мне зп за это платить надо..))) Кто захочет - пожалуйста :

Payment options

You can pay via any 6 services provided below:

1. www.skrill.com: azizazizovГАВyandex.ru
2. www.liqpay.com: +79096382240
3. www.libertyreserve.com: U1531832
4. www.money.yandex.ru: 410011175743598
5. www.webmoney.ru: Z275478423152 or E422857176038 or R324079827144
6. www.paypal.com: azizazizovГАВyandex.ru

К тому же, благодаря этой теме, думаю многие новички научатся работать со строками и не наступать на мои грабли.
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 9906
Рейтинг: 351
#42: 2013-05-25 13:19:23 ЛС | профиль | цитата
Aziz писал(а):
Простите, но таков мой стиль, ничего не в силах с этим поделать

Не простим.
И Вы не у нас бета-тестер. Мы, во-первых: не делаем продукт, во-вторых: не на продажу.
Взрослый человек сделал свой выбор. Следовательно, он должен быть готов к тому, что его пошлют в нужное место.
Таков наш стиль: посылать людей, которым в лом ударить палец об палец, чтобы им же и помогли
И мы тоже ничего не можем с этим поделать.

Последний раз

Add(MainForm,13634123,56,84)
{
Width=366
Height=363
link(onCreate,13325167:doWork2,[])
}
Add(Memo,13250264,693,91)
{
Left=20
Top=175
Width=290
Height=125
ScrollBars=3
}
Add(BlockFind,13745764,588,112)
{
IncludeBlock=1
StartBlock=" int"
EndBlock="("
link(onSearch,12060721:doTrim,[])
}
Add(StrMask,16222505,441,126)
{
Mask=" int * ("
link(onFalse,3503107:doCompare,[])
link(onTrue,16393045:doWork2,[(480,139)(480,118)])
}
Add(Str_Enum,3826664,322,126)
{
Delimiter=""
link(onEnum,13525227:doStrCat,[])
}
Add(Trim,12060721,644,112)
{
Char=" "
link(onTrim,13250264:doAdd,[(683,118)(683,97)])
}
Add(StrCat,13525227,392,126)
{
Point(doClear)
link(onStrCat,16222505:doCompare,[])
link(Str1,13525227:Result,[(398,117)(433,117)(433,166)(398,166)])
}
Add(ArrayEnum,16087242,182,119)
{
link(onItem,10809708:doStrCat,[])
link(Array,2159207:Array,[])
}
Add(Hub,12503266,287,119)
{
link(onEvent1,11141638:doWork1,[(368,125)])
link(onEvent2,3826664:doEnum,[])
}
Add(StrMask,3503107,490,126)
{
Mask="* int * ("
CaseSensitive=0
link(onTrue,16393045:doWork3,[(529,139)])
}
Add(Memo,2159207,168,28)
{
Left=20
Top=10
Width=290
Height=125
Strings=#50:int function1 () int function2 () int function3 ()|16:int function4 ()|
ScrollBars=3
link(onChange,13325167:doWork1,[(207,34)(207,69)(130,69)])
}
Add(Hub,3311158,147,98)
{
link(onEvent1,13250264:doClear,[])
link(onEvent2,16087242:doEnum,[(172,111)(172,125)])
}
Add(HubEx,16393045,525,112)
{
link(onEvent,7224313:doEvent1,[])
}
Add(HubEx,13325167,126,98)
{
link(onEvent,3311158:doEvent1,[])
}
Add(Hub,7224313,553,112)
{
link(onEvent1,13745764:doSearch,[])
link(onEvent2,11141638:doWork3,[(578,125)(578,174)(368,174)])
}
Add(HubEx,11141638,364,133)
{
link(onEvent,13525227:doClear,[])
}
Add(StrCat,10809708,238,119)
{
Str1=" "
Point(doClear)
link(onStrCat,12503266:doEvent1,[])
}
Чего и почему - сам разбирайся

------------ Дoбавленo в 13.19:
nesco, закрывай тему к чертовой матери
Ну не хочет народ мыться - пусть ходит грязный
карма: 9

0
Ответов: 1291
Рейтинг: 47
#43: 2013-05-25 13:33:14 ЛС | профиль | цитата
[flood]А это уже эмоции.. Узнаю классический юмор от Galkov'a.)) A тема-то в чем виновата?
Прощайте и прощено будет (с).. Я никого не заставляю открывать мои схемы и помогать мне в чем-либо. Кому плохо при виде моей схемы - можно спокойно покинуть этот топик. Кто в силах как-то помочь - тому спасибо.[/flood]
Спасибо за правку, правда, все равно не полностью фильтрует:

code_31095.txt

[flood]Насчет омовения раз уж заговорили, - я кришнаит и вообще должен мыться 3 раза в день. Но моюсь 1 раз по утрам. Так что с этим все ок. Вы, наверное незнакомы с понятием ТВОРЧЕСТВО и ТВОРЧЕСКИЙ БЕСПОРЯДОК? Отчего он возникает иможно ли его избежать - это уже отдельная тема..[/flood]
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
файлы: 1code_31095.txt [1.8KB] [370]
Ответов: 16884
Рейтинг: 1239
#44: 2013-05-25 13:55:22 ЛС | профиль | цитата
Aziz, а так не работает ?
code_31096.txt
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_31096.txt [764B] [275]
Ответов: 9906
Рейтинг: 351
#45: 2013-05-25 14:04:34 ЛС | профиль | цитата
Aziz писал(а):
А это уже эмоции.. Тема-то в чем виновата?

Это не эмоции, а руководство к практическому действию. Например: закрыть тему, продолжать беседу с человеком, или - нет.
Еще например: если мне программист на работе расскажет аналогичным образом про свой стиль - он получит предупреждение о неполном служебном соответствии.
Абсолютно практические действия, и никаких эмоций: предприятию требуются сотрудники, результаты работы которых, предназначены не только для компа, но и для коллег. Даже - прежде всего для коллег.

Aziz писал(а):
правда, все равно не полностью фильтрует
Просто Вы не разобрались, почему оно раньше не работало.
Не разобрались, но выводы про StrMask уже сделали

Лишнее пропускал не StrMask (тем более, что сейчас один - уже лишний), а BlockFind. И сейчас он пропускает. Добавьте пробел в конец BlockFind.StartBlock - перестанет.

И вообще, проще все делается


Add(MainForm,13634123,119,77)
{
Width=366
Height=363
link(onCreate,13325167:doWork2,[])
}
Add(Memo,13250264,462,84)
{
Left=20
Top=175
Width=290
Height=125
ScrollBars=3
}
Add(BlockFind,13745764,357,98)
{
IncludeBlock=1
StartBlock=" int "
EndBlock="("
link(onSearch,12060721:doTrim,[])
}
Add(Str_Enum,3826664,308,98)
{
Delimiter=")"
link(onEnum,13745764:doSearch,[])
}
Add(Trim,12060721,406,98)
{
Char=" "
link(onTrim,13250264:doAdd,[(445,104)(445,90)])
}
Add(ArrayEnum,16087242,210,98)
{
link(onItem,10809708:doStrCat,[])
link(Array,2159207:Array,[])
}
Add(Memo,2159207,196,21)
{
Left=20
Top=10
Width=290
Height=125
Strings=#50:int function1 () int function2 () int function3 ()|16:int function4 ()|
ScrollBars=3
link(onChange,13325167:doWork1,[(235,27)(235,62)(165,62)])
}
Add(Hub,3311158,182,91)
{
link(onEvent1,13250264:doClear,[])
link(onEvent2,16087242:doEnum,[])
}
Add(HubEx,13325167,161,91)
{
link(onEvent,3311158:doEvent1,[])
}
Add(StrCat,10809708,259,98)
{
Str1=" "
Point(doClear)
link(onStrCat,3826664:doEnum,[])
}
карма: 9

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)