Вверх ↑
Этот топик читают: Гость
Ответов: 463
Рейтинг: 9
#1: 2010-10-02 15:56:57 ЛС | профиль | цитата
Приветствую, решил создать впервые в жизни свой компонент.
Задача: разбить строку на составляющие: цифры, буквы и знаки.
Соответствующий элемент строки посылается в соответствующий поток.

Применение :
как элемент ИИ по распознаванию текста , поиска орфографических ошибок и т.п.

Вопрос как оптимизировать блок распознавания знаков (не-цифра и не-буква) , использую FTCG -контейнер с набором if. А как еще можно решить такую задачку?
Пробовал с ascii - таблицей, но получается не намного меньше, так как в разных языках могут меняться коды ...

code_20873.txt

карма: 0

0
файлы: 1code_20873.txt [10.7KB] [156]
Разработчик
Ответов: 26163
Рейтинг: 2127
#2: 2010-10-02 17:19:22 ЛС | профиль | цитата
ajaxii писал(а):
так как в разных языках могут меняться коды ...

Назови хоть один язык, где положение знаков, цифр и букв в таблице ASCII отличается от общепринятого
карма: 22

0
Ответов: 2274
Рейтинг: 677
#3: 2010-10-02 17:31:18 ЛС | профиль | цитата
ajaxii писал(а):
как оптимизировать блок распознавания знаков

Так можно: code_20877.txt
карма: 11

1
файлы: 1code_20877.txt [1.3KB] [166]
Голосовали:ajaxii
Ответов: 16884
Рейтинг: 1239
#4: 2010-10-02 17:37:46 ЛС | профиль | цитата
ajaxii, вот из старых запасов выкопал. Может устроит.
code_20878.txt
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_20878.txt [930B] [143]
Ответов: 463
Рейтинг: 9
#5: 2010-10-02 17:40:07 ЛС | профиль | цитата
nesco, искал по форуму информацию , я тогда пробовал через эмуляцию клавиш делать, но прочитав http://hiasm.com/forum.html?q=3&p=112225
остановился и понял что сразу решение очень грубое получается. Я не программист, для меня все это мало понятно только методом проб и ошибок решаю свои задачи.

sla8a, спасибо большое, правда оригинальное решение все время про массивы забываю , еще раз спасибо за подсказку.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#6: 2010-10-02 17:41:15 ЛС | профиль | цитата
У меня оно компонентом, но для тебя перенёс в IC
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:ajaxii
Ответов: 463
Рейтинг: 9
#7: 2010-10-02 17:44:52 ЛС | профиль | цитата
Tad, Спасибо! Решение наверное оптимальное, на 1 элементе, но если не очень в Дельфях, то грубо говоря малообучающее(не схематичное) . Хотя есть тут намек - учить Дельфи и IC


Кстати, а есть справка по IC&

карма: 0

0
Ответов: 16884
Рейтинг: 1239
#8: 2010-10-02 17:56:26 ЛС | профиль | цитата
ajaxii писал(а):
грубо говоря малообучающее
с какой стороны посмотреть
Вот так будет работать быстрее и более обучающе .

Add(InlineCode,4594040,140,105)
{
WorkPoints=#5:doSel|
EventPoints=#4:SelD|4:SelA|4:SelR|4:SelZ|
DataPoints=#3:Str|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|18: SelD:THI_Event;|18: SelA:THI_Event;|18: SelR:THI_Event;|18: SelZ:THI_Event;|17: Str:THI_Event;|48: Procedure doSel(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|28:Procedure THiAsmClass.doSel;|13:var s:string;|14: i:integer;|5:begin|77: s:=ReadString(_Data,Str,''); //читаем строку из потока или верхней точки|80: If s='' then exit; // если строка пустая, то выходим из процедуры|57: For i:=1 to Length(s) do // берём по одной букве|8: begin|54: If s[i] in['0'..'9'] then // проверка на цифры|12: begin |31: _hi_onEvent(SelD,s[i]); |17: Continue; |9: end|70: else if s[i] in['A'..'Z','a'..'z'] then // проверка на английский|12: begin |31: _hi_onEvent(SelA,s[i]); |17: Continue; |9: end|67: else if s[i] in['А'..'Я','а'..'я'] then // проверка на русский|12: begin |44: _hi_onEvent(SelR,s[i]); |17: Continue; |9: end|45: else _hi_onEvent(SelZ,s[i]); // знаки|7: end;|0:|4:end;|4:end.|
}

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Гость
Ответов: 17029
Рейтинг: 0
#9: 2010-10-02 18:04:53 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-09 10:27:55
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#10: 2010-10-02 18:13:27 ЛС | профиль | цитата
av23850.comex.ru писал(а):
А где есть справочка про IC и что это такое?
IC - это оболочка для кодов на языке Pascal, которой можно определить точки входа и выхода. Получается нужный "компонент" которого, по каким-то причинам нет в стандартной поставке.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 463
Рейтинг: 9
#11: 2010-10-02 18:23:03 ЛС | профиль | цитата
[flood]Tad, можно хоть скрин что за оболочка и где ее брать? Хочу определиться, и посмотреть. Странно, почему нет до сих пор какого-нибудь билдера для написания таких вот скриптов?
[/flood]
карма: 0

0
Ответов: 3349
Рейтинг: 233
#12: 2010-10-02 18:27:30 ЛС | профиль | цитата
ajaxii, эти "скрипты" пишутся ручками. Вообще это не скрипт а код, на языке object pascal(delphi).
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#13: 2010-10-02 18:30:50 ЛС | профиль | цитата
Брать - Помощники->Языки->InLineCode
Пишешь вручную
Посмотри еще раз на то, что я выложил четырьмя постами выше. Там прокоментировал. Получилось более обучающе.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
13
Сообщение
...
Прикрепленные файлы
(файлы не залиты)