Autor Beitrag
Moonbiker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37



BeitragVerfasst: Mo 31.07.06 20:09 
Hi ihr,
ich führe per Indy einen HTTP Request auf eine Seite aus, und speicher dies in einem String. Nun möchte ich diesen String mit dem String eines HTTP Req. nach einer best. Zeit vergleichen. komischerweise ist jener immer anders, auch wenn sich an der Seite nichts ändert.

Könnt ihr mir sagen warum?

Hier Nun der vollständige Code:
ausblenden volle Höhe 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:
unit mainunit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdHTTP;

type
  TMainForm = class(TForm)
    StartStopButton: TButton;
    CheckTimer: TTimer;
    IntervallEdit: TEdit;
    BeschrLabel1: TLabel;
    BeschrLabel2: TLabel;
    ZielSeiteEdit: TEdit;
    BeschrLabel3: TLabel;
    AenderungsLabel: TLabel;
    IdHTTP: TIdHTTP;
    procedure EditKeyPress(Sender: TObject; var Key: Char);
    procedure StartStopButtonClick(Sender: TObject);
    procedure IntervallEditExit(Sender: TObject);
    procedure CheckTimerTimer(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  MainForm: TMainForm;

implementation

{$R *.dfm}
procedure TMainForm.EditKeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8]) then key:=#0;
end;

procedure TMainForm.IntervallEditExit(Sender: TObject);
begin
if (IntervallEdit.Text=''then IntervallEdit.Text:='1000';
end;

procedure TMainForm.StartStopButtonClick(Sender: TObject);
begin
if (CheckTimer.Enabled) then
  begin
  CheckTimer.Enabled:=false;
  IntervallEdit.Enabled:=true;
  ZielseiteEdit.Enabled:=true;
  StartStopButton.Caption:='Starten';
  end
else
  begin
  if not (IntervallEdit.Text=''then
        CheckTimer.Interval:=StrToInt(IntervallEdit.Text);
  IntervallEdit.Enabled:=false;
  ZielseiteEdit.Enabled:=false;
  CheckTimer.Enabled:=true;
  StartStopButton.Caption:='Stoppen';
  end;
end;

procedure TMainForm.CheckTimerTimer(Sender: TObject);
var
  Req,tmp:String;
begin
if (ZielseiteEdit.Text<>''then tmp:=IdHTTP.Get(ZielseiteEdit.Text);

if (Req<>tmp) then
    AenderungsLabel.Caption:=DateTimeToStr(Now)+ ' Uhr';
Req:=tmp;
end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CheckTimer.Enabled:=false;
end;

end.


Vielen Dank

Moderiert von user profile iconAXMD: Code- durch Delphi-Tags ersetzt
Grendel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 443

Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
BeitragVerfasst: Mo 31.07.06 20:21 
Das kann auch nicht funktionieren:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TMainForm.CheckTimerTimer(Sender: TObject);
var
  Req,tmp:String;
begin
if (ZielseiteEdit.Text<>''then tmp:=IdHTTP.Get(ZielseiteEdit.Text);

if (Req<>tmp) then
    AenderungsLabel.Caption:=DateTimeToStr(Now)+ ' Uhr';
Req:=tmp;
end;


Req ist nur lokal deklariert und wird nicht initialisiert. d.h. zum Zeitpunkt des Vergleiches ist der Inhalt undefiniert.

Wirf Req aus der Variablendeklaration raus und pack es in Deklaration von TMainForm:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  TMainForm = class(TForm)
    [..]
  private
    { Private-Deklarationen }
    Req: String;
  public
    { Public-Deklarationen }
  end;


Bis neulich ...
Moonbiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37



BeitragVerfasst: Mo 31.07.06 20:29 
Jo, funktioniert nun, auch wenn ich noch ni ganz verstanden habe warum...

Danke!