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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2014, 02:56   #1
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
Вопрос Как разбить TStringList на части по 15 строк?

Как разбить TStringList на части по 15 строк?
FleXik вне форума Ответить с цитированием
Старый 20.04.2014, 03:39   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

У TStringList есть проперть Strings - сие есть динамический массив строк.
Вот и работайте , как с массивом.
type_Oleg вне форума Ответить с цитированием
Старый 20.04.2014, 05:04   #3
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

кто-то может дать конкретный ответ?
FleXik вне форума Ответить с цитированием
Старый 20.04.2014, 05:45   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Есть свойство Count. Оно определяет количество строк в списке. Получаем количество строк и делим на 15.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 20.04.2014, 05:53   #5
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

Smitt&Wesson, нужен конкретный пример а не "возможно оно заработает"

Вот так вот вроде пашет но оно показывает только по 1 строке в ShowMessage... а мне надо сразу 15... , как из TStringList брать сразу по 15 строк?

Код:
var
  sl:TStringList;
  i:integer;
begin
  i:=0;
  sl:=TStringList.Create;
  sl.LoadFromFile(Form1.sFilenameEdit1.FileName);

  while i<sl.Count do
  begin
    ShowMessage(sl[i]);
    i:=i+15;
  end;

  sl.Free;
end;
уже сам сделал дополнительным циклом и стринглистом и без всяких там массивов, но когда строк меньше 15 - List index out of bound, помню была такая фигня как min , но не помню как юзать...

Код:
var
  sl, Arr:TStringList;
  i, j:integer;
begin
  i:=0;
  sl:=TStringList.Create;
  Arr:=TStringList.Create;
  sl.LoadFromFile(Form1.sFilenameEdit1.FileName);

  while i<sl.Count do
  begin
    Arr.Clear;

      for j:=0 to 14 do
      begin
        Arr.Add(sl[i]);
        inc(i);
      end;

    ShowMessage(Arr.Text);
  end;

  sl.Free;
  Arr.Free;
end;

Последний раз редактировалось Stilet; 20.04.2014 в 09:34.
FleXik вне форума Ответить с цитированием
Старый 20.04.2014, 09:33   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
помню была такая фигня как min , но не помню как юзать...
Не было там такого. Выше уже сказали: Count. Это свойство покажет если строк меньше 15 то не делать.
Цитата:
нужен конкретный пример а не "возможно оно заработает"
Тогда и ты ставь конкретное задание а не "разбить TStringList на части по 15 строк"
Этот класс един и неделим, и разбить его на группы нельзя.
С другой стороны телепатирую:
Код:
var s:string;i:integer;
...
s:=''
with stringList do begin
 for i:=0 to Count-1 do begin
  if ((i mod 15)=0) and (i<>0) then begin
   ShowMessage(s); s:='';
  end else s:=s+Strings[i];
 end;
 if s<>'' then ShowMessage(s);
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.04.2014, 09:36   #7
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

Stilet, что именно ты у меня подредактировал?

я понимаю что надо
Код:
if Arr.Count<14 then Break;
но оно НЕ пашет!
FleXik вне форума Ответить с цитированием
Старый 20.04.2014, 09:44   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я ничего твоего не брал вообще, а придумал свое.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.04.2014, 09:50   #9
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

Stilet, жесть... а я что, где-то писал что ты что-то мое брал? :D детский садик... просто увидел что ты отредактировал мое сообщение, подумал что исправил ту ошибку поэтому и переспросил.

решил проблему сам ибо не дождешься, так трудно помочь человеку...

прикол кода в том что даже если есть остаток например осталось 2 строки - оно их так же записывает но без всяких ошибок и получается что софт работает до последней строки без ошибок даже если последних строк осталось меньше 15. или даже если изначально в цикле стоит 15 строк а в тхт файле 10 строк - софт выводит все 10 строк без единой ошибки.

Код:
var
  sl, Arr:TStringList;
  i, j:integer;
begin
  i:=0;
  sl:=TStringList.Create;
  Arr:=TStringList.Create;
  sl.LoadFromFile(Form1.sFilenameEdit1.FileName);

    while i<sl.Count do
    begin
      Arr.Clear;

        for j:=0 to 1 do
        begin
          if i<sl.Count then
          Arr.Add(sl[i]);
          inc(i);
        end;

      ShowMessage(Arr.Text);
    end;

  sl.Free;
  Arr.Free;
end;

Последний раз редактировалось FleXik; 20.04.2014 в 09:55.
FleXik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как разбить SQL запрос на несколько строк? UNToxa БД в Delphi 4 17.02.2011 19:34
Как разбить на части VBA процедуру (ту лардж)? neprofi Помощь студентам 1 29.04.2010 04:11
Разбить строку на 2 части 7KByte Общие вопросы C/C++ 6 31.05.2009 16:51
Разбить файл на 4 части borzoni Паскаль, Turbo Pascal, PascalABC.NET 7 31.05.2008 10:51
Разбить список на части fotobra Microsoft Office Excel 1 23.02.2008 03:13