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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2010, 17:13   #11
Univerce =)
Новичок
Джуниор
 
Регистрация: 10.01.2010
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Usov Посмотреть сообщение
чего изобретать велосипед? используйте библиотеку RegExp
с удовольствием =))
поделитесь примером пожалуйста
Univerce =) вне форума Ответить с цитированием
Старый 11.01.2010, 17:17   #12
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вы уверены что мой код зависает?
вы трассировали?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.01.2010, 18:23   #13
Univerce =)
Новичок
Джуниор
 
Регистрация: 10.01.2010
Сообщений: 9
По умолчанию

да, виснет. мне кажется она зацикливается потому что переменная i никогда нулевой не будет.
"трассировали" это как?

Компилирую, потом запускаю из папки с проектом, нажимаю на кнопку если вы это спрашивали
Univerce =) вне форума Ответить с цитированием
Старый 11.01.2010, 18:26   #14
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

трассировка это построчное выполнение кода, и также использование точек останова в критических местах(для контроля переменных).

текст большой?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.01.2010, 19:30   #15
Univerce =)
Новичок
Джуниор
 
Регистрация: 10.01.2010
Сообщений: 9
По умолчанию

текст большой, специально под эту функцию сделал новый проект, ибо мучался с ним долго.

как сделать трассировку ?
Univerce =) вне форума Ответить с цитированием
Старый 11.01.2010, 19:54   #16
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

F7 помоему это по строчкам идти(уже не очень помню)
а лучше внутри функции поставьте точки останова...(в цикле)
и следите как меняется Text
кстати проверьте на небольшом тексте работу...
на большом может просто долго
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.01.2010, 19:54   #17
AndrzejX
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 55
По умолчанию

Из своего проекта:
Код:
function GetLink(var Text: String): String; //Получение ссылки вида <a href="page.htm">
var k, n: Integer;
begin
k:=pos('<a ', Text);
  n:=k;
  while Text[n]<>'>' do
    n:=n+1;
Result:=copy(Text, k, n-k+1);
Text:=copy(Text, n+1, Length(Text)-n);
end;

function GetPage(Link: String): String; //Получение page.htm
var k, n: Integer;
 apo: String;
begin
k:=pos('href=', Link);
apo:=Link[k+5];
if k<>0 then
  begin
    k:=k+6;
    n:=k;
    while (Link[n]<>apo) do
      n:=n+1;
    Result:=copy(Link, k, n-k);
    k:=pos('#', Result);
    if k<>0 then Result:=copy(Result, 1, k-1);
    k:=pos('?', Result);
    if k=Length(Result) then Result:=copy(Result, 1, k-1)
  end;
end;
Первая функция ищет сами ссылки, вторая "выдирает" адрес, неважно, внутренний или внешний. Я потом это тоже анализирую. Использование:

Код:
while pos('<a ', Text)<>0 do
  begin
    Link:=GetLink(Text);//Получение ссылки вида <a href="page.htm">
    Link:=GetPage(Link);//Получение page.htm
  end;

Последний раз редактировалось AndrzejX; 11.01.2010 в 20:00.
AndrzejX вне форума Ответить с цитированием
Старый 11.01.2010, 19:59   #18
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

AndrzejX, а кто сказал что у ТС HTML?
он об этом даже не заикался...иначе бы не было столько мороки
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.01.2010, 20:08   #19
_bAd_
Пользователь
 
Регистрация: 11.01.2010
Сообщений: 21
По умолчанию

я дико извиняюсь, что не стал читать все посты, но мне кажца всё можно было решить заменив
С:=Copy(tekst, linkB, linkB-linkE);//выдераем
на
С:=Copy(tekst, linkB, linkE-linkB);//выдераем
либо
С:=Copy(tekst, linkB, linkE-linkB-1);//выдераем
_bAd_ вне форума Ответить с цитированием
Старый 11.01.2010, 20:33   #20
AndrzejX
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 55
По умолчанию

Код:
var
  Form1: TForm1;

implementation

{$R *.dfm}

function GetLink(var Text: String): String;
var k, n: Integer;
begin
k:=pos('http://', Text);
  n:=k;
  while Text[n]<>' ' do
    n:=n+1;
Result:=copy(Text, k, n-k+1);
Text:=copy(Text, n+1, Length(Text)-n);
end;

procedure TForm1.Button1Click(Sender: TObject);
var Text, Link: String;
begin
Text:=Memo1.Text;
while pos('http://', Text)<>0 do
  begin
    Link:=GetLink(Text);
    ComboBox1.Items.Add(Link);
  end;
end;

end.
Все ссылки в комбобоксе. Всё вроде работает.
Вложения
Тип файла: rar Linker.rar (169.4 Кб, 9 просмотров)

Последний раз редактировалось AndrzejX; 11.01.2010 в 20:37.
AndrzejX вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с текстом severin Помощь студентам 1 08.11.2009 17:06
Работа с текстом!!! elf80 Microsoft Office Excel 2 24.09.2009 09:54
работа с текстом... Poll Помощь студентам 5 23.01.2009 11:43
Работа с текстом(C++) silent_witcher Помощь студентам 1 13.12.2008 17:55