Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 00:16 30.06.24 
Компютри и Интернет
   >> Delphi
Всички теми Следваща тема *Кратък преглед

Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема TRichEdit misbehaviorнови  
Автор bass (so deep!)
Публикувано15.05.03 21:46



Hi all. Запънах на поредния малоумен проблем (след "Ъх че досадно..." преди време :-) ).
Имаме форма с TRichEdit (reDoc) и TEdit (edtKey). Попълваме reDoc с текста 'Това е тест'; Следва опростен пример за илюстрация:

{some code here}
edtKey.Text := 'тест';
reDoc.SetFocus();
reDoc.SelStart := reDoc.FindText('тест', 0, Length(reDoc.Text), []); -> SelStart = -1, не го намира
reDoc.SelStart := reDoc.FindText(edtKey.Text, 0, Length(reDoc.Text), []); -> SelStart = -1, не го намира

{заменям на ръка в edtKey коя да е буква със същата - просто фиктивна промяна}
reDoc.SelStart := reDoc.FindText(edtKey.Text, 0, Length(reDoc.Text), []); -> SelStart = 7, OK
reDoc.SelStart := reDoc.FindText('тест', 0, Length(reDoc.Text), []); -> SelStart = 7, пак OK

btw, тоя номер го прави само за кирилския текст :-)

Преди време правих нещо аналогично и не помня да е имало подобен проблем. Говорим за Delphi 6 и в двата случая.

Редактирано от bass на 15.05.03 21:51.



Тема Re: TRichEdit misbehaviorнови [re: bass]  
Автор Waz Gaa (_)
Публикувано16.05.03 17:31



Bi sledvalo problema da ne e v RichEdit-a , a v :

> edtKey.Text := 'тест'

by Waz Gaa



Тема Re: TRichEdit misbehaviorнови [re: Waz Gaa]  
Автор bass (so deep!)
Публикувано16.05.03 20:40



Кое не ти харесва тук? Имаш предвид грешно изписване и/или интервали и/или други спец. символи? Както казах, това е силно опростен пример. В програмата ключовите думи се взимат даже от самия reDoc :-))
Това
reDoc.SelStart := 0; reDoc.SelLength := 4;
edtKey.Text := reDoc.SelText;
reDoc.SelStart := reDoc.FindText(edtKey.Text, 0, Length(reDoc.Lines.Text), []);
пак връща -1.
Напиша ли нещо на ръка и го пусна за търсене, винаги го намира и след това всичко тръгва ок :-\\



Тема Re: TRichEdit misbehavior [re: bass]  
Автор Waz Gaa (_)
Публикувано20.05.03 17:11



Ами така е, има някакъв проблем с EM_FINDTEXT. Хубаво е се провери как се държи под Windows 9x/ME. С удоволствие бих писал в newgroups на MS за проблема, но искам да видя дали не е нещо свързано с Unicode...

При мен връща дължината на текста (отива накрая).

-- след още малко тестове ми се вижда да е нещо свързано с Unicode

by Waz Gaa

Редактирано от Waz Gaa на 20.05.03 17:20.



Тема Re: TRichEdit misbehaviorнови [re: Waz Gaa]  
Автор bass (so deep!)
Публикувано20.05.03 17:19



А, за отиването накрая - и при мен е така, но като погледна SelStart, стойността му е -1. Според мен просто така са приели да се отработва SelStart := -1.
И сега, за да е пълна лудницата: Изкопах приложението, ползващо подобна техника, за което споменах. То си върви коректно. Гледах ред по ред това, което съм направил там и в новото App, копирах основната част от кода - пак не ще :-((.
Лошото е, че вече ми се изчерпаха и идеите за тестове :-\\
Сега ще пробвам директно с WinAPI да видя кво ще стане...



Тема Re: TRichEdit misbehaviorнови [re: bass]  
Автор Waz Gaa (_)
Публикувано20.05.03 17:27



Ами аз пробвах директно EM_FINDTEXT, все тая (то си е преведено към интерфейса на RichEdit-a)

Ти с какъв Windows, Delphi пробваш ? Аз съм с 7-цата под XP

by Waz Gaa



Тема Re: TRichEdit misbehaviorнови [re: Waz Gaa]  
Автор bass (so deep!)
Публикувано20.05.03 17:57



Delphi 6/WinXP.
След малко ще пробвам под 98.
BTW, ей това, както и ти си забелязал, се държи по същия начин:

{uText is FINDTEXTA}
uText.chrg.cpMin := 0;
uText.chrg.cpMax := Length(DocText.Lines.Text);
uText.lpstrText := PChar('тест');
doctext.SelStart := DocText.Perform(EM_FINDTEXT, 0, LPARAM(@uText));

Редактирано от bass на 20.05.03 18:12.



Тема В Win98...нови [re: bass]  
Автор bass (so deep!)
Публикувано20.05.03 18:11



...също не ще.
Освен това:
1. Оказа се, че "работещото" приложение спира да работи, когато заредя някакъв текст с DocText.Lines.LoadFromFile() или DocText.Lines.Text := 'something' вместо да го въвеждам на ръка;
2. Разгледах RTF-а, генериран от DocText (и ползван вътрешно от контрола) и ми направи впечатление, че използваната кодова таблица е 1252, а не 1251 (при DEFAULT_CHARSET. RegionalSettings на Win-а са Bulgarian без външна кирилица).

Редактирано от bass на 20.05.03 19:49.



Тема Re: В Win98...нови [re: bass]  
Автор Waz Gaa (_)
Публикувано22.05.03 13:12



При мен всичко изглежда ОК:

\ansicpg1251

Когато си пиша ръчно текста ми слага и смените на езика:

\lang1033\f1 erereredfdfdfd\lang1026\f2\'e0\'ee\'e0\'ee\'e0

Под ХР нагласен ли ти е "Language for non-Unicode applications" на български ?

by Waz Gaa



Тема Re: В Win98...нови [re: Waz Gaa]  
Автор bass (so deep!)
Публикувано22.05.03 13:32



За Language for non-Unicode applications - Да.
Сега пробвах с една чисто нова форма експорта към RTF и (изненада!) - 1251!
Разликата с основното приложение е, че в него сетвам в рънтайм друг шрифт (Arial) на TRichEdit-a. Гледам, че се е ориентирал кой сет от шрифта да ползва (Arial Cyrillic), но ще погледна дали не е от това...
Както и да е, и тестовото приложение с правилната кодова таблица се държи по същия странен начин.

Редактирано от bass на 22.05.03 13:33.




Страници по тази тема: 1 | 2 | >> (покажи всички)
Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.