Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   TWebBrowser if then Problem (https://www.delphipraxis.net/165338-twebbrowser-if-then-problem.html)

klaus9 24. Dez 2011 21:07

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

jaenicke 24. Dez 2011 22:54

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
  ...

klaus9 25. Dez 2011 10:32

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 ?

himitsu 25. Dez 2011 10:44

AW: TWebBrowser if then Problem
 
Zitat:

Zitat von klaus9 (Beitrag 1143069)
Danke aber irgendwie fehlt mir noch was im code.

Ja, die Delphi/Code-Tags :stupid:

Zitat:

Zitat von klaus9 (Beitrag 1143069)
ich muß glaub ich noch die function VarIsNull einbinden, wie geht das ?

F1 drücken, nachsehn was in der OH steht und die genannte Unit (Variants) einbinden :angle2:


Wieso glaubst du nur und weißt es nicht?
Delphi gibt dir doch hoffentlich eine entsprechende Fehlermeldung? (welche wir nicht kennen)

klaus9 25. Dez 2011 13:08

AW: TWebBrowser if then Problem
 
hmm bekomme ich irgendwie nicht so hin.. :(

jaenicke 25. Dez 2011 13:12

AW: TWebBrowser if then Problem
 
Zitat:

Zitat von klaus9 (Beitrag 1143076)
hmm bekomme ich irgendwie nicht so hin.. :(

Da du vergessen hast zu schreiben was genau du jetzt zuletzt versucht hast und was für eine Fehlermeldung kommt, wird dir da auch niemand helfen können.

klaus9 25. Dez 2011 17:22

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

jaenicke 25. Dez 2011 17:59

AW: TWebBrowser if then Problem
 
Hat himi doch schon geschrieben...
Zitat:

Zitat von himitsu (Beitrag 1143070)
und die genannte Unit (Variants) einbinden :angle2:

Hast du die Unit denn nun in die uses geschrieben? (Also da ganz oben in deiner Unit.)

klaus9 25. Dez 2011 20:06

AW: TWebBrowser if then Problem
 
Hi,

was muß ich da denn reinschreiben, bin nicht mehr so ganz fit in delphi.

jaenicke 25. Dez 2011 21:18

AW: TWebBrowser if then Problem
 
Variants? Wobei das eigentlich ab Delphi 6 oder so auch schon standardmäßig in der uses steht.

p80286 25. Dez 2011 22:40

AW: TWebBrowser if then Problem
 
@Klaus9
Delphi-Quellcode:
uses Variants, weitere_Units;

@jaenike
in D7: (in einer Forms-Unit)
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
gruß
K-H

klaus9 26. Dez 2011 12:18

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

klaus9 26. Dez 2011 12:21

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;

jaenicke 26. Dez 2011 12:44

AW: TWebBrowser if then Problem
 
Du darfst deine Unit natürlich nicht selbst Variants nennen... :roll:

klaus9 26. Dez 2011 12:47

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

klaus9 26. Dez 2011 12:52

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ß

jaenicke 26. Dez 2011 16:31

AW: TWebBrowser if then Problem
 
Zitat:

Zitat von klaus9 (Beitrag 1143162)
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 ?

Was ist denn für dich ein Wert? Ich meine du suchst im Moment nach dem HTML Element mit dem Namen Operation. Nur, wenn das Element nicht existiert, wird dein erledigt geschrieben. Deine Beschreibung liest sich jetzt so als ob du etwas ganz anderes willst. Nur passt das nicht zu dem was du als Quelltext geschrieben hast.

Was du nun eigentlich wirklich willst, ist mir nicht klar.

klaus9 7. Jan 2012 23:35

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

Thom 8. Jan 2012 00:01

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.

klaus9 8. Jan 2012 00:34

AW: TWebBrowser if then Problem
 
Delphi-Quellcode:

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;
Ah okay gefunde, Danke.. Jetzt weiß ich auch was Delphi Tags sind ;-)
aber Problem noch nicht gelöst.. :-(

klaus9 8. Jan 2012 00:39

AW: TWebBrowser if then Problem
 
Delphi-Quellcode:
procedure TForm1.Button111Click(Sender: TObject);
begin
if VarIsNull(WebBrowser1.OleObject.Document.documentElement.innerHTML('TelefonAnlagen'))
then
showmessage('test')
end;
auch dieser Code funktioniert leider nicht, es kommt dann Nicht implementiert

klaus9 8. Jan 2012 01:18

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:
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;
habe mal nach der Uhrzeit 11:45 gesucht im HTML Quelltext und auch gefunden..

Wenn ich jetzt noch nach zwei übereinstimmungen suchen könnte, dann hätte ich es

vielleicht hat ja jemand einen Tipp

Gruß

jaenicke 8. Jan 2012 07:59

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...

klaus9 8. Jan 2012 08:37

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:
IF (pos('MH',string(webBrowser1.OleObject.Document.Body.InnerHtml))=0) AND
ab hier immer erweitert um

Delphi-Quellcode:
AND (pos('11:45',string(webBrowser1.OleObject.Document.Body.InnerHtml))=0) AND ...... und dann THEN und dann den rest
Dankeschön für eure unterstützung..

Sir Rufo 8. Jan 2012 09:17

AW: TWebBrowser if then Problem
 
Zitat:

Zitat von klaus9 (Beitrag 1144866)
Also mit dem Code funktioniert es..

[...]

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".

Bist du dir da sicher, das das funktioniert?

IMHO wird auch dann "Ja" erscheinen, wenn nur "MH" oder nur "11:45" vorkommt

klaus9 8. Jan 2012 11:55

AW: TWebBrowser if then Problem
 
Hmm zumindest hoffe ich es , also beim probieren hat es geklappt. Probier es aber gleich besser nochmal aus ..

Sir Rufo 8. Jan 2012 12:06

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?

klaus9 8. Jan 2012 12:33

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 .. ;-(

jaenicke 8. Jan 2012 13:36

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.

klaus9 8. Jan 2012 13:40

AW: TWebBrowser if then Problem
 
Hi, jetzt glaube ich habe ich es hinbekommen..

Delphi-Quellcode:
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;
ist vielleicht nicht so super gut programmiert aber scheint zu klappen.. hoffe ich ;-)

jaenicke 8. Jan 2012 14:52

AW: TWebBrowser if then Problem
 
Das ist (abgesehen von deiner etwas abenteuerlichen Formatierung) das selbe wie:
Delphi-Quellcode:
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;
Aber wie gesagt:
Sobald zufällig die Buchstaben woanders auch vorkommen, und sei es in einem Wort, würden die so auch gefunden...

klaus9 8. Jan 2012 18:18

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