Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как удалить в тексте из 3-х строк первые 2 строки? [D2005, 2000]


Страницы:   1 2

azl ©   (2006-12-01 00:40:00) 

Доброго времени суток.
Подскажите, пожалуйста, как можно в тексте из 3-х  строк (2-я пустая)удалить первую и пустую строки?
Например, такой текст:

Эту строку нужно уалить

А вот эту строку оставить


Принцип удаления понятен. Можно использовать, например, Delete.

Delete('строка', 0, 'А здесь нужно указать, что удалять нужно все до начала 3-й строки');

Как можно определить начало нужной мне строки?

Спасибо.


azl   (2006-12-01 18:43:00) [21]

Все равно, мне мой вариант нравится больше, т.к. все сделано руками, а не тупо взято уже готовое. Может быть и плохо, но свое.

Спасибо всем.


Джо   (2006-12-01 18:42:00) [22]

>
>
> [17] azl ©   (01.12.06 18:39)
> Джо ©, только не надо обвинять, я и сам разобрался.

Где ты увидел какие-то "обвинения"? Я стандартную схему работу с объектами показал, чтобы не было потом вопросов по утечке памяти и прочим прелестям.


azl   (2006-12-01 18:39:00) [23]

Джо ©, только не надо обвинять, я и сам разобрался.


Джо   (2006-12-01 18:38:00) [24]

> [14] azl ©   (01.12.06 18:36)
> Ага, нашел ошибку. Сначала нужно создать TStringList.

Не только создать. Но создать, использовать и уничтожить правильно:) См. схему в [13].


azl   (2006-12-01 18:38:00) [25]


> Джо ©

Не увидел ответа. Спасибо.


azl   (2006-12-01 18:36:00) [26]

Ага, нашел ошибку. Сначала нужно создать TStringList.
StringList := TStringList.Create;


Джо   (2006-12-01 18:20:00) [27]

> [12] azl ©   (01.12.06 18:16)
> Выдается сообщение об ошибке Access Violation at Address
> ....
> У меня bds 2006. Что я не так делаю? Надеюсь, что ошибка
> не в ДНК.

Нет, не в ДНК, а в отсутствии базовых знаний. Перед использованием экз. объекта, его нужно создать, т.е:
StringList := TStringList.Create;
try
 // тут используем
finally
 StringList.Free;
end;


azl   (2006-12-01 18:16:00) [28]


> Anatoly Podgoretsky ©

Дело в том, что N, как раз и не известно. N каждый раз будет, в моем случае, разное.


> Сергей М. ©

Попытался использовать вариант, который ты предложил:
procedure TForm1.Button1Click(Sender: TObject);
var
StringList: TStringList;
begin
 StringList.Text := Label1.Caption;
 Memo1.Text := StringList[2];
end;


Выдается сообщение об ошибке Access Violation at Address ....
У меня bds 2006. Что я не так делаю? Надеюсь, что ошибка не в ДНК.


Сергей М.   (2006-12-01 15:44:00) [29]


> Только с использованием StringList.


А чем оное не устраивает тебя ?

Зачем дублировать код ужерреализованного в классе TStringList аналогичного по функциональности алгоритма ?


Anatoly Podgoretsky   (2006-12-01 15:42:00) [30]

> azl  (01.12.2006 10:56:07)  [7]

Delete(S, 1, N);


azl   (2006-12-01 11:32:00) [31]

Сергей М., пример хороший, спасибо. Только с использованием StringList.
А если используется только текстовая переменная и Memo?
Например:
S :='Эту строку нужно уалить'+#13#13+'А вот эту строку оставить';

#13#13 - я вставил для примера, чтобы показать, в каком виде на самом деле переменной присваивается текст.

Эту строку нужно уалить

А вот эту строку оставить


Сергей М.   (2006-12-01 11:03:00) [32]


> Буду только рад, если кто-то предложит лучший вариант чем
> этот.


StringList.Text := Label1.Caption;
Memo1.Text := StringList[2];


azl   (2006-12-01 10:56:00) [33]

Германн, и что здесь страшного? Ну, можно i := 1, уж в этом точно ничего плохого нет.
Буду только рад, если кто-то предложит лучший вариант чем этот.


Германн   (2006-12-01 02:11:00) [34]


> azl ©   (01.12.06 01:09) [5]
>
> Чем плох? Как можно сделать лучше?
>

И чем от только не плох?
Первое, навскидку. В первой итерации проверяется "нулевой! символ строки!


azl   (2006-12-01 01:09:00) [35]

Чем плох? Как можно сделать лучше?


Джо   (2006-12-01 01:02:00) [36]

П.С.
Код в [2] — плох.


Джо   (2006-12-01 01:01:00) [37]

> Джо, как чем? А что из примера не видно?

Было бы видно, не спрашивал бы, наверное.


azl   (2006-12-01 00:59:00) [38]

Все, спасибо. Сам допетрал. Вот код, может кому пригодится:

procedure TForm1.Button1Click(Sender: TObject);
var
 i: integer;
begin
 i := 0;
 while (i <> Length(Label1.Caption)) do begin
   if Copy(Label1.Caption, i,1) = #13 then
     Memo1.Text := Copy(Label1.Caption, i+2, Length(Label1.Caption));
     i:=i+1;
 end;
end;

Джо, как чем? А что из примера не видно? После 1-й строки нажат 2 раза Enter.


Джо   (2006-12-01 00:46:00) [39]

Чем разделяются строки?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо