Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2010, 02:50   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию Удалить пустую строку созданную StringList-ом

Написал
Код:
...
var
  Form1: TForm1;
  B: TStrings;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
B := TStringList.Create;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
begin
B.Text := Memo1.Text;
  {Удаление пустот}
  for i := B.Count - 1 downto 0 do
    if '' = trim(B[i]) then
      B.Delete(i);
        Memo2.Text := B.Text;
          Memo1.Clear;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
B.Free;
end;
В StringList удаляются все пустые строки, созданные в Memo1, но добавляется одна по завершению чистки в конец текста. Помогите пожалуйста от неё избавиться.
Shouldercannon на форуме Ответить с цитированием
Старый 29.05.2010, 02:56   #2
Vikenty
Заслуженный флудер
Участник клуба
 
Аватар для Vikenty
 
Регистрация: 31.03.2010
Сообщений: 1,473
По умолчанию

код B.delete(B.count)
Vikenty вне форума Ответить с цитированием
Старый 29.05.2010, 03:07   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Код:
B.Text := (RichViewEdit1.GetSelText);
  {Удаление пустот}
  for i := B.Count - 1 downto 0 do
    if '' = trim(B[i]) then
      B.Delete(i);
        B.Delete(B.Count);
Сколько строк c ntrcnjv, столько в ошибке List index out of bounds число.
Две строки = List index out of bounds (2).
Shouldercannon на форуме Ответить с цитированием
Старый 29.05.2010, 11:46   #4
bitSoft
Programming...
Форумчанин
 
Аватар для bitSoft
 
Регистрация: 13.03.2010
Сообщений: 198
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Код:
B.Text := (RichViewEdit1.GetSelText);
  {Удаление пустот}
  for i := B.Count - 1 downto 0 do
    if '' = trim(B[i]) then
      B.Delete(i);
        B.Delete(B.Count);
Сколько строк c ntrcnjv, столько в ошибке List index out of bounds число.
Две строки = List index out of bounds (2).
neznayiu chio prishlo tebe v golovu, no eta j narmalino oshibka
Rabochii COD :

Код:
  for i := B.Count - 1 downto 0 do
    if ' ' = trim(B[i]) then
       B.Delete(i);

zachem tebe eto? : B.Delete(B.Count);
Ano udaleaet paslednuyiu stroku vsegda , ne oshobka v tom shto ti ne postavil - 1, B.Delete(B.Count-1);
Код:
With TProgrammersForum.Create do  AddNewTopic('Title','Content...');
bitSoft вне форума Ответить с цитированием
Старый 29.05.2010, 12:10   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Код:
if ' ' = trim(B[i]) then
это нужно. Нельзя так
Код:
B.Delete(B.Count - 1)
если строка одна, то она удалиться, если две, то только первая пройдёт.
Shouldercannon на форуме Ответить с цитированием
Старый 29.05.2010, 12:19   #6
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

Код:
type
  Tgr=class(Grids.TCustomGrid)
end;
Код:
 Tgr(gr_mar).DeleteRow(i);

Код:
while i<gr_pl.RowCount do
 begin
 If (length(gr_pl.Cells[0,i])=0)     then
  begin
  Tgr(gr_pl).DeleteRow(i);
  dec(i);
  end;
  inc(i);

  end;
гг...
Lemo вне форума Ответить с цитированием
Старый 29.05.2010, 13:00   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Shouldercannon
так работает TStringList...

попробуйте сделать так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
begin
  B.Text := Memo1.Text;
  {Удаление пустот}
  for i := B.Count - 1 downto 0 do
    if '' = trim(B[i]) then
      B.Delete(i);
  if length(B.Text)>2 then
    Memo2.Text := Copy(B.Text,1,length(B.Text)-2);
  else
    Memo2.Text := B.Text;
  Memo1.Clear;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.05.2010, 13:21   #8
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Спасибо всем за уделённое внимание и помощь. Лучшим способом решения данной пролемы мне показался вариант Serge_Bliznykov
Shouldercannon на форуме Ответить с цитированием
Старый 13.12.2011, 16:09   #9
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию Удалить пустую строку при сохранении данных из TStringList

Когда сохраняешь содержимое TStringList в файл, то в конце этого файла всегда присутсвует пустая строка. Как от неё избавиться, чтобы после сохранения содержимого TStringList её не было?
Строки бобавляю так
Код:
      TSL := TStringList.Create;
      TSL.Add('Text');
      TSL.SaveToFile('name.htm');
      TSL.Free;
Shouldercannon на форуме Ответить с цитированием
Старый 13.12.2011, 16:28   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
var fs: TFileStream;
...
  fs:=TFileStream.Create('name.htm',fmCreate);
  TSL.SaveToStream(fs);
  if fs.Size>2 then fs.Size:=fs.Size-2;
  fs.Free;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 13.12.2011 в 16:43.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить пустую строку из ListView Shouldercannon Общие вопросы Delphi 2 28.04.2010 16:02
как удалить созданную тему или хотя бы вложение свое? dasmeer Помощь студентам 1 14.03.2010 00:19
Как удалить созданную тему? ruavia3 О форуме и сайтах клуба 1 06.04.2009 11:21
если поле Patr пусто или null то пустую строку возвращает azat БД в Delphi 5 01.02.2008 13:05
как удалить пустую страницу? Gambler Microsoft Office Word 1 29.10.2006 20:57