Почему не работает цикл?

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by SultanOFF, 18 Nov 2009.

  1. SultanOFF

    SultanOFF Member

    Joined:
    4 Jun 2009
    Messages:
    156
    Likes Received:
    6
    Reputations:
    0
    Здравствуйте. Делаю цикл:
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    ho: integer;
    sv:string;
    Reg2: TRegExpr;
    begin
    Reg2 := TRegExpr.Create;
     Reg2.Expression:= '-?\d+';
    for ho := 0 to memo2.Lines.Count - 1 do
    begin
    if Reg2.Exec(memo2.Lines[ho]) then
    begin
    Reg2.ExecNext;
    sv:= 'c:\xxx\'+reg2.Match[0]+'.zip';
    DownloadFile(memo2.Lines[ho], sv);
    Zip1.FileName:=sv;
    Zip1.OpenArchive;
    Zip1.DeleteFiles('*.html*', faAnyFile, '.rtf');
    Zip1.Comment:='BLABLABLA;
    Zip1.CloseArchive;
    Reg2.Expression:= '<title>(.*?)</title>.*?description" content="(.*?)">';
    downloadurl(memo1.Lines[ho]);
    if Reg2.Exec(memo3.Text) then       //исходный код html загружается в memo3
    begin
    label1.caption:=(reg2.Match[1]);
    label2.caption:=(reg2.Match[2]);
    end;
    memo3.Clear;
    end;
    end;
    но цикл выполняется только для первого файла, дальше не работает :( Отчего и почему? Да кстати если сделать просто вот так:
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    ho: integer;
    sv:string;
    Reg2: TRegExpr;
    begin
    Reg2 := TRegExpr.Create;
     Reg2.Expression:= '-?\d+';
    for ho := 0 to memo2.Lines.Count - 1 do
    begin
    if Reg2.Exec(memo2.Lines[ho]) then
    begin
    Reg2.ExecNext;
    sv:= 'c:\marsel\'+reg2.Match[0]+'.zip';
    DownloadFile(memo2.Lines[ho], sv);
    Zip1.FileName:=sv;
    Zip1.OpenArchive;
    Zip1.DeleteFiles('*.html*', faAnyFile, '.rtf');
    Zip1.Comment:='Marsel';
    Zip1.CloseArchive;
    end;
    end;
    то работает smile
     
  2. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    эммм тупо щитаем begin-ы 3 штуки end; две штуки
    слушай есть этикет программистов http://pers.narod.ru/study/pascal/p6.html

    оформляй код по человеческому блин
     
    _________________________
  3. SultanOFF

    SultanOFF Member

    Joined:
    4 Jun 2009
    Messages:
    156
    Likes Received:
    6
    Reputations:
    0
    хм исправил на вот так
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    ho: integer;
    sv:string;
    Reg2: TRegExpr;
    begin
    Reg2 := TRegExpr.Create;
     Reg2.Expression:= '-?\d+';
    for ho := 0 to memo2.Lines.Count - 1 do
    begin
      if Reg2.Exec(memo2.Lines[ho]) then
       begin
       Reg2.ExecNext;
       sv:= 'c:\marsel\'+reg2.Match[0]+'.zip';
       end;
    DownloadFile(memo2.Lines[ho], sv);
    Zip1.FileName:=sv;
    Zip1.OpenArchive;
    Zip1.DeleteFiles('*.html*', faAnyFile, '.rtf');
    Zip1.Comment:='Marsel';
    Zip1.CloseArchive;
    Reg2.Expression:= '<title>(.*?)</title>.*?description" content="(.*?)">';
    downloadurl(memo1.Lines[ho]);
       if Reg2.Exec(memo3.Text) then
       begin
       showmessage(reg2.Match[1]);
       showmessage(reg2.Match[2]);
       end;
    memo3.Clear;
    end;
    
    end;
    
    но все равно не получается! Отчего? :(
     
  4. DeaD_MoroZ

    DeaD_MoroZ Banned

    Joined:
    3 Nov 2009
    Messages:
    102
    Likes Received:
    7
    Reputations:
    0
    procedure TForm1.Button1Click(Sender: TObject);
    var
    ho: integer;
    sv:string;
    Reg2: TRegExpr;
    begin
    Reg2 := TRegExpr.Create;
    Reg2.Expression:= '-?\d+';
    for ho := 0 to memo2.Lines.Count - 1 do
    begin
    if Reg2.Exec(memo2.Lines[ho]) then
    begin
    Reg2.ExecNext;
    sv:= 'c:\marsel\'+reg2.Match[0]+'.zip';
    end; <---убери, и поставь в конце
    DownloadFile(memo2.Lines[ho], sv);
    Zip1.FileName:=sv;
    Zip1.OpenArchive;
    Zip1.DeleteFiles('*.html*', faAnyFile, '.rtf');
    Zip1.Comment:='Marsel';
    Zip1.CloseArchive;
    Reg2.Expression:= '<title>(.*?)</title>.*?description" content="(.*?)">';
    downloadurl(memo1.Lines[ho]);
    if Reg2.Exec(memo3.Text) then
    begin
    showmessage(reg2.Match[1]);
    showmessage(reg2.Match[2]);
    end;
    memo3.Clear;
    end;

    end;
     
    #4 DeaD_MoroZ, 20 Nov 2009
    Last edited: 20 Nov 2009