Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Döngüye girmemesi
#1
Merhabalar,

Daha önce @mrmarman bey yardımcı olmuştu fakat 2 yerde takıldım.

1. web sitede bulunan satır kadar (while) döngüye sokma.
2. sadece ilk sıradaki veriyi alabiliyorum sonraki satırdaki verileri döngüye girmiyor.

Acaba bu sorunu nasıl çözerim.

Teşekkürler.





function TForm.MakeRequest(aUrl: String): String;
var
  LClient: System.Net.HttpClientComponent.TNetHTTPClient;
  LResponse: System.Net.HttpClient.IHTTPResponse;
begin
  LClient := TNetHTTPClient.Create(nil);
  try
    LClient.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36';
    LClient.Accept := 'text/html';
    LResponse := LClient.Get(aUrl);
    case LResponse.StatusCode of
      200: // success
        Result := LResponse.ContentAsString;
      404: // not found
        Result := '[ERROR] Page not found...';
    else
      Result := '[ERROR]' + sLineBreak + LResponse.ContentAsString;
    end;
  finally
    FreeAndNil(LClient);
  end;
end;


procedure Torm.Button1Click(Sender: TObject);
var
  LContent, Bul: String;
  NumberLines, I: Integer;
begin
  TButton(Sender).Enabled := False;
  try
    LContent := MakeRequest('https://www.xxxxxx/index.html');
    NumberLines := LContent.Length;
    I := 0;
    while (I < NumberLines) do
    begin
      Bul := Copy(BreakOff(LContent, '<div class="divCell">', '</div>'), 1, 8);
      if SameText(Bul, 'NEWHÜLYA') then
      begin
        Showmessage(Bul);
      end;
      Inc(I);
    end;
  finally
    TButton(Sender).Enabled := True;
  end;
end;

function TForm.BreakOff(Text, First, Last: String): String;
begin
  Delete(Text, 1, Pos(First, Text) + Length(First) - 1);
  Result := Copy(Text, 1, Pos(Last, Text) - 1);
end;
Cevapla
#2
Button1 kodunu aşağıdaki şekilde bir deneyin. uses bölümüne System.StrUtils birimini eklemeyi unutmayın.

procedure TForm.Button1Click(Sender: TObject);
const
 BeginStr = '<div class="divCell">';
 EndStr = '</div>';
begin
 TButton(Sender).Enabled := False;
 try
   var Content := MakeRequest('https://www.xxxxxx/index.html');
   var p := PosEx(BeginStr, Content, 1);
   while p > 0 do
   begin
     var BeginPos := p + Length(BeginStr);
     var EndPos := PosEx(EndStr, Content, BeginPos) - BeginPos;
     var Data := Copy(Content, BeginPos, EndPos);
     if SameText('HÜLYA', Data) then
       ShowMessage(Data);
     p := PosEx(BeginStr, Content, BeginPos);
   end;
 finally
   TButton(Sender).Enabled := True;
 end;
end;
Cevapla
#3
(14-02-2023, Saat: 15:29)delphi.developer Adlı Kullanıcıdan Alıntı: Button1 kodunu aşağıdaki şekilde bir deneyin. uses bölümüne System.StrUtils birimini eklemeyi unutmayın.

procedure TForm.Button1Click(Sender: TObject);
const
 BeginStr = '<div class="divCell">';
 EndStr = '</div>';
begin
 TButton(Sender).Enabled := False;
 try
   var Content := MakeRequest('https://www.xxxxxx/index.html');
   var p := PosEx(BeginStr, Content, 1);
   while p > 0 do
   begin
     var BeginPos := p + Length(BeginStr);
     var EndPos := PosEx(EndStr, Content, BeginPos) - BeginPos;
     var Data := Copy(Content, BeginPos, EndPos);
     if SameText('HÜLYA', Data) then
       ShowMessage(Data);
     p := PosEx(BeginStr, Content, BeginPos);
   end;
 finally
   TButton(Sender).Enabled := True;
 end;
end;

Tek kelimeyle harika, Elinize sağlık
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Alerter devreye girmesi girmemesi Kral 1 139 23-10-2024, Saat: 19:13
Son Yorum: Kral



Konuyu Okuyanlar: 1 Ziyaretçi