Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выделение слова из строки [D5, Win95/98]


VID ©   (2001-12-22 16:28:00) 

Здравствуйте!
У меня часто возникала проблемы выделения текста в RichEdit.
Т.е. фактически нужна функция
Type TCurrentText = record
CurrentText:String; //Выделеное слово
Pos:Integer; //Поцизия начала слова в строке текста
Length:Integer; //Длина найденного слова.
end;

Function GetCurrentText(CurrentPOS:Integer; TextSource:String):TCurrentTEXT;

Эта функция должна возвращать все данные типа TCurrentTEXT.
ОПИСАНИЕ ПАРАМЕТРОВ ФУНКЦИИ:
CurrentPOS:INTEGER - задаётся текущая позиция курсора, в строке текста;
TextSource:String - Строка текста, в которой производится выделение текущего слова.

Практически такое же дело происходит, когда вы дважды щёлкаете (dblClick) в компоненте RichEdit.

Примерно работать эта функция должна так:
Procedure GetCurWord;
Var CurText:TCurrentText;
begin
CurTEXT := GetCurrentText(10, "<хороший день выдался>");
ShowMessage(CurText.CurrentText);//Выводит "день"
ShowMessage(Inttostr(curText.POS)); //Выводить "9"
ShowMessage(Inttostr(curText.LENGTH)); //Выводить "4"
end;

ПОМОГИТЕ ПОЖАЛУЙСТА С ЭТОЙ ФУНКЦИЕЙ. ЖДУ.


MBo   (2001-12-24 12:07:00) [1]

Sorry первая строчка такая должна быть
const delim=[" ",",",";"];


Mbo   (2001-12-24 07:19:00) [2]

const delim=" ,;"; // добавь то, что может служить разделителем
for i:=currentpos downto 1 do
if TextSource[i] in delim then begin
startdelim:=i;
break;
end;
for i:=currentpos+1 to length(TextSource) do
if TextSource[i] in delim then begin
enddelim:=i;
break;
end;
Result.CurrentText:=Copy(TextSource,startdelim+1,enddelim-startdelim-1);
Result.Pos:=startdelim+1;
Result.Length:=enddelim-startdelim-1;
end;
добавь в начале обнуление переменных
если разделитель только пробел, будет проще и короче


drpass   (2001-12-23 14:31:00) [3]

Хм. А функции copy+lenght чем не нравятся? Или F1 сломалось???


VID   (2001-12-23 12:20:00) [4]

???


Наверх

Титульная страница Поиск, карта сайта Написать письмо