Форум: "Основная";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
ВнизОпределение длины видимого текста в Memo Найти похожие ветки
← →
DeepProg (2004-07-05 22:15) [0]В Memo загружается текст из txt файла в кодировке Windows. Текст из Memo передается в переменную s типа string.
Length(s): Unaccessible value, поэтому при попытке остановить, например, поиск слова по достижении конца текста, ничего не выходит, и поиск продолжается, находя невидимые символы.
Вопрос: как ограничить либо длину текста в Memo, либо длину string до последнего видимого символа.
Лучше бы, конечно, ограничить строку.
← →
KilkennyCat © (2004-07-06 01:10) [1]Честно говоря, я не понял:
1) Почему length(s): Unaccessible value ? - код приведите.
2) Откуда у Вас в txt файле в кодировке Windows невидимые символы?
3) Как может поиск найти невидимые символы? Точнее, что Вы ищите? Слово из невидимых символов?
4) Зачем текст передается в переменную? только для поиска?
5) Разве у Мемо нет свойство, задающее ограничение длины?
6) Разве ограничение string до последнего видимого символа не может подразумевать их наличие в середине?
Будет код - будет ответ. А пока создается впечатление, что Вам лучше прочитать книжку. С самого начала.
← →
DeepProg (2004-07-06 02:54) [2]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. Так что нет, причем этого никогда и не происходило.
← →
Palladin © (2004-07-06 03:18) [3]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 ничего само по себе ничего не добавляет.
Проблема как всегда в подходе...
← →
R © (2004-07-06 03:27) [4]Что Вам надо сделать с текстом в Memo?
Если честно я так и не понял.
-найти символ
-найти слово
-исключить символ(ы) с текста
-иное.
Начнем с этого.
← →
TUser © (2004-07-06 07:45) [5]
> "Невидимые" символы называются управляющими
Подозреваю, что в данном случае имеется ввиду видимый текст. Невидимые символы - соотв. те, которые ниже/выше. Хотя не знаю.
← →
Delphin © (2004-07-06 13:17) [6]Memo1.MaxLength
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.039 c