Einzelnen Beitrag anzeigen

Benutzerbild von CTV
CTV

Registriert seit: 20. Jan 2004
Ort: Zug CH
83 Beiträge
 
Delphi 7 Professional
 
#9

Re: funktion liest den wert zu früh

  Alt 25. Mai 2005, 08:40
ich habs nu so:

Delphi-Quellcode:
function TFormMain.ExtractGR(url: OleVariant): Double;
var
  s, s2: string;
  i1, i2: integer;
begin
  if pos('s=', url) > 0 then begin
    WB_GetHTMLCode(wb2,dis);
    s := dis.Text;
    i1 := pos('edl', s) + 12;
    i2 := pos('//', s) - 1;
    s2 := copy(s, i1, i2 - i1);
    try
      result:=strtofloat(s3);
    except
      result:=0;
    end;
  end;
end;


function tformMain.getDis(start:string): Double;
begin
  //....
  wb2.Navigate(ExtractFilePath(application.ExeName)+'rechne.htm');
  WaitForBrowser(wb2);
  berechnenclick; // klickt einen button auf der geladen seite 'rechne.htm'
  WaitForBrowser(wb2);
  Result := ExtractGR(wb2.LocationURL);
end;

procedure TFormMain.wb2DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  if pDisp = wb2.DefaultInterface then
    ExtractGR(url);
end;


procedure TformMain.berechnenclick;
var
  ovElements: OleVariant;
  i: Integer;
begin
    ovElements := wb2.OleObject.Document.forms.item(0).elements;
    for i := 0 to (ovElements.Length - 1) do
    begin
      if
      (ovElements.item(i).type = 'submit')then
      ovElements.item(i).Click;
    end;
end;
ist immer noch das selbe prob der wert kommt zu spät. ich hab mal ein showmessage bei
Delphi-Quellcode:
    try
      result:=strtofloat(s3);
      showmessage(floattostr(result));
    except
      result:=0;
    end;

hier ist der aufruf.
Delphi-Quellcode:
procedure TFormMain.Button1Click(Sender: TObject);
begin
  showmessage('Sollwert:'+floattostr(getdis('(14:91:12)')));
end;
Es kommen 2 showmessages zu erst eins mit "Sollwert: 0"
Das zweite dann mit dem richtigen wert.

Was soviel bedeuetet dass die funktion wieder zu schnell durchläuft da das 2te showmessage erst später kommt. Was kann ich noch probieren ?

@marabu
hab ich versucht die action.php?mit parametern auszufüren.
das ganze mit idhttp.get(acctionurl mit parameter)... währe das einfachste nur funktioniert das ganze nur wenn ich eine normale form nehme und dann so submit drücke. evtl werden da auch de werte von submit übertragen auf jedenfall gings ned hab da lange dran getestet.
Wer glaub er ist, hört auf zu werden!
Delphi Rulez!!!
  Mit Zitat antworten Zitat