Форум: "Основная";
Текущий архив: 2002.03.21;
Скачать: [xml.tar.bz2];
ВнизКак узнать, есть ли на строке символ Найти похожие ветки
← →
Olfi (2002-03-06 18:44) [0]или... не знаю, как он называется, - когда Enter в конце строки жмёшь.
Я пробовал так:
if pos (#13, memo1.lines[1])<>0 then memo1.lines.add("Yes!");
Не получается так.
← →
Val (2002-03-06 18:58) [1]#10#13
конец строки, перевод строки
← →
Anatoly Podgoretsky (2002-03-06 20:05) [2]Дело в том, результат в данном случае string, в котором нет этих символов.
← →
valery_f (2002-03-06 20:08) [3]Вообще-то Memo бъет текст на строки именно по "символам абзаца", и через memo1.lines[N] их не найдешь.
2Val: Вообще-то #13#10 (обычно так :)
← →
McSimm (2002-03-06 20:21) [4]А что ты хотел выяснить по наличию этих символов?
Может тебе совсем не это надо?
← →
Delirium (2002-03-06 20:28) [5]Хм, может "символ абзаца" это #9 - Tab, то есть ?
← →
McSimm (2002-03-06 20:34) [6]>Delirium © (06.03.02 20:28)
see:
>когда Enter в конце строки жмёшь.
← →
Delirium (2002-03-06 20:45) [7]
> McSimm
Ну я просто пытался понять - зачем искать #13 в memo1.lines[1],
вот и предположил - не то ищет.
← →
Olfi (2002-03-06 20:45) [8]Мне нужно сделать равнение текста по обоим краям. Я думал сделать это так: просмотреть каждую строку, если на ней нет символов перевода строки, абзаца , то добавить пробелы между словами, чтобы кол-во символов было одинаково на всех строках.
А как тогда узнать, заканчивается ли абзац на данной строке?
← →
Anatoly Podgoretsky (2002-03-06 20:46) [9]valery_f (06.03.02 20:08)
Вообще то нет, если включен режим Word Wrap, в этом случае бьет по границе окна с учетом слов, а автора именно это и интересует, иначе вообще вопроса бы не было - одна строка/один абзац.
Вопрос у него корректно поставле, только не понятно щачем это нужно, возможно есть другое решение.
← →
Delirium (2002-03-06 20:47) [10]Может тебе Memo1.Text сравнивать ?
← →
Olfi (2002-03-06 20:53) [11]Мне нужно сделать равнение текста по обоим краям. Я думал сделать это так: просмотреть каждую строку, если на ней нет символов перевода строки, абзаца , то добавить пробелы между словами, чтобы кол-во символов было одинаково на всех строках.
А как тогда узнать, заканчивается ли абзац на данной строке?
← →
McSimm (2002-03-06 21:01) [12]Не выйдет ничего.
В любом случае все строки в Memo оканчиваются #13#10 (если смотреть Memo.Text)
Поэтому одна строка - один "абзац" выполняется всегда.
Т.е. понятия "абзац" просто нет.
← →
Anatoly Podgoretsky (2002-03-06 22:07) [13]Нет понятие абзац есть, попробуй менять ширину окна и увидишь.
Вот только добраться через свойство Lines не получится.
← →
McSimm (2002-03-07 10:36) [14]Виноват. Повторная проверка показала, что абзацы есть :)
(Перед этим, почему-то, я обнаружил #13#10 во всех Lines[I])
В принципе поставленная задача решается несложно.
Просматриваем все Lines[I] от 0 до Count-1, при этом следим за смещением в Memo.Text. Только форматировать надо не сразу, а после всего прохода. Например форматируя в промежуточный TStringList.
← →
McSimm (2002-03-07 10:58) [15]Как компенсация за неправильный ответ :)
Вот работающий пример.
Осталось реализовать функцию JustifyFormat(S);
procedure TForm1.Button1Click(Sender: TObject);
var I, Ofs: Integer;
SL: TStringList;
S: String;
begin
SL := TStringList.Create;
try
Ofs := 1;
for I := 0 to Memo1.Lines.Count - 1 do
begin
S := Memo1.Lines[I];
Ofs := Ofs + Length(S);
if Ofs > Length(Memo1.Text) then Raise Exception.Create("Странно...");
if Memo1.Text[Ofs] = #13 then
begin
Inc(Ofs);
if Memo1.Text[Ofs] = #10 then Inc(Ofs);
end else
S := JustifyFormat(S);
SL.Add(S)
end;
Memo1.Lines := SL
finally
SL.Free
end
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.03.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c