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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение строки файла до определенного символа, затем переход на следующую 
:(
    Опции темы
Romany4
Дата 27.9.2009, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 5.6.2009
Где: Джамбул

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



Имеется файл с таким содержимым:

Цитата

85.115.192.0 mask 255.255.224.0
212.112.96.0 mask 255.255.224.0
195.38.160.0 mask 255.255.224.0
91.207.96.0 mask 255.255.254.0
...


Использую код:
Код

cmd := 'open';
fil := 'route.exe';
dir:= 'C:';
assign (listfile, 'myfilter.lst');
reset (listfile);
while not eof (listfile) do
  begin
    readln (listfile, strl);
    str:= 'add'+' '+strl+' '+ ip;
    par:= pansichar (str);
    ShellExecute(0, cmd, fil, par, nil, SW_HIDE);
  end;
end;

В общем до конца файла идет цикл, в котором каждая строка присваивается переменной strl
для получения вида:

route add 85.115.192.0 mask 255.255.224.0 ip
route add 212.112.96.0 mask 255.255.224.0 ip
...

Хочу изменить содержимое файла так:
Цитата

85.115.192.0 mask 255.255.224.0; #comment1
212.112.96.0 mask 255.255.224.0; #comment2
195.38.160.0 mask 255.255.224.0; #comment3
91.207.96.0 mask 255.255.254.0; #comment4
...


Как теперь сделать, чтобы функция readln в цикле читала строку только до знака ";", а затем переходла к следующей, т.е. не читала "комментарии"?


PM MAIL WWW ICQ   Вверх
Данкинг
Дата 27.9.2009, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Считывать строку целиком, а затем из неё вырезать "левую" часть, т.е. до нужного символа.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Romany4
Дата 27.9.2009, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 5.6.2009
Где: Джамбул

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



Данкинг, с алгоритмом поможете?
PM MAIL WWW ICQ   Вверх
Данкинг
Дата 27.9.2009, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Алгоритм: заводишь переменную. Перебираешь строку посимвольно. Если символ - не ";", то добавляем его к значению переменной, а если ";", то выходим из цикла.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
~FoX~
Дата 27.9.2009, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


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

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



вместо ReadLn  использовать Read


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Romany4
Дата 3.10.2009, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 5.6.2009
Где: Джамбул

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



Спасибо, справился:

Код
var listfile:textfile;
g, strl:string; // строка файла и переменная для извлечения
begin
  assign (listfile, 'myfilter.lst');
  reset (listfile);
  while not eof (listfile) do
    begin
      readln (listfile, g);
      strl:=copy(g,1,pos(' #',g)-1); // извлекаю текст до символов " #"
      str:= 'add'+' '+strl+' '+ ip;  // присваиваю значение глобальной переменной
      par:= pansichar (str);  // меняю тип
      ShellExecute(0, cmd, fil, par, nil, SW_HIDE); // запускаю
    end;
  closefile (listfile);
end;



Это сообщение отредактировал(а) Romany4 - 3.10.2009, 00:40
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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