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

Вниз

Как удалить пустые строки из Memo?   Найти похожие ветки 

 
Roun   (2007-08-07 16:08) [0]

Сохраняю содержимое Memo в txt-файл.
Как сделать, чтобы при сохранении, пустые строки автоматически удалялись?

Строка_1
Строка_2
Строка_3
               <--удалить
Строка_5
Строка_6


 
Tack ©   (2007-08-07 16:18) [1]

Перебрать все строки (Memo1.Lines) с конца (for i := Memo1.Lines.Count - 1 downto 0 do ...). Если встречаем строку (Memo1.Lines[i]), которая пустая ( = "" ), то удаляем ее по Memo1.Lines.Delete(i)


 
tesseract ©   (2007-08-07 16:21) [2]

Вроде этого - набросано за пару секунд, может не работать.

count:=0;
repeat
if length(memo1.lines[count]) =0
 then memo1.lines.delete(count)
else
inc (count)
until (count<>memo1.lines.count);


 
Германн ©   (2007-08-07 16:35) [3]


> Roun   (07.08.07 16:08)
>
> Сохраняю содержимое Memo в txt-файл.
> Как сделать, чтобы при сохранении, пустые строки автоматически
> удалялись?
>

Не записывать пустые строки в txt-файл.


 
tesseract ©   (2007-08-07 16:38) [4]


> Не записывать пустые строки в txt-файл.


он через SaveTofile наверно пишет.


 
Германн ©   (2007-08-07 17:19) [5]


> он через SaveTofile наверно пишет.
>

Тогда сабж
> Как сделать, чтобы при сохранении, пустые строки автоматически
> удалялись?

решения не имеет.


 
Anatoly Podgoretsky ©   (2007-08-07 19:47) [6]


> 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


 
Roun   (2007-08-07 21:19) [7]

Подводя итоги Вашим советам получается:
for i := Memo1.Lines.Count - 1 downto 0 do
 if Memo1.Lines[i]="" then Memo1.Lines.Delete(i);
if Memo1.Lines.Count>0 then

и дальше SaveTofile

Так получается?


 
Германн ©   (2007-08-07 21:43) [8]


> Так получается?
>

А самому проверить лень?


 
Roun   (2007-08-07 21:57) [9]

> А самому проверить лень?

Предлагаешь действовать методом тыка? По принципу: «работает – значит правильно»?
Обычно, любую задачу сначала решают на черновике (на листке бумаги), а только потом оформляют.


 
MetalFan ©   (2007-08-07 22:05) [10]


> Обычно, любую задачу сначала решают на черновике (на листке
> бумаги), а только потом оформляют.

ну так решай, кто тебе мешает?
если не можешь решить на бумаге, то остается методом тыка. и в этом нет ничего страшного имхо.


 
{RASkov} ©   (2007-08-08 00:29) [11]

> [7] Roun   (07.08.07 21:19)
> Так получается?

Если пробелы - это не "пустая строка", то так [7] или так:
while Pos(#13#10#13#10, Memo1.Text)>0 do
 Memo1.Text:=StringReplace(Memo1.Text, #13#10#13#10, #13#10, [rfReplaceAll]);


Иначе в [7] if Trim(Memo1.Lines[i])="" then...
Можно и еще как нибудь придумать.... этж программирование, как запрограммируешь так и будет.



Страницы: 1 вся ветка

Текущий архив: 2007.09.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
2-1186662201
alex_tonk
2007-08-09 16:23
2007.09.02
Сохранить как DBF файл


6-1168779369
@gent
2007-01-14 15:56
2007.09.02
Как скрытно зайти на страницу ?


1-1182415440
DevilDevil
2007-06-21 12:44
2007.09.02
Excel. Не ошибка при обращении Sheet.Range


15-1185826157
wp2
2007-07-31 00:09
2007.09.02
RenameFile и/или Rename очень долго выполняются!


15-1186219330
GROM2007-92
2007-08-04 13:22
2007.09.02
Как работать?