Autor Beitrag
florida
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137

Windows 7 Home Premium, Windows XP Professional, Windows 2000
Delphi 2010 Architect
BeitragVerfasst: Sa 02.05.09 08:03 
Wie kann man einen WebBrowser programmieren, bei den ich ganz von 0 anfangen will, also ohne ActiveX- Komponente

Vorgestellt habe ich es mir so:

Wenn in der HTML- Datei z.B. folgendes steht:

<input type="button" name="Button1" value="Text">

muss in meinem WebBrowser ein Button angezeigt werden mit dem Caption "Text".

Nun gut, aber unter Delphi gibt es leider nicht diese Möglichkeit:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var i: integer;
 anystring: string;

for i:= 0 to Memo1.Lines.Count do
begin
 if Memo1.Lines.Strings[i] = '<input type="' + anystring ... then
 begin
  ...
 end;
end;

Gibt es eine Möglichkeit, dass diese Möglichkeit funktioniert?

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Sa 02.05.09 09:12 
das geht mit pos und posex.
Da hilft die Hilfe.
Es empfiehlt sich aber, den String Zeichenweise mit einer Schleife durchzugehen und auf ein < zu warten.
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Sa 02.05.09 10:50 
Du kannst dir ja ein paar Anregungen vom SourceCode von THTMLViewer holen: pbear.com/htmlviewers.html
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Sa 02.05.09 11:33 
Vielleicht hilft dir auch die RegExp-Klasse: regexpstudio.com/

Das sollte so ziemlich genau dein Problem lösen. Ich bin auch nicht mehr ganz fit in Regular Expressions, aber meistens reicht es, wenn du ne kleine Tabelle vor dir liegen hast. Du solltest aber beachten, dass der Code genauso gut so aussehen kann:

ausblenden XML-Daten
1:
2:
3:
4:
5:
<INPUT
    type=button
         value="Text"
  name="Button1"
             />


Ist nicht ganz sauber, aber auf vielen Websites geschieht so eine Ferkelei. Hast du dir das mit dem Webbrowser auch gut überlegt? Ich denke, du solltest zuerst so eine Art allgemeinen XML-Parser basteln.
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Sa 02.05.09 12:36 
Ein DOM-Parser ist der Grundstein eines Browsers aber auch der leichtere Teil. Hast du dir schon Gedanken gemacht wie du die Webseiten rendern willst? Und dann sind da noch Sachen wie CSS, JavaScript, Cookies, etc.
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Sa 02.05.09 12:47 
MathML wäre dann natürlich auch noch toll. 8)
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: Sa 02.05.09 16:28 
user profile iconflorida hat folgendes geschrieben Zum zitierten Posting springen:
Wie kann man einen WebBrowser programmieren, bei den ich ganz von 0 anfangen will, ...


Wieviel Mannmonate/-jahre hast du dafür eingeplant? Wie gut kennst du dich mit DOM, XML, CSS, XHTML, ... aus?
florida Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137

Windows 7 Home Premium, Windows XP Professional, Windows 2000
Delphi 2010 Architect
BeitragVerfasst: Sa 09.05.09 19:38 
Ich will zuerst einen ganz einfachen Browser programmieren.
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Sa 09.05.09 21:37 
user profile iconflorida hat folgendes geschrieben Zum zitierten Posting springen:
Ich will zuerst einen ganz einfachen Browser programmieren.


Kommt drauf an, was du unter einfach verstehst. Sowas, wie der Demo-Browser bei den THTMLLite-Demos, der Indy benutzt (wohlbemerkt ohne CSS)? Viel Spaß.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 09.05.09 22:49 
Wenn du einfach nur irgendwo auf dem Bildschirm Text und ein paar Controls von der Webseite anzeigen willst, dann kannst du das in ein paar Tagen hinbekommen. Wenn auch nicht bei jeder Seite und nie in annähernd korrekter Darstellung und Positionierung.

Aber wenn die Darstellung auch nur annähernd an die eines richtigen Browsers herankommen willst, dann überlege dir einmal wie lange die Entwicklung von aktuellen Browsern gedauert hat...

Da wirst du aber mit deinem Ansatz von oben nicht weit kommen...
florida Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137

Windows 7 Home Premium, Windows XP Professional, Windows 2000
Delphi 2010 Architect
BeitragVerfasst: So 10.05.09 06:13 
Gut! Das Problem in der Fragestellung habe ich fast hinbekommen.

z.B so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
  if copy(Memo1.Lines.Text, 1, 5) = 'createbutton=' + stra then
  begin
  ctrlBTN := Tbutton.Create(self);
   with ctrlBTN do
   begin
    name := stra;
    parent := scrollbox1;
    enabled := true;
   end;
  end;


Wenn ich jetzt in mein Memo createbutton=irgendwas hinschreibe funktioniert es, nur hat stra immer noch keinen Wert.
Das ist das konkrete Problem, was ich beim WebBrowser habe.

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 10.05.09 07:12 
Du weist stra ja auch keinen Wert zu, jedenfalls nicht im geposteten Quelltext. :gruebel:
ausblenden Delphi-Quelltext
1:
if copy(Memo1.Lines.Text, 1, 5) = 'createbutton=' + stra then					
Du vergleichst die ersten 5 Zeichen des Inhalts des Memos mit 'createbutton=' plus dem Inhalt von stra.
Aber schon 'createbutton=' ist länger als die 5 Zeichen, das kann also unmöglich übereinstimmen.

Wenn du schauen willst, ob die ersten 13 Zeichen im Memo 'createbutton=' sind, dann musst du das auch abfragen:
ausblenden Delphi-Quelltext
1:
if copy(Memo1.Lines.Text, 1, 13) = 'createbutton=' then					
Und wenn du dann den Rest dahinter haben möchtest, dann musst du den auch auslesen:
ausblenden Delphi-Quelltext
1:
stra := Copy(Memo1.Lines.Text, 14, Length(Memo1.Lines.Text) - 13);					
Ich sehe allerdings nicht was das mit einem Webbrowser zu tun hat. Und um einen längeren Text zu analysieren ist das auch zu langsam. Insbesondere dürftest du nicht mit Memo1.Lines.Text arbeiten, weil dieser Zugriff sehr langsam ist, sondern müsstest das in eine Stringvariable legen.
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: So 10.05.09 08:06 
user profile iconflorida: Bitte setze deine Quellcodes in Delphi-Tags ([
ausblenden Quelltext
1:
delphi					
]dein Code[/delphi]).