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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2010, 13:48   #1
cheef
Форумчанин
 
Регистрация: 16.03.2009
Сообщений: 205
По умолчанию Парсинг текстовых файлов. Pascal

Программа должна парсить файл и считывать ник пользователя и его ссылку на контакт.
С контактом разобрался. А вот, как выдернуть ник не пойму.
Вот пример файла:
Тоесть нужно выдернуть
AgentSAB, bad company, фывя, Ganibal921.

Этот код выдёргивает ссылку на контакт
Код:
program ads;
var
i :integer;
s,q:string;
FIL:text;
begin
assign(FIL,'vkontakte.txt');
reset(FIL);
while not EOF(FIL) do begin
readln(FIL,s);
for i:=1 to length(s) do begin
if ((s[i]='h')and(s[i+1]='t')and(s[i+2]='t')and(s[i+3]='p')) then begin
q:=copy(s,i,length(s));
writeln(q);
end;
end;
end;
close(FIL);
readln;
end.
Суть понял так: если s[i]=пробелу значит начинай кидать символы в перемунную если увидел, то что s[i]='h',s[i+1]='t',s[i+2]='t',s[i+3]='p', то заканчивай.

Последний раз редактировалось cheef; 10.11.2010 в 13:53.
cheef вне форума Ответить с цитированием
Старый 10.11.2010, 13:54   #2
Блуд
Пользователь
 
Регистрация: 23.05.2010
Сообщений: 53
По умолчанию

st:=copy(s,3,pos('http',s)-3);

Последний раз редактировалось Блуд; 10.11.2010 в 13:57.
Блуд вне форума Ответить с цитированием
Старый 10.11.2010, 13:56   #3
cheef
Форумчанин
 
Регистрация: 16.03.2009
Сообщений: 205
По умолчанию

Цитата:
Сообщение от Блуд Посмотреть сообщение
st:=copy(s,3,pos('http')-3);
Не вариант, то что с 3-го символа начинается бывает и так:
Цитата:
42 ми@шк@ http://vkontakte.ru/muaxa
147 chucknorris http://vkontakte.ru/mrpepper
cheef вне форума Ответить с цитированием
Старый 10.11.2010, 14:02   #4
cheef
Форумчанин
 
Регистрация: 16.03.2009
Сообщений: 205
По умолчанию

if s[i]=' ' then begin
st:=copy(s,i,pos('http',s)-3);
write(st);
Сделал так но всё начало ломаться и выводит в текстовый файл так:
Всё ломает.
cheef вне форума Ответить с цитированием
Старый 10.11.2010, 14:09   #5
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

чувак, ищи закономерность.
здесь ясно видно, что все что до первого пробела - порядковый номер,
а все что от первого пробела до первого "http://" - ник,
ну а все остальное - сцылко.

p.s.
такой способ актуален только если
синтаксис исходного текста везде одинаков,
в противном случае без ручной работы не обойтись
xrob вне форума Ответить с цитированием
Старый 10.11.2010, 14:22   #6
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Код:
program ads;
var
i,startpos,endpos :integer;
s,q,number,name:string;
FIL:text;
begin
assign(FIL,'vkontakte.txt');
reset(FIL);
while not EOF(FIL) do
  begin
  readln(FIL,s);
  for i:=1 to length(s) do
   begin
   if s[i] = ' ' then begin number := copy(s,1,i); startpos := i+1; break; end;
   end;
  for i:=startpos to length(s) do
   begin
   if ((s[i]='h')and(s[i+1]='t')and(s[i+2]='t')and(s[i+3]='p')) then
    begin q:=copy(s,i,length(s)); endpos := i-1; break; end;
   end;
  name := copy(s,startpos,endpos-startpos+1);
  writeln ( number,'    ',name,'    ',q);
  end;
close(FIL);
readln;
end.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 10.11.2010, 14:31   #7
cheef
Форумчанин
 
Регистрация: 16.03.2009
Сообщений: 205
По умолчанию

Спасибо большое!
cheef вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение текстовых файлов. the_deer_one Общие вопросы C/C++ 3 05.04.2010 14:06
Обработка текстовых файлов Маринка777 Общие вопросы .NET 2 22.12.2009 17:37
Обработка текстовых файлов Frenki Помощь студентам 4 17.05.2009 14:52
Сравнение текстовых файлов BR17UY Общие вопросы Delphi 15 07.05.2007 20:18