![]() |
Initialisierungsproblem?
Hallo,
ich möchte aus einer Web-Seite einen Wert auslesen! Wenn die Web-Seite da ist, wird ihr Inhalt in ein jvRichEdit kopiert und der Inhalt soll temporär gespeichert werden, bis der Wert gefunden ist. Die temporäre Datei wird aber nicht immer erstellt und sie ist auch immer leer. Bei jedem zweiten Durchlauf läuft das Programm und liest mir den Wert aus, sonst hängt es sich bei
Delphi-Quellcode:
auf, mit der Meldung, dass die temp.txt nicht erstellt werden kann.
jvRichEdit1.Lines.SaveToFile('d:\text_del4\temp.txt');
Ihr könnt mir doch bestimmt helfen!
Delphi-Quellcode:
var
Form1: TForm1; CurDispatch: IDispatch; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin embeddedwb1.navigate('d:\text_del4\user1.html' ); sleep(100); if not FileExists('d:\text_del4\temp.txt') then begin FileCreate('d:\text_del4\temp.txt'); end; end; procedure TForm1.WebBrowser1NavigateComplete2(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin if CurDispatch = nil then CurDispatch := pDisp; end; procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); {var username: String; } begin // username := jvcomputerinfoex1.Identification.LocalUserName; Sleep(50); with embeddedwb1 do if (pDisp = CurDispatch) then begin // webbrowser1.OleObject.document.forms.item('form1').elements.item('login').value := username; Sleep(50); // webbrowser1.OleObject.document.forms.item('form1').elements.item('senden').click; OnDocumentComplete := nil; end; embeddedwb1.ViewPageSourceHtmlToStrings(jvRichEdit1.Lines.Create); end; procedure TForm1.Button1Click(Sender: TObject); var i,p,x: integer; s: String; tag1, tag2: String; inhalt: TStringList; begin try if not FileExists('d:\text_del4\temp.txt') then begin FileCreate('d:\text_del4\temp.txt'); end; embeddedwb1.ViewPageSourceHtmlToStrings(jvRichEdit1.Lines.Create); Sleep(100); jvRichEdit1.Lines.SaveToFile('d:\text_del4\temp.txt'); Sleep(100); jvRichEdit1.Clear; inhalt := TStringlist.Create; inhalt.LoadFromFile('d:\text_del4\temp.txt'); tag1 := '<TD align=middle>'; tag2 := '</TD>'; for i := 0 to inhalt.Count - 1 do begin if pos(tag1, inhalt[i]) > 0 then begin s := ''; for p := pos(tag1, inhalt[i]) to length(inhalt[i]) do if inhalt[i][p] <> s then s := s + inhalt[i][p] else break; while pos(s[length(s)], tag2) = 0 do delete(s, length(s), 1); jvRichEdit1.Lines.Add(s) ; end; end; inhalt.Free; for x := 0 to jvRichEdit1.Lines.Count - 1 do begin jvRichEdit1.Lines.Delete(1); end; jvRichEdit1.Text := StringReplace(jvRichEdit1.Text, '<TD align=middle>', '', [rfReplaceAll, rfignorecase]); jvRichEdit1.Text := StringReplace(jvRichEdit1.Text, '</TD>', '', [rfReplaceAll, rfignorecase]); deletefile('d:\text_del4\temp.txt'); except ShowMessage('Fehler'); Form1.Close; end; end; |
Re: Initialisierungsproblem?
dann erstelle es doch einfach manuell
|
Re: Initialisierungsproblem?
Hallo
Ich würde so etwas grundsätzlich nicht "FormCreate" tun ... Hier wird das Formular erst noch aufgebaut und der ÖProgrammierer bekommt die Gelegenheit notwendiges z.b. zu initialisieren... porbiers mal in formActivate |
Re: Initialisierungsproblem?
Meine vorläufige Lösung:
Delphi-Quellcode:
var
Form1: TForm1; CurDispatch: IDispatch; implementation {$R *.dfm} procedure TForm1.WebBrowser1NavigateComplete2(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin if CurDispatch = nil then CurDispatch := pDisp; end; procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin if (pDisp = CurDispatch) then begin RichEditWB1.LoadHTMLFromBrowser; RichEdit1.Lines.Text := RichEditwb1.Lines.Text ; RichEdit1.PlainText := true; RichEdit1.Lines.SaveToFile('d:\text_del6\user.txt'); RichEdit1.Clear; CurDispatch := nil; end; end; procedure TForm1.FormCreate(Sender: TObject); begin Form1.ActiveControl := EmBeddedWB1; EmbeddedWb1.Navigate('d:\text_del6\user.html'); end; procedure TForm1.Button1Click(Sender: TObject); var inhalt: TStringlist; tag1, tag2: String; i,p,x : Integer; s: String; begin inhalt := TStringlist.Create; inhalt.LoadFromFile('d:\text_del6\user.txt'); tag1 := '<TD align=middle>'; tag2 := '</TD>'; for i := 0 to inhalt.Count - 1 do begin if pos(tag1, inhalt[i]) > 0 then begin s := ''; for p := pos(tag1, inhalt[i]) to length(inhalt[i]) do if inhalt[i][p] <> s then s := s + inhalt[i][p] else break; while pos(s[length(s)], tag2) = 0 do delete(s, length(s), 1); RichEdit1.Lines.Add(s); end; end; inhalt.Free; for x := 0 to RichEdit1.Lines.Count - 1 do begin RichEdit1.Lines.Delete(1); end; RichEdit1.Lines.Text := StringReplace(RichEdit1.Lines.Text, '<TD align=middle>', '', [rfReplaceAll, rfignorecase]); RichEdit1.Lines.Text := StringReplace(RichEdit1.Lines.Text, '</TD>', '', [rfReplaceAll, rfignorecase]); deleteFile('d:\text_del6\user.txt'); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz