Entwickler-Ecke

Internet / Netzwerk - SearchBuf


Mephisto090 - Di 01.09.09 10:47
Titel: SearchBuf
Hallo ich habe ein kleines Problem

Ich will aus einem TWebbrowser ein quelltext auslesen (HTML) das auslesen ist kein Prob aber im HTML Quelltext sind enterzeichen und SearchBuf hat damit Probleme



Quelltext
1:
2:
3:
4:
5:
6:
<TD class=svClosed><A href="/stats/eos">Eos (New)</A></TD>
<TD class=svClosed>0/3500</TD>
<TD class=svClosed>
<DIV align=right>100.0</DIV></TD>
<TD class=svClosed>Closed</TD></TR>
<TR>



Delphi-Quelltext
1:
2:
3:
if SearchBuf(Buff, length(Buff), 00'>' + edtServername.Text + '</A></TD> (((!!! Siehe Text drunter !!!))) <TD class=svClosed>') <> nil then

if SearchBuf(Buff, length(Buff), 00'>' + edtServername.Text + '</A></TD><TD class=svClosed>') <> nil then


Da wo Siehe Text drunter steht muss ich irgendwie das Enter zeichen rein bekommen mit #13 geht es nicht

Danke im Vorraus


Lannes - Di 01.09.09 12:05

Hallo,

das funktioniert.

Delphi-Quelltext
1:
2:
if SearchBuf(Buff,length(Buff),0,0,
            '>' + edtServername.Text + '</A></TD>'+#13+'<TD class=svClosed>') <> nil then


bist Du Dir sicher das #13 ausreichend ist?


Mephisto090 - Di 01.09.09 12:13

warum gehts dann bei mir so nicht ich verstehe das nicht ich kann ja mal mehr Quelltext rein Posten


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
procedure TForm1.Update;
var Buff: PChar;
    sourcecode: string;
    Player, Gesamt, PoC, PoCK: Integer;
begin
  sourcecode:= Wb1.OleObject.Document.documentElement.innerHTML;
  Buff:= PChar(sourcecode);
  mmo2.Clear;
  mmo2.Lines.Add(sourcecode);
  if SearchBuf(Buff, length(Buff), 00'>' + cbbServername.Text + '<') <> nil then
  begin
    lblServername.Font.Color:= clBlack;
    lblServername.Caption:= 'Servername: ' + cbbServername.Text;
    if SearchBuf(Buff, length(Buff), 00'>' + cbbServername.Text + '</A></TD>'+#13+'<TD class=svClosed>') <> nil then
    begin
      lblStatus.Font.Color:= clRed;
      lblStatus.Caption:= 'Status: Closed';
      For Player:= 0 to 4000 do
      begin
        if SearchBuf(Buff, length(Buff), 00'<TD class=svClosed>' + IntToStr(Player) + '/') <> nil then
        begin
          Application.ProcessMessages;
          For Gesamt:= 2000 to 4000 do
          begin
            if SearchBuf(Buff, length(Buff), 00'<td class=svClosed>' + IntToStr(Player) + '/' + IntToStr(Gesamt) + '</td') <> nil then
            begin
              Application.ProcessMessages;
              lblPlayer.Caption:= 'Player: ' +  IntToStr(Player) + '/' + IntToStr(Gesamt);
              For PoC:= 0 to 100 do
              begin
                if SearchBuf(Buff, length(Buff), 00'<div align=right>'+ IntToStr(PoC)) <> nil then
                begin
                  Application.ProcessMessages;
                  For PoCK:= 0 to 9 do
                  begin
                    if SearchBuf(Buff, length(Buff), 00'<div align=right>'+ IntToStr(PoC) + '.' + IntToStr(PoCK) + '</DIV>') <> nil then
                    begin
                      Application.ProcessMessages;
                      If (PoC > 80Then
                      begin
                        lblPoc.Font.Color:= clGreen;
                      end;
                      If (PoC < 80and (PoC > 20Then
                      begin
                        lblPoc.Font.Color:= clYellow;
                      end;
                      If (PoC < 20Then
                      begin
                        lblPoc.Font.Color:= clRed;
                      end;
                      lblPoc.Caption:= 'PoC: ' + IntToStr(PoC) + '.' + IntToStr(PoCK) + ' %';
                    end;
                  end;
                end;
              end;
            end;
          end;
        end;
      end;
    end;
  end
  else
  begin
    if not (SearchBuf(Buff, length(Buff), 00'>Server Inspection</td') <> nilthen
    begin
      lblServername.Font.Color:= clRed;
      lblServername.Caption:= 'Servername: Nicht Gefunden';
    end;
  end;
  if (SearchBuf(Buff, length(Buff), 00'>Server Inspection</td') <> nilthen
  begin
    lblServername.Font.Color:= clRed;
    lblServername.Caption:= 'Server Inspection';
    lblPlayer.Visible:= False;
    lblPoc.Visible:= False;
    lblStatus.Visible:= False;
    cbbServername.Enabled:= False;
  end
  else
  begin
    lblPlayer.Visible:= True;
    lblPoc.Visible:= True;
    lblStatus.Visible:= True;
    cbbServername.Enabled:= True;
  end;
end;


ab dem 2 SearchBuf macht er nicht weiter weil wie gesagt der Quelltext lass ich mir in einem Memo ausgeben leerzeichen hat oder sowas in der art

EDIT: nach dem 2 fehlt bei SearchBuf eine Menge also nicht beachten :p

Auszug aus dem TMemo


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
<TR>
<TD class=svClosed><A href="/stats/apollo">Apollo (New)</A></TD>
<TD class=svClosed>0/3500</TD>
<TD class=svClosed>
<DIV align=right>100.0</DIV></TD>
<TD class=svClosed>Closed</TD>
<TD> </TD>
<TD class=svClosed><A href="/stats/titan">Titan (New)</A></TD>
<TD class=svClosed>0/3500</TD>
<TD class=svClosed>
<DIV align=right>100.0</DIV></TD>
<TD class=svClosed>Closed</TD></TR>


und da ich ja nicht die ausgaben von Irgendwelchen Servern haben will muss ich halt dieses Enter beachten und immer weiter machen


platzwart - Di 01.09.09 12:19

#13#10 ?


Lannes - Di 01.09.09 13:10

Hallo,

user profile iconLannes hat folgendes geschrieben Zum zitierten Posting springen:
bist Du Dir sicher das #13 ausreichend ist?
:wink:

was mir noch so auffällt:
SearchBuf(Buf: PAnsiChar ...) erwartet PAnsiChar


Mephisto090 - Di 01.09.09 14:54

cool mit #13#10 hat es geklappt