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

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

Определение длины видимого текста в Memo [D6, WinXP]


DeepProg ©   (2004-07-05 22:15:00) 

В Memo загружается текст из txt файла в кодировке Windows. Текст из Memo передается в переменную s типа string.
Length(s): Unaccessible value, поэтому при попытке остановить, например, поиск слова по достижении конца текста, ничего не выходит, и поиск продолжается, находя невидимые символы.
Вопрос: как ограничить либо длину текста в Memo, либо длину string до последнего видимогосимвола.
Лучше бы, конечно, ограничить строку.


Delphin   (2004-07-06 13:17:00) [1]

Memo1.MaxLength


TUser   (2004-07-06 07:45:00) [2]


> "Невидимые" символы называются управляющими

Подозреваю, что в данном случае имеется ввиду видимый текст. Невидимые символы - соотв. те, которые ниже/выше. Хотя не знаю.


R   (2004-07-06 03:27:00) [3]

Что Вам надо сделать с текстом в Memo?
Если честно я так и не понял.
-найти символ
-найти слово
-исключить символ(ы) с текста
-иное.
Начнем с этого.


Palladin   (2004-07-06 03:18:00) [4]

1) Нужно быть проще

Function GetWord(Const Source:String;Var CharPos:Integer):String;
Begin
Result:='';
While (CharPos<=Length(Source)) and not (Source[CharPos] in SepSymb) Do
 Begin
  Result:=Result+Source[CharPos];
  Inc(CharPos);
 End;
While (CharPos<=Length(Source)) And (Source[CharPos] in SepSymb) Do Inc(CharPos);
End;

2) "Невидимые" символы называются управляющими. Memo ничего само по себе ничего не добавляет.

Проблема как всегда в подходе...


DeepProg   (2004-07-06 02:54:00) [5]

RTFM - вы правы... Пока что этот форум + несколько других сайтов мне ее заменяют.
Сначала скажу, что невидимые символы перестали мешать(не проявляются), при том, что принципиальных изменений в код чтения из Memo внесено не было и ограничение поиска( вот разве что оно стало как бы двойным: При промотре текста вообще + при Получении слова) успешно осуществляется по Length(Memo1.Text).
1) для Watch, но не для Inspect, т.е. определнное значение все-   таки доступно.
 Вот эта функция, запускаемая в ButtonClick, первоначально, при каждом новом нажатии кнопки, после того, как видимый текст(латиница) закончился, продолжаала находить символы(крякозябры, кириллицу, специальные), сейчас этого не происходит, но что могло быть тогда, думаю было бы полезно знать
---------------------------------------------------------
//*******************************************************
{ в Source загоняется текст: Memo1.Text
   CharPos: начинается с 1, внутри меняется, обеспечивая проход по всему тексту
}
//*******************************************************
var      SepSymb: set of Char= [' ',#10, #13, #0]
...

function TfmTxtProc.GetWord(Source: String; var CharPos: integer): string;
var w:string;
   ch:Char;
begin
w:='';
ch:='z';
while (CharPos<=Length(Source)) and not(ch in SepSymb)
       or (w='')  do
  begin
    ch:=Source[CharPos];
    inc(CharPos);
    if not(ch in SepSymb) then
     w:=w+ch;
  end;
Result:=w;
end;

----------------------------------------
2) Я не утверждаю, что они именно в файле, возможно за их появление отвечает Memo.
3) см. код. Меня интересуют только видимые символы.
4) уже не передается
5) есть, только длину эту заранее узнать, почему-то не удавалось.
6) предполагается текст набитый user'ом в notepad. Так что нет, причем этого никогда и не происходило.


KilkennyCat   (2004-07-06 01:10:00) [6]

Честно говоря, я не понял:
1) Почему length(s): Unaccessible value ? - код приведите.
2) Откуда у Вас в txt файле в кодировке Windows невидимые символы?
3) Как может поиск найти невидимые символы? Точнее, что Вы ищите? Слово из невидимых символов?
4) Зачем текст передается в переменную? только для поиска?
5) Разве у Мемо нет свойство, задающее ограничение длины?
6) Разве ограничение string до последнего видимого символа не может подразумевать их наличие в середине?

Будет код - будет ответ. А пока создается впечатление, что Вам лучше прочитать книжку. С самого начала.


Наверх

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