Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];




Вниз

Выделение слова из строки 


VID   (2001-12-22 16:28) [0]

Здравствуйте!
У меня часто возникала проблемы выделения текста в 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;

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



VID   (2001-12-23 12:20) [1]

???



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

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



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

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;
добавь в начале обнуление переменных
если разделитель только пробел, будет проще и короче



MBo   (2001-12-24 12:07) [4]

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




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.016 c
1-42440           Philya                2001-12-21 18:00  2002.01.14  
кодировка


1-42450           Кандыль               2001-12-24 21:14  2002.01.14  
Избитый!


1-42422           dimonf                2001-12-25 19:37  2002.01.14  
Как работать с Canvas в StringGrid?


3-42374           Kirill                2001-12-10 13:42  2002.01.14  
Zeos Help+Doc


3-42364           Hermit                2001-12-11 20:25  2002.01.14  
Interbase