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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2009, 15:43   #11
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Судя по содержимому мемо, там два матча (Аахен-Санкт-Паули и Оденсе-Мидюлленд). Почему тогда на скрине выше так много всего?

В общем, рабочий вариант:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i,k,a,b:integer;
begin
i := 0;
st:=memo1.Lines.text;
k := 1;

while true do
 begin
 a := posEx('<b id=r>1)',st,k);
 if a=0 then break;
 b := posEx('</b> ',st,a);
 kom1 := copy(st,a+10,b-a-10);  // первая команда
 k := b;
 a := posEx('<b>',st,k);
 b := posEx('</b>',st,a);
 win1 := copy(st,a+3,b-a-3); // первое число
 win1 := Trim(win1);

 k := b+4;
 b := posEx('<b>',st,k);
 inf := copy(st,k,b-k);
 inf := Trim(inf);
 a := pos(' ',inf);
 nich := copy(inf,1,a);
 win2 := copy(inf,a,length(inf));
 win2 := Trim(win2);

 a := posEx('<b id=r>2)',st,k);
 b := posEx('</b>',st,a);
 kom2 := copy(st,a+10,b-a-10);  // вторая команда
 k := b;

 inc(i);
 if i>1 then StringGrid1.RowCount := i+1;
 StringGrid1.Cells[1,i]:=kom1+ ' - '+kom2;
 StringGrid1.Cells[2,i]:=win1;
 StringGrid1.Cells[3,i]:=nich;
 StringGrid1.Cells[4,i]:=win2;
 end;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
StringGrid1.ColWidths[1]:=90;
StringGrid1.ColWidths[2]:=40;
StringGrid1.ColWidths[3]:=40;
StringGrid1.ColWidths[4]:=40;
StringGrid1.RowCount := 2;
end;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 17.08.2009, 17:55   #12
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

Удалить строку, ячейки 1-й колонки привышают 100 символов
Данная процедура удаляет только 1 клик = - 1 ненужная строка, а мне нужно что бы все как то за 1 клик удалилось....
Код:
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
for i:=1 to Stringgrid1.RowCount-1 do
If length(Stringgrid1.cells[1,i])>100 then Tgr(StringGrid1).DeleteRow(i);
end;
Lemo вне форума Ответить с цитированием
Старый 17.08.2009, 18:16   #13
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

А вот это что такое?
Код:
Tgr(StringGrid1).DeleteRow(i);
Вот так попробуйте:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
i:=1;
while i<StringGrid1.RowCount do
 begin
 If length(Stringgrid1.cells[1,i])>100 then 
  begin
  Tgr(StringGrid1).DeleteRow(i);
  dec(i);
  end;
 inc(i);
 end;
end;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 17.08.2009, 18:48   #14
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

Работает...
А как вот брать текст не с мемо а с файла(текстового)
Делал вот так:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,StrUtils, Grids, sButton, sEdit, sMemo;

type
Tgr=class(Grids.TCustomGrid)
end;
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    StringGrid1: TStringGrid;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  kom1,kom2,win1,win2,nich,inf,st:String;
  f:textfile;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i,k,a,b:integer;
begin
i := 0;
k := 1;

AssignFile(f,'MyFile.txt');
reset(f);
while not eof(f) do
 begin
 Readln(f,st);
 a := posEx('<b id=r>1)',st,k);
 if a=0 then break;
 b := posEx('</b> ',st,a);
 kom1 := copy(st,a+10,b-a-10);  // первая команда
 k := b;
 a := posEx('<b>',st,k);
 b := posEx('</b>',st,a);
 win1 := copy(st,a+3,b-a-3); // первое число
 win1 := Trim(win1);

 k := b+4;
 b := posEx('<b>',st,k);
 inf := copy(st,k,b-k);
 inf := Trim(inf);
 a := pos(' ',inf);
 nich := copy(inf,1,a);
 win2 := copy(inf,a,length(inf));
 win2 := Trim(win2);

 a := posEx('<b id=r>2)',st,k);
 b := posEx('</b>',st,a);
 kom2 := copy(st,a+10,b-a-10);  // вторая команда
 k := b;

 inc(i);
 if i>1 then StringGrid1.RowCount := i+1;
 StringGrid1.Cells[1,i]:=kom1+ ' - '+kom2;
 StringGrid1.Cells[2,i]:=win1;
 StringGrid1.Cells[3,i]:=nich;
 StringGrid1.Cells[4,i]:=win2;


 end;
  CloseFile(f);

 i:=1;
while i<StringGrid1.RowCount do
 begin
 If length(Stringgrid1.cells[1,i])>100 then
  begin
  Tgr(StringGrid1).DeleteRow(i);
  dec(i);
  end;
 inc(i);
 end;
 
end;


procedure TForm1.FormActivate(Sender: TObject);

begin
StringGrid1.ColWidths[1]:=150;
StringGrid1.ColWidths[2]:=40;
StringGrid1.ColWidths[3]:=40;
StringGrid1.ColWidths[4]:=40;




end;


end.
на сколько понял, я не продвигаюся по строкам файла или хз!
Lemo вне форума Ответить с цитированием
Старый 17.08.2009, 18:57   #15
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Сделайте лучше вот так:
Код:
var
list : TStringList;
...............
...............
...............
list := TstringList.Create;
list.LoadFromFile('test.txt');
st := list.Text;
list.Free;
...............
...............
..............
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 19.08.2009, 02:20   #16
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

Код:
<TBODY class=row1><TR><td>19/08<br>21:45<td class=l>Левски (BGR)<br>Дебрецен (HUN)<td><b >0</b><BR><b >0</b><td><A onClick="return m(this)" href=/ id="r39_130_LIg3r5zUOHSAZxTpgwDD">1.30</a><BR><A onClick="return m(this)" href=/ id="r39_330_BvWI5VobAjG4l2nUzj78">3.30</a><td>&nbsp;<BR>&nbsp;<td><b >2.5</b><td><A onClick="return m(this)" href=/ id="r39_210_m21zWNMctcRA^uT9rlDT">2.10</a><td><A onClick="return m(this)" href=/ id="r39_168_UbfUaSZIoAIW5ffUPb68">1.68</a><td><A onClick="return m(this)" href=/ id="r39_170_FrSX1G.GTNqjJItjbzMF">1.70</a><td><A onClick="return m(this)" href=/ id="r39_345_2fTIEZpVmS19BstKnBMf">3.45</a><td><A onClick="return m(this)" href=/ id="r39_480_P.6AnRK^BsW0NXtrjAMV">4.80</a><td><A onClick="return m(this)" href=/ id="r39_114_5GuWBrQHn2QyNoU9jyET">1.14</a><td><A onClick="return m(this)" href=/ id="r39_127_8w4yOXIevQMVzKhClBx.">1.27</a><td><A onClick="return m(this)" href=/ id="r39_205_L930rENb^LFDXMdkhDuN">2.05</a><td><b >1.5</b><BR><b >1.0</b><td><A onClick="return m(this)" href=/ id="r39_190_DsrR3nFaa2Aldw61Yxfc">1.90</a><BR><A onClick="return m(this)" href=/ id="r39_266_OpGh8U9gUbF4l2nUzj78">2.66</a><td><A onClick="return m(this)" href=/ id="r39_180_AJbG66R7nkI7qlVp_uFD">1.80</a><BR><A onClick="return m(this)" href=/ id="r39_142_uAh3shC16Gz5wa7QAjnd">1.42</a></TR>

Красным отмечено то, что я уже без проблем запарсил!
Сиреневым - возникли проблемы, так как ети хеши не постоянны, низнаю на что опереться =((
Жду совета
Lemo вне форума Ответить с цитированием
Старый 19.08.2009, 02:34   #17
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Для наглядности немного по-другому запишем эту строку:
Код:
<TBODY class=row1><TR><td>19/08<br>21:45<td class=l>Левски (BGR)<br>Дебрецен (HUN)<td><b >0</b><BR><b >0</b><td>
<A onClick="return m(this)" href=/ id="r39_130_LIg3r5zUOHSAZxTpgwDD">1.30</a><BR>
<A onClick="return m(this)" href=/ id="r39_330_BvWI5VobAjG4l2nUzj78">3.30</a><td>&nbsp;<BR>&nbsp;<td><b >2.5</b><td>
<A onClick="return m(this)" href=/ id="r39_210_m21zWNMctcRA^uT9rlDT">2.10</a><td>
<A onClick="return m(this)" href=/ id="r39_168_UbfUaSZIoAIW5ffUPb68">1.68</a><td>
<A onClick="return m(this)" href=/ id="r39_170_FrSX1G.GTNqjJItjbzMF">1.70</a><td>
<A onClick="return m(this)" href=/ id="r39_345_2fTIEZpVmS19BstKnBMf">3.45</a><td>
<A onClick="return m(this)" href=/ id="r39_480_P.6AnRK^BsW0NXtrjAMV">4.80</a><td>
<A onClick="return m(this)" href=/ id="r39_114_5GuWBrQHn2QyNoU9jyET">1.14</a><td>
<A onClick="return m(this)" href=/ id="r39_127_8w4yOXIevQMVzKhClBx.">1.27</a><td>
<A onClick="return m(this)" href=/ id="r39_205_L930rENb^LFDXMdkhDuN">2.05</a><td><b >1.5</b><BR><b >1.0</b><td>
<A onClick="return m(this)" href=/ id="r39_190_DsrR3nFaa2Aldw61Yxfc">1.90</a><BR>
<A onClick="return m(this)" href=/ id="r39_266_OpGh8U9gUbF4l2nUzj78">2.66</a><td>
<A onClick="return m(this)" href=/ id="r39_180_AJbG66R7nkI7qlVp_uFD">1.80</a><BR>
<A onClick="return m(this)" href=/ id="r39_142_uAh3shC16Gz5wa7QAjnd">1.42</a></TR>
как видно, у строк очень много общего и хеши - единственное, что их отличает.

Заводим счетчик.
1) Ищем первое:
Код:
<A onClick="return m(this)"
Увеличиваем счетчик.
2) Ищем следующее
Код:
<A onClick="return m(this)"
снова увеличиваем.

3) Если счетчик = 5, то мы дошли до нужной строки (где 1.70).
Начиная с этой позиции ищем символы ">. Эту позицию запишем, например, в Позиция1.
Теперь начиная с (Позиция1+2) ищем символы </a>. Э
то Позиция2.
Берем все, что между (Позиция1+2) и Позиция2 - это нужное нам число 1.70.

Теперь возвращаемся к шагу 2) и снова ищем
Код:
<A onClick="return m(this)"
Далее повторяем шаг 3 - получаем значение 3.45.

Снова шаг 2) -> шаг 3) -> получили значение 4.80.

Вот и все.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 19.08.2009, 02:37   #18
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

Завтра попробую => отпишуся!
ЗЫ:спс.
Lemo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клик в нужной части экрана suvor111 JavaScript, Ajax 9 29.04.2009 19:57
ввод информации с клавиутуры в двумерный масив, запись информации с масива в файл x_omega_x Помощь студентам 1 29.12.2008 02:30
Сохранять текст в нужной кодировке snake-as Microsoft Office Excel 5 28.10.2008 06:37
Проверка наличия нужной Флешки ??? Noor Общие вопросы Delphi 7 09.11.2007 17:39