Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск текста (строки) в файле 
:(
    Опции темы
Twiddle
Дата 18.10.2009, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 13.7.2009

Репутация: нет
Всего: нет



Здравствуйте уважаемые Гуру и знатоки. Прошу вашей помощи, имею такой рабочий код:
Код

procedure TForm1.sButton4Click(Sender: TObject);
var
  S, Q, L: TStringList;
  I, J, TempCount: Integer;
begin
  S := TStringList.Create;
  Q := TStringList.Create;
  L := TStringList.Create;

  Q.Sorted     := True;
  Q.Duplicates := dupIgnore;

  S.LoadFromFile(sedit3.Text);
  I := 0;
  J := 0;
  while I<S.Count-1 do
  begin
    if Pos('Petrenko=', S.Strings[I])<>0 then
    begin
    TempCount := Q.Count;
      Q.Add(S.Strings[I]);

      if Q.Count > TempCount then
begin
        L.Add(S.Strings[I]);
        Inc(I);
        Inc(J);

        L.Add(S.Strings[I]); ////2 stroka
        L.Add('');     /// 2 stroka
      end;
    end;
    Inc(I);
    end;
if (J > 0) then
  begin
    L.Insert(0, '');
    L.Insert(0, DateToStr(Now));
    L.Insert(0, 'Naydenno '+IntToStr(J)+' strok'+' XXXXX');
    L.SaveToFile(sEdit4.Text);
  end;

Подскажите как сделать что бы не 2 строчки записывались а 3-5-7. Спасибо. smile 

Это сообщение отредактировал(а) Twiddle - 19.10.2009, 18:30
PM MAIL   Вверх
morpheyushka
Дата 19.10.2009, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: 2
Всего: 8



вставь цикл, когда записываешь:
Код

for k:= 1 to Col_Insert do
  L.Add(S.Strings[I]);


Col_Insert - задавай в программе как параметр.

А еще неплохо было бы память освобождать:
Код

  S := TStringList.Create;
  Q := TStringList.Create;
  L := TStringList.Create;
  try
  ...
  finaly
    S.Free;
    Q.Free;
    L.Free;
  end;



--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
bems
Дата 19.10.2009, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



morpheyushka, тогда уж
Код

  S := TStringList.Create;
  try
    Q := TStringList.Create;
    try
      L := TStringList.Create;
      try
        ...
      finally
        L.Free;
      end;
    finally
      Q.Free;
    end;
  finally
    S.Free;
  end;


Это сообщение отредактировал(а) bems - 19.10.2009, 16:41


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Akella
Дата 19.10.2009, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 8
Всего: 329



Тогда уж
FreeAndNil();   smile 
PM MAIL   Вверх
Twiddle
Дата 19.10.2009, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 13.7.2009

Репутация: нет
Всего: нет



Спасибо попробовал но

Код

for k:= 1 to Col_Insert do
  L.Add(S.Strings[I]);


не работает нормально. Он записывает вторую строку указанное кол-ва раз а мне нужно что бы процедура записывала не вторую строку а вообще заданное число строк после первой. 

Пример (код из первого поста):
Фамилимя=Иванов
Имя=Василий
Улица=Базарная
Дом=1

 Записывает только :
Фамилимя=Иванов
Имя=Василий

А нужно что бы от параметра записывало (3):
Фамилимя=Иванов
Имя=Василий
Улица=Базарная

 или (4):

Фамилимя=Иванов
Имя=Василий
Улица=Базарная
Дом=1

А вариант с кодом 
Код

for k:= 1 to Col_Insert do
  L.Add(S.Strings[I]);

делает так:
Фамилимя=Иванов
Имя=Василий
Имя=Василий
Имя=Василий
....
Имя=Василий

Спасибо



Это сообщение отредактировал(а) Twiddle - 19.10.2009, 19:22
PM MAIL   Вверх
amsoft
Дата 19.10.2009, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 17.10.2009
Где: KZ, Astana

Репутация: 1
Всего: 4



Попробуй типа так

Код

for k:= 1 to Col_Insert do
  L.Add(S.Strings[(I-1) + k]);

--------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин
PM   Вверх
Twiddle
Дата 19.10.2009, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 13.7.2009

Репутация: нет
Всего: нет



amsoft,
спасибо так вроде бы работает.
PM MAIL   Вверх
amsoft
Дата 19.10.2009, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 17.10.2009
Где: KZ, Astana

Репутация: 1
Всего: 4



еще условие в цикле 

while I<S.Count-1 do

поменяй на

while I<S.Count do

иначе проверка до последней строки никогда доходить не будет
--------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0504 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.