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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2008, 00:09   #1
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
Смущение територия мемо и хтмл.а живущего в нём

извините меня пожалуйста я поиском ползоваться умею нашёл но так и ничего не понял скоко перечитывал сам поражаюсь отдыхать уже пора наверное .Вот что мне надо я достаю хтмл и записую в мемо потом убираю низ и верх остаёться таблица (но на хтмле) что надо написать чтобы найти текст между "<b>"81.45 и "</b>" скопировать его и вставить к примеру в бд (вставить я сумею)потом продолжить ещё такую строчку искать и тоже копирывать и тоже в ставить в бд и т.д. обьясните подробно или дайте код (лучше ко и обьяснение))))
IvaniuS вне форума Ответить с цитированием
Старый 16.10.2008, 00:41   #2
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

где-то нашёл исходник там ищется от пробела до @ и до проблела а мне надо от <b> до </b> и тто что внутри скопировать

Последний раз редактировалось IvaniuS; 16.10.2008 в 19:54.
IvaniuS вне форума Ответить с цитированием
Старый 16.10.2008, 13:02   #3
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

Вот как вариант (но тут оба тега должны быть в одной строке):
Код:
procedure Scan(Since, Till: string); //Since - первый тег, Till - второй;
var
  I, s, e: integer;
begin
  s := 0;
  e := 0;
  for I := 0 to Memo1.Lines.Count - 1 do
  begin
    s := pos(Since, Memo1.Lines.Strings[i]);
    e := pos(Till, Memo1.Lines.Strings[i]);
    if (s <> 0) and (e <> 0) then
    begin
      ListBox1.Items.Add(copy(Memo1.Lines.Strings[i],
        s + length(Since), e - s - length(Till) - 1));
      s := 0;
      e := 0;
    end;
  end;
end;
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Scan('<b>', '</b>');
end;
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.
VVM вне форума Ответить с цитированием
Старый 16.10.2008, 17:52   #4
AlexRastr
 
Регистрация: 02.10.2008
Сообщений: 7
По умолчанию

Можно сделать так:

var
i, j: integer;
tag_table: OleVariant;
begin
tag_table := WebBrowser1.OleObject.Document.all. tags('b).item(0);

for i := 0 to (tag_table.Rows.Length - 1) do
begin
for j := 0 to (tag_table.Rows.Item(i).Cells.Lengt h - 1) do
begin
Memo1.Lines.Add(tag_table.Rows.Item (i).Cells.Item(j).InnerText);
end;
end;
AlexRastr вне форума Ответить с цитированием
Старый 16.10.2008, 19:38   #5
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

спасибо как проверю забам вопросы я понемаю если у меня несколько мемо то можно поставить цикл и задать условие как
if (s <> 0) and (e <> 0) and (I < 7)then begin
i:=i+1;
if i=1 then begin
ListBox1.Items.Add(copy(Memo1.Lines .Strings[i],
s + length(Since), e - s - length(Till) - 1));
end;
if i=2 then begin
ListBox2.Items.Add(copy(Memo1.Lines .Strings[i],
s + length(Since), e - s - length(Till) - 1));
end;
s := 0;
e := 0;
end else
i:=i-6;
и т.д.
терь ещё 1 вопрос как все что в листбоксе, все столбци скопировать или експортировать в фаил??? (лучше скопировать пусть даже в буфер просто потом в екслеь вставлять я то потом додумаю главное как все скопить или по 1???)
IvaniuS вне форума Ответить с цитированием
Старый 16.10.2008, 22:34   #6
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

VVM а можно отвязать её от регистра а то у меня иногда вот так </B> или авто замену придумать?

Последний раз редактировалось IvaniuS; 17.10.2008 в 00:52.
IvaniuS вне форума Ответить с цитированием
Старый 17.10.2008, 00:52   #7
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

да и и у мня числа некоторые между б и \б с точками то что после точки он не видит(
IvaniuS вне форума Ответить с цитированием
Старый 17.10.2008, 09:28   #8
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Проще поищите по ключевым словам парсеры html в гугле
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 17.10.2008, 12:13   #9
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

Цитата:
я понемаю если у меня несколько мемо то можно поставить цикл и задать условие как ...
Я бы просто прогнал эту процедуру по всем МЕМО отдельно =)
Цитата:
терь ещё 1 вопрос как все что в листбоксе, все столбци скопировать или експортировать в фаил??? (лучше скопировать пусть даже в буфер просто потом в екслеь вставлять я то потом додумаю главное как все скопить или по 1???)
Код:
ListBox1.Items.SaveToFile('C:\List.txt'); // вроде так.
Цитата:
VVM а можно отвязать её от регистра а то у меня иногда вот так </B> или авто замену придумать?
Код:
procedure Scan1(Since, altSince, Till, altTill: string);
var
  I, s, e: integer;
begin
  s := 0;
  e := 0;
  for I := 0 to Memo1.Lines.Count - 1 do
  begin
    s := pos(Since, Memo1.Lines.Strings[i]);
    if s = 0 then
      s := pos(altSince, Memo1.Lines.Strings[i]);      
    e := pos(Till, Memo1.Lines.Strings[i]);
    if e = 0 then
      e := pos(altTill, Memo1.Lines.Strings[i]);
    if (s <> 0) and (e <> 0) then
    begin
      ListBox1.Items.Add(copy(Memo1.Lines.Strings[i],
        s + length(Since), e - s - length(Till) - 1));
      s := 0;
      e := 0;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Scan1('<b>', '<B>', '</b>', '</B>');
end;
Цитата:
да и и у мня числа некоторые между б и \б с точками то что после точки он не видит(
Процедура видит вставку между тегами как подстроку. Какой там символ - не имеет значения.
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.

Последний раз редактировалось VVM; 17.10.2008 в 12:16.
VVM вне форума Ответить с цитированием
Старый 18.10.2008, 02:37   #10
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

слушай спасибо разобрался в коде почти, всё норм уже немного переделал, короче так: у меня всеравно после последней точки между б и \б нету чисел та и букав ну например : это в коде "<b>76.85</B>" а это он выдаёт и в мемо и в лист боксе : "76." я работаю с числами и точность нужна может всётаки есть решение я уже пробую щас от б до точки и до \б вот так ну посмотрим отпишусь потом
IvaniuS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать текстовой файл и подсчитать количество символов в нём. GN_ Паскаль, Turbo Pascal, PascalABC.NET 4 26.05.2010 19:45
Строки в Мемо anymol Помощь студентам 5 03.10.2008 20:44
StpServer (or TopServer) не могу на нём запустить скрипт _kT PHP 1 12.07.2008 01:32
мемо ben95 Общие вопросы Delphi 1 29.01.2008 10:10