Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.21;
Скачать: CL | DM;

Вниз

Как узнать, есть ли на строке символ   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
3-66808
DeNNiss
2002-02-20 15:29
2002.03.21
Уважаемые Мастера!


14-67003
Bodia
2002-02-07 10:31
2002.03.21
Как мне закилять, Randll


1-66811
AndrewK
2002-03-05 11:46
2002.03.21
QuickReport конфликтует с драйвером принтера


4-67040
swan70
2002-01-16 13:47
2002.03.21
NetFileEnum и сервис


14-66969
Tosov
2002-02-06 17:21
2002.03.21
Сколько стоит час работы