|
Страници по тази тема: 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.
| |
|
При мен всичко изглежда ОК:
\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 | >> (покажи всички)
|
|
|