TWebBrowser if then Problem
Hallo,
ich würde gerne folgendes ermöglichen mit Delphi. Ich habe einen Twebbrowser und würde gerne wenn im Quelltext ein bestimmter Text vorkommt, das Delphi dann einen value Wert in ein bestimmtes Feld einfügt und weitermacht. procedure TForm1.Action20Execute(Sender: TObject); begin if WebBrowser1.OleObject.document.forms.item(0).eleme nts.item('Operation') //wenn das Wort Operation im Quelltext gefunden wird then WebBrowser1.OleObject.document.forms.item(0).eleme nts.item('bemerkung').value:='erledigt'; // soll er diese funktion ausführen. end; Das Feld 'bemerkung' gibt es und es läßt sich auch so befüllen, nur halt leider nicht die vorherige überprüfung. Gruß Klaus |
AW: TWebBrowser if then Problem
Naja, du holst dir ein Element aus dem geladenen Quelltext im Webbrowser und versuchst dieses Element als boolschen Wert zu benutzen. Das ist als ob du sagen würdest: "Wenn Apfel, dann..."
Du musst schon mit dem Element etwas machen. Schauen, ob es zugewiesen ist, damit etwas machen, ... Sprich du sagst z.B. "Wenn der Apfel rot ist, dann..." Was du also wohl meinst:
Delphi-Quellcode:
if not VarIsNull(WebBrowser1.OleObject.document.forms.item(0).elements.item('Operation')) then
... |
AW: TWebBrowser if then Problem
Danke aber irgendwie fehlt mir noch was im code.
procedure TForm1.Action20Execute(Sender: TObject); begin if not VarIsNull(WebBrowser1.OleObject.document.forms.ite m(0).elements.item('Operation')) then WebBrowser1.OleObject.document.forms.item(0).eleme nts.item('bemerkung').value:='erledigt'; // soll er diese funktion ausführen. end; end. ich muß glaub ich noch die function VarIsNull einbinden, wie geht das ? |
AW: TWebBrowser if then Problem
Zitat:
Zitat:
Wieso glaubst du nur und weißt es nicht? Delphi gibt dir doch hoffentlich eine entsprechende Fehlermeldung? (welche wir nicht kennen) |
AW: TWebBrowser if then Problem
hmm bekomme ich irgendwie nicht so hin.. :(
|
AW: TWebBrowser if then Problem
Zitat:
|
AW: TWebBrowser if then Problem
Habe jetzt folgenden Code
procedure TForm1.Button65Click(Sender: TObject); begin if not VarIsNull(WebBrowser1.OleObject.document.forms.ite m(0).elements.item('Operation')) then WebBrowser1.OleObject.document.forms.item(0).eleme nts.item('bemerkung').value:='erledigt'; // soll er diese funktion ausführen. end; end; [Fehler] Unit1versuch.pas(1288): Undefinierter Bezeichner: 'VarIsNull' ich weiß nur nicht genau was ich als bezeichner einfügen soll. function VarIsNull hatte ich im Netz gelesen, wenn ich es davor packe startet es leider auch nicht richtig |
AW: TWebBrowser if then Problem
Hat himi doch schon geschrieben...
Zitat:
|
AW: TWebBrowser if then Problem
Hi,
was muß ich da denn reinschreiben, bin nicht mehr so ganz fit in delphi. |
AW: TWebBrowser if then Problem
Variants? Wobei das eigentlich ab Delphi 6 oder so auch schon standardmäßig in der uses steht.
|
AW: TWebBrowser if then Problem
@Klaus9
Delphi-Quellcode:
uses Variants, weitere_Units;
@jaenike in D7: (in einer Forms-Unit)
Delphi-Quellcode:
gruß
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; K-H |
AW: TWebBrowser if then Problem
Hi also ich habe das Problem jetzt glaub ich an einer anderen stelle, die variants habe ich drin im delphi.
Jetzt schreibt mir Delphi als fehler bei folgendem Code procedure TForm1.Button65Click(Sender: TObject); begin if not VarIsNull(WebBrowser1.OleObject.document.forms.ite m(0).elements.item('Operation')) then WebBrowser1.OleObject.document.forms.item(0).eleme nts.item('bemerkung').value:='erledigt'; end; end; Dann das [Warnung] Variants.pas(1012): Unsicherer Typ 'VPointer: Pointer' [Warnung] Variants.pas(1014): Unsicherer Typ 'VPointer: Pointer' [Fataler Fehler] Variants.pas(1024): Das Programm oder die Unit 'Variants' ruft sich selbst wieder auf |
AW: TWebBrowser if then Problem
Bei mir sind folgende Uses
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, SHDocVw, StdCtrls, mshtml, ExtCtrls, Buttons, ActnList, Variants; |
AW: TWebBrowser if then Problem
Du darfst deine Unit natürlich nicht selbst Variants nennen... :roll:
|
AW: TWebBrowser if then Problem
Wie meinst du das ?
unit Unit1versuch; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, SHDocVw, StdCtrls, mshtml, ExtCtrls, Buttons, ActnList, Variants; so heißt Sie Unit1versuch |
AW: TWebBrowser if then Problem
ich glaub ich habe es, es lag im selben verzeichnis eine variants.pas :-(
habe jetzt alles im grünen Bereich, nur er schreibt mir in das erledigt feld erledigt rein, obwohl es operation nicht text gibt. Oder kann man irgendwie anders delphi sagen, er soll im HTML Quelltext nach bestimmten Wert suchen und wenn dieser gefunden wird, soll er in das Feld bemerkung "erledigt" schreiben ? Geht das irgendwie ? Gruß |
AW: TWebBrowser if then Problem
Zitat:
Was du nun eigentlich wirklich willst, ist mir nicht klar. |
AW: TWebBrowser if then Problem
Hallo,
vielen Dank, das eigentliche Problem habe ich mit deiner Hilfe hinbekommen. Derzeit bin ich noch nach nem anderem am schauen, jetzt habe ich an einer anderen Stelle das Problem ich muß nach zwei Werten aus der Innerhtml suchen, da bin ich zurzeit am herum probieren. aber mit procedure TForm1.Button107Click(Sender: TObject); begin if VarIsNull(WebBrowser1.OleObject.Document.innerHTML ('<td>TelefonAnlagen</td>')) and if VarIsNull(WebBrowser1.OleObject.Document.innerHTML ('11:59')) then WebBrowser1.OleObject.document.forms.item(0).eleme nts.item('eingabe').value:='fertig'; // soll er diese funktion ausführen. end; will es noch nicht so funktionieren.. hast du vielleicht einen Tipp |
AW: TWebBrowser if then Problem
Hallo klaus9,
könntest Du bitte bei Deinem Quelltext die Delphi-Tags benutzen (der Button mit dem Helm oberhalb des Editorfeldes)? Himitsu hatte Dich schon mal darum gebeten - Du hast das wahrscheinlich überlesen. Da ich "TelefonAnlagen" gelesen habe: Ist das eine Seite zur Konfiguration einer Telefonanlage/eines Routers? Wäre es möglich, die betreffende HTML-Seite zu zeigen? Falls Du das nicht öffentlich machen möchtest, kannst Du mir auch eine Email mit Anhang schicken (die Emailadresse befindet sich in meinem Profil). Ich habe nämlich etliche Units programmiert, mit deren Hilfe man sehr einfach auf HTML-Objekte zugreifen kann. Um das zu testen, bräuchte ich allerdings die betreffende HTML-Seite. |
AW: TWebBrowser if then Problem
Delphi-Quellcode:
Ah okay gefunde, Danke.. Jetzt weiß ich auch was Delphi Tags sind ;-)procedure TForm1.Button107Click(Sender: TObject); begin if VarIsNull(WebBrowser1.OleObject.Document.innerHTML ('<td>TelefonAnlagen</td>')) and if VarIsNull(WebBrowser1.OleObject.Document.innerHTML ('11:59')) then WebBrowser1.OleObject.document.forms.item(0).eleme nts.item('eingabe').value:='fertig'; // soll er diese funktion ausführen. end; aber Problem noch nicht gelöst.. :-( |
AW: TWebBrowser if then Problem
Delphi-Quellcode:
auch dieser Code funktioniert leider nicht, es kommt dann Nicht implementiert
procedure TForm1.Button111Click(Sender: TObject);
begin if VarIsNull(WebBrowser1.OleObject.Document.documentElement.innerHTML('TelefonAnlagen')) then showmessage('test') end; |
AW: TWebBrowser if then Problem
Habe jetzt mal ein bisschen rumprobiert und glaube die lösung gefunden zu haben, zwar noch nicht so wie ich es haben will, aber so müßte es gehen
jetzt auch mit Tags ;-)
Delphi-Quellcode:
habe mal nach der Uhrzeit 11:45 gesucht im HTML Quelltext und auch gefunden..
procedure TForm1.Button112Click(Sender: TObject);
var was:string; begin if pos('11:45', string(webBrowser1.OleObject.Document.Body.InnerHtml))=0 then showmessage('nein') else showmessage('ja') end; Wenn ich jetzt noch nach zwei übereinstimmungen suchen könnte, dann hätte ich es vielleicht hat ja jemand einen Tipp Gruß |
AW: TWebBrowser if then Problem
Naja, du müsstest halt dich bis zu dem Element durchhangeln, in dem der Wert tatsächlich steht. Dann kannst du den auch direkt vergleichen. Aber wie Thom schon geschrieben hat: Ohne den Quelltext der Seite (bzw. den entsprechenden Teil mit allen Elternelementen zumindest) zu kennen kann dir da niemand wirklich helfen, da musst du das schon selbst machen...
|
AW: TWebBrowser if then Problem
Hi,
ja stimmt danke dir / euch allen.. habe es mit eurere hilfe hinbekommen, also schonmal das Problem :-) Also mit dem Code funktioniert es.. [DELPHI]procedure TForm1.Button114Click(Sender: TObject); var was:string; begin IF (pos('MH',string(webBrowser1.OleObject.Document.Bo dy.InnerHtml))=0) AND (pos('11:45',string(webBrowser1.OleObject.Document .Body.InnerHtml))=0) THEN //if pos('MH'+'11:45', string(webBrowser1.OleObject.Document.Body.InnerHt ml))=0 then //if pos('11:45', string(webBrowser1.OleObject.Document.Body.InnerHt ml))=0 then showmessage('nein') else showmessage('ja') end;DELPHI] Jetzt wird auf einer HTML Seite im Quelltext nach zwei bestimmten Werten gesucht, d.h. wenn in dem oben genannten Beispiel der Wert "MH" vorkommt und auch der Wert "11:45" dann zeigt mir Delphi die Showmessage "Ja" ann und wenn nicht "Nein". Es gehen auch mehrere möglichkeiten in dem man hingeht nach
Delphi-Quellcode:
ab hier immer erweitert um
IF (pos('MH',string(webBrowser1.OleObject.Document.Body.InnerHtml))=0) AND
Delphi-Quellcode:
Dankeschön für eure unterstützung..
AND (pos('11:45',string(webBrowser1.OleObject.Document.Body.InnerHtml))=0) AND ...... und dann THEN und dann den rest
|
AW: TWebBrowser if then Problem
Zitat:
IMHO wird auch dann "Ja" erscheinen, wenn nur "MH" oder nur "11:45" vorkommt |
AW: TWebBrowser if then Problem
Hmm zumindest hoffe ich es , also beim probieren hat es geklappt. Probier es aber gleich besser nochmal aus ..
|
AW: TWebBrowser if then Problem
Überlegen würde scon reichen ;)
Wenn "MH" nicht gefunden und "11:45" nicht gefunden dann "nein" sonst "ja" Was passiert wohl, wenn nur "MH" gefunden wird? |
AW: TWebBrowser if then Problem
Stimmt :-( arghh klappt nicht ... Mist hast du eine Idee weil wenn ich 'Mh'+'11:45' mache klappt es auch nicht
Versuche gerade erst nach mh zu suchen und dann nach Zeit Inform von zwei if POS .... Then if POS aber klappt auch nicht .. ;-( |
AW: TWebBrowser if then Problem
Du suchst wohl eher PosEx statt Pos, aber das Problem ist halt, dass die Buchstaben einfach überall gefunden werden. Die können zufällig auch woanders vorkommen.
|
AW: TWebBrowser if then Problem
Hi, jetzt glaube ich habe ich es hinbekommen..
Delphi-Quellcode:
ist vielleicht nicht so super gut programmiert aber scheint zu klappen.. hoffe ich ;-)
var was:string;
begin IF (pos('MH',string(webBrowser1.OleObject.Document.Body.InnerHtml))=0) THEN showmessage('nein') else IF (pos('11:45',string(webBrowser1.OleObject.Document.Body.InnerHtml))=0) THEN showmessage('nein') else showmessage('jepp'); end; |
AW: TWebBrowser if then Problem
Das ist (abgesehen von deiner etwas abenteuerlichen Formatierung) das selbe wie:
Delphi-Quellcode:
Aber wie gesagt:
var
was: string; begin if (Pos('MH', string(webBrowser1.OleObject.Document.Body.InnerHtml)) = 0) or (Pos('11:45', string(webBrowser1.OleObject.Document.Body.InnerHtml)) = 0) then ShowMessage('nein') else ShowMessage('jepp'); end; Sobald zufällig die Buchstaben woanders auch vorkommen, und sei es in einem Wort, würden die so auch gefunden... |
AW: TWebBrowser if then Problem
ja stimmt da hast du recht.. hmm muß ich vielleicht nen bisschen rum probieren.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz