AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TWebbrowser Werte in Lable.Caption darstellen
Thema durchsuchen
Ansicht
Themen-Optionen

TWebbrowser Werte in Lable.Caption darstellen

Ein Thema von cobus_tschulz · begonnen am 31. Jan 2010 · letzter Beitrag vom 15. Feb 2010
Antwort Antwort
Seite 1 von 3  1 23      
cobus_tschulz

Registriert seit: 31. Jan 2010
15 Beiträge
 
#1

TWebbrowser Werte in Lable.Caption darstellen

  Alt 31. Jan 2010, 16:37
Hallo zusammen,

ich bin noch recht neu hier unterwegs und brauche einmal Hilfe.
Ich bin dabei ein kleines Tool zu schreiben wo ich Eingabewerte einer TEdit Übergebe und mittels TWebbrowse anzeigen lasse.

Klappt auch soweit gut.

Jetzt bekomme ich die Seite angezeigt jedoch brauche ich einen Wert der auf der Seite steht in einem lable.caption bez. geht auch TEdit.

Folgenes bekomme ich im TWebbrowse als Quelltext:
Delphi-Quellcode:
<params>
<param>
<value><array><data>
<value><string>UstId_1</string></value>
<value><string></string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>ErrorCode</string></value>
<value><string>215</string></value>
</data></array></value>
</param>
Davon brauche ich nur ErrorCode und den Wert (in diesem Fall 215) dieser kann sich aber ändern.

Und so öffne ich den TWebbrowser:

Delphi-Quellcode:
procedure TTFrmMain.btnAnfrageSendenClick(Sender: TObject);
begin
csWeb.Navigate('http://evatr.bff-online.de/evatrRPC?UstId_1='+eUSTID1.Text+
            '&UstId_2='+eUSTID2.Text+
            '&Firmenname='+eFirmenname.Text+
            '&Ort='+eOrt.Text+
            '&PLZ='+ePlz.Text+
            '&Strasse='+eStrasse.Text+
            '&Druck='+eDruck.Text);

end;

end.
Vielen Dank euch schonmal !!!
Und denkt dran .. bin total neu hier )) Nicht gleich erschlagen lach ...
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: TWebbrowser Werte in Lable.Caption darstellen

  Alt 1. Feb 2010, 08:12
Herzlich willkommen in der Delphi-PRAXiS !

1. Quelltext auslesen (Beispiele finden sich in der DP), 2. per Pos, Copy, etc. den String herausschneiden.
Falls die Inhalte der Webseite sonst visuell nicht dargestellt werden müssen, würden sich die Indy Komponenten besser eignen.
Thomas
  Mit Zitat antworten Zitat
cobus_tschulz

Registriert seit: 31. Jan 2010
15 Beiträge
 
#3

Re: TWebbrowser Werte in Lable.Caption darstellen

  Alt 1. Feb 2010, 08:36
Vielen Dank dafür, jedoch scheitert es schon an dem Auslesen des Quelltextes. Ich bekomme immer einen Fehler.

Hier der Code schonmal:

Delphi-Quellcode:
unit uCSUSTIDtools;

interface

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

type
  TTFrmMain = class(TForm)
    eUSTID1: TEdit;
    eUSTID2: TEdit;
    eFirmenname: TEdit;
    eOrt: TEdit;
    ePLZ: TEdit;
    eStrasse: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    btnAnfrageSenden: TButton;
    csWeb: TWebBrowser;
    cmbDrucken: TComboBox;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    eRGueltigAb: TEdit;
    Label11: TLabel;
    eRGueltigBis: TEdit;
    Label12: TLabel;
    eRFirmenname: TEdit;
    Label13: TLabel;
    eROrt: TEdit;
    Label14: TLabel;
    eRPLZ: TEdit;
    Label15: TLabel;
    eRStrasse: TEdit;
    Button1: TButton;
    eRAnfrangeAm: TEdit;
    Label16: TLabel;
    Label17: TLabel;
    eRAnfrageUm: TEdit;
    Label18: TLabel;
    eRErrorCode: TEdit;
    Panel1: TPanel;
    Label19: TLabel;
    Label20: TLabel;
    Memo1: TMemo;
    IdHTTP1: TIdHTTP;
    procedure btnAnfrageSendenClick(Sender: TObject);
  private
  public
    { Public-Deklarationen }
  end;

var
  TFrmMain: TTFrmMain;

implementation

uses
  mshtml;

{$R *.dfm}

// CEigene
function WB_GetHTMLCode(WebBrowser: TWebBrowser; ACode: TStrings): Boolean;
var
  ps: IPersistStreamInit;
  ss: TStringStream;
  sa: IStream;
  s: string;
begin
  ps := WebBrowser.Document as IPersistStreamInit;
  s := '';
  ss := TStringStream.Create(s);
  try
    sa := TStreamAdapter.Create(ss, soReference) as IStream;
    Result := Succeeded(ps.Save(sa, True));
    if Result then ACode.Add(ss.Datastring);
  finally
    ss.Free;
  end;
end;

procedure TTFrmMain.btnAnfrageSendenClick(Sender: TObject);
var
htmlcode: string;
begin
csWeb.Navigate('http://evatr.bff-online.de/evatrRPC?UstId_1='+eUSTID1.Text+
            '&UstId_2='+eUSTID2.Text+
            '&Firmenname='+eFirmenname.Text+
            '&Ort='+eOrt.Text+
            '&PLZ='+ePlz.Text+
            '&Strasse='+eStrasse.Text+
            '&Druck='+cmbDrucken.Text);

WB_GetHTMLCode(csWeb, Memo1.Lines);

end;


end.
Der Fehler kommt hier:

 Result := Succeeded(ps.Save(sa, True)); Das hier ist die Fehlermeldung dann:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt pUSTIDTool.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 004BD4AA in Modul 'pUSTIDTool.exe'. Lesen von Adresse 00000000' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: TWebbrowser Werte in Lable.Caption darstellen

  Alt 1. Feb 2010, 08:41
Hallo,

ich würde auch die erwähnten Indy-Komponenten nutzen. Dein WebBrowser ist aktuell sicher versteckt, oder? Das wäre sehr schlampig und langsam.

Mit den Indys geht das ganz einfach. Das folgende Beispiel zeigt die dynamische Erzeugung von TIdHTTP. Du kannst diese Komponente aber auch auf dein Formular ziehen und verwenden.

Delphi-Quellcode:
var
  MyIdHTP: TIdHTTP;
  HTMLCode: string;

// ...

MyIdHTTP := TIdHTTP.Create;
try
  HTMLCode := MyIdHTTP.Get('deine URL');
finally
  FreeAndNil(MyIdHTTP);
end;
Grüße, Matze
  Mit Zitat antworten Zitat
cobus_tschulz

Registriert seit: 31. Jan 2010
15 Beiträge
 
#5

Re: TWebbrowser Werte in Lable.Caption darstellen

  Alt 1. Feb 2010, 09:06
Danke Matze,

läuft super und auch schnell in das memo1.text Feld rein.

Jetzt muss ich nur noch wie oben beschrieben die Daten auslesen des Error_Code und die Zahl dazu.
Mit PosEx() wurde schon genannt, jedoch frag ich mich gerade wo genau ich den Ansatz habe das ich genau die Stelle rausbekomme und in ein TEdit Feld den Wert reinbekomme
  Mit Zitat antworten Zitat
cobus_tschulz

Registriert seit: 31. Jan 2010
15 Beiträge
 
#6

Re: TWebbrowser Werte in Lable.Caption darstellen

  Alt 1. Feb 2010, 10:08
So ich habs rausbekommen mit Copy geht das recht gut.
Jedoch gebe ich dort ja statische Positionswerte an.

Ich bräuchte sowas wie "Suche nach PLZ" dann zähle 10 zeilen weiter... nimm ab dort die kommenden 3 zeichen und schreib mir die ins TEdit feld...
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

Re: TWebbrowser Werte in Lable.Caption darstellen

  Alt 1. Feb 2010, 10:35
Hallo,

wenn Du dasda hast:
Code:
<params>
<param>
<value><array><data>
<value><string>UstId_1</string></value>
<value><string></string></value>
</data></array></value>
</param>
<param>
<value><array><data>
<value><string>ErrorCode</string></value>
<value><string>215</string></value>
</data></array></value>
</param>
ersetze zuerst alle < und > durch einen Zeilenumbruch und < bzw. Zeilenumbruch und >.
Danach hast Du dann:
Code:
<params>
<param>
<value>
<array>
<data>
<value>
<string>
UstId_1
</string>
</value>
<value>
<string>
</string>
</value>
</data>
</array>
</value>
</param>
<param>
<value>
<array>
<data>
<value>
<string>
ErrorCode
</string>
</value>
<value>
<string>
215
</string>
</value>
</data>
</array>
</value>
</param>
Nun lösche von "unten" beginnend alle Zeilen, die mit < beginnen und Du erhälst:
Code:
UstId_1
ErrorCode
215
Jetzt suchst Du noch die Zeile mit dem Text ErrorCode und nimmst aus der nächsten Zeile den gewünschten Wert.
  Mit Zitat antworten Zitat
cobus_tschulz

Registriert seit: 31. Jan 2010
15 Beiträge
 
#8

Re: TWebbrowser Werte in Lable.Caption darstellen

  Alt 1. Feb 2010, 10:51
hmmm ... hört sich logisch an nur mit der Umsetztung scheiert es gerade )) nen kleenen Codeschnippsel ? )))
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#9

Re: TWebbrowser Werte in Lable.Caption darstellen

  Alt 1. Feb 2010, 11:01
Hallo,

Zeichenfolgen ersetzen geht z. B. mit:memo.text := AnsiReplaceText(Memo.Text,'<',#13 + '<') Damit hast Du aus dem < einen Zeilenvorschub plus < gemacht.

Zeilen Löschen könnte in etwa so gehen:
for i := Memo.Lines.Count - 1 DownTo 0 do if Copy(memo.lines[i],1,1) = '<then memo.lines.Delete(i); Wenn Du statt des Memos eine TStringList (oder Nachfahren) benutzt, dann kannst Du die Zeile mit dem Text ErrorCode überPosition := Stringliste.IndexOf('ErrorCode') erhalten und den ErrorCode selbst dann mitErrorCode := Stringliste.IndexOf('ErrorCode') + 1 Alles ungetestet nur hingedaddelt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: TWebbrowser Werte in Lable.Caption darstellen

  Alt 1. Feb 2010, 12:35
2 Verbesserungsvorschläge:
Memo.Text := {StrUtils.}AnsiReplaceText(Memo.Text,'<',sLineBreak + '<');
Delphi-Quellcode:
for i := Memo.Lines.Count - 1 DownTo 0 do
  if (Trim(memo.lines[i]) = '') or (Trim(memo.lines[i])[1] = '<') then
    memo.lines.Delete(i);
Auch nur heruntergetippt und nicht getestet.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 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