Як видалити порожні рядки з Memo?
Зберігаю вміст Memo в txt-файл.
Як зробити, щоб при збереженні, порожні рядки автоматично віддалялися?
строка_1
строка_2
Строка_3
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0;<--удалить
Строка_5
Строка_6
Перебрати всі рядки (Memo1.Lines) з кінця (for i: = Memo1.Lines.Count - 1 downto 0 do.). Якщо зустрічаємо рядок (Memo1.Lines [i]), яка порожня (= ""), то видаляємо її по Memo1.Lines.Delete (i)
Начебто цього - накидано за пару секунд, може не працювати.
count: = 0;
repeat
if length (memo1.lines [count]) = 0
# XA0; then memo1.lines.delete (count)
else
inc (count)
until (count<>memo1.lines.count);
> Roun # XA0; (07.08.07 16:08)
>
> Зберігаю вміст Memo в txt-файл.
> Як зробити, щоб при збереженні, порожні рядки автоматично
> Віддалялися?
>
Чи не записувати порожні рядки в txt-файл.
> Чи не записувати порожні рядки в txt-файл.
він через SaveTofile напевно пише.
> Він через SaveTofile напевно пише.
>
тоді сабж
> Як зробити, щоб при збереженні, порожні рядки автоматично
> Віддалялися?
рішення не має.
> repeat
> If length (memo1.lines [count]) = 0
Так не треба робити, по суті три помилки
1. memo1.lines.count може дорівнювати нулю, добре якщо пощастить і вилетимо помилково
2. Length для рядка хоча б з одним пропуском буде більше нуля
3. until (count<>memo1.lines.count); виконається тільки один або два рази. А якщо поставити until (count = memo1.lines.count); то ризик зациклення наближається до одиниці при count = 0
Підводячи підсумки Ваших порад виходить:
for i: = Memo1.Lines.Count - 1 downto 0 do
# XA0; if Memo1.Lines [i] = "" then Memo1.Lines.Delete (i);
if Memo1.Lines.Count> 0 then
і далі SaveTofile
> А самому перевірити лінь?
Пропонуєш діяти методом тику? За принципом: «працює - значить правильно»?
Зазвичай, будь-яке завдання спочатку вирішують на чернетці (на листку паперу), а тільки потім оформляють.
> Зазвичай, будь-яке завдання спочатку вирішують на чернетці (на листку
> Паперу), а тільки потім оформляють.
ну так вирішуй, хто тобі заважає?
якщо не можеш вирішити на папері, то залишається методом тику. і в цьому немає нічого страшного имхо.
> [7] Roun # XA0; (07.08.07 21:19)
> Так виходить?
Якщо прогалини - це не "порожній рядок", то так [7] або так:
while Pos (# 13 # 10 # 13 # 10, Memo1.Text)> 0 do
# XA0; Memo1.Text: = StringReplace (Memo1.Text, # 13 # 10 # 13 # 10, # 13 # 10, [rfReplaceAll]);
Інакше в [7] if Trim (Memo1.Lines [i]) = "" then.
Можна і ще як небудь придумати. етж програмування, як запрограмуєш так і буде.
Пам'ять: 0.74 MB
Час: 0.097 c