|
![]() |
|
Registriert seit: 28. Feb 2011 Ort: Mannheim 1.384 Beiträge Delphi 10.4 Sydney |
#1
Wie isses denn so?
Delphi-Quellcode:
procedure TForm1.FillForm(const FieldName, Value: string);
var I, J: Integer; Item, SubItem : Variant; begin try for I := 0 to WebBrowser1.OleObject.Document.Forms.Length - 1 do begin Item := WebBrowser1.OleObject.Document.Forms.Item(I); for J := 0 to Item.Length - 1 do begin SubItem := Item.Item(J); if SubItem.Name = FieldName then SubItem.Value := Value; end; end; except on E: Exception do ShowMessage('Fehler vom Typ: ' + E.ClassName + ', Meldung: ' + E.Message); end; end; |
![]() |
Registriert seit: 16. Mär 2013 71 Beiträge Delphi 7 Professional |
#2
Hallo,
vielen Dank, vor allen Dingen an Bjoerk. Nein, das funktioniert leider auch nicht, d.h. es erzeugt die gleiche Fehlermeldung und das Programm stürzt so ab, daß ich erst die ganze IDE beenden und neu starten muß. ![]() So, jetzt bin ich leicht verwirrt (Absturz [ ] Ja, [ ] Nein).
Es stürzt beispielsweise beim Aufruf der Seite ![]() Dagegen stürzt es beim Aufruf der Seite ![]() ![]() ![]() Etwas was wirklich seltsam ist: Gehe ich zuerst auf ![]() ![]() Vielleicht gibst Du etwas Code oder (besser beides) eine URL dazu, die die Exception auslöst. Sonst können wir noch 'ne ganze Weile im Nebel stochern.
Also, hier der gesamte Sourcecode:
Delphi-Quellcode:
Für den Fall, daß es jemand selber ausprobieren will, habe ich die kompilierte Datei hochgeladen.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, SHDocVw, StdCtrls, ComCtrls, IniFiles, Buttons; type TForm1 = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; TabSheet3: TTabSheet; GroupBox1: TGroupBox; GroupBox2: TGroupBox; Button1: TButton; WebBrowser1: TWebBrowser; Label1: TLabel; Button2: TButton; GroupBox3: TGroupBox; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; EditName: TEdit; EditEmail: TEdit; EditTelefon: TEdit; EditAgentur: TEdit; EditFirma: TEdit; MemoKontaktdaten: TMemo; MemoPortrait: TMemo; EditUsername: TEdit; EditPassword: TEdit; Button16: TButton; Button17: TButton; Button18: TButton; Button19: TButton; GroupBox4: TGroupBox; EditTitel: TEdit; Label11: TLabel; Label12: TLabel; EditUntertitel: TEdit; Label13: TLabel; MemoTeaser: TMemo; Label14: TLabel; EditWebseite: TEdit; Label15: TLabel; MemoHaupttext: TMemo; GroupBox5: TGroupBox; Label16: TLabel; EditKey1: TEdit; Label17: TLabel; EditKey2: TEdit; Label18: TLabel; EditKey3: TEdit; Label19: TLabel; EditKey4: TEdit; Button23: TButton; Button24: TButton; MemoKeys: TMemo; Button26: TButton; Button27: TButton; Button28: TButton; Button29: TButton; Button30: TButton; Button31: TButton; Button32: TButton; Button33: TButton; Button34: TButton; OpenDialogAlles: TOpenDialog; SaveDialogAlles: TSaveDialog; OpenDialogEmail: TOpenDialog; SaveDialogEmail: TSaveDialog; ButtonDatenSpeichern: TButton; ButtonDatenLaden: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; EditVeroeffentlichungOrt: TEdit; Label20: TLabel; ComboBoxKategorie: TComboBox; LabelKategorie: TLabel; EditBild: TEdit; SpeedButton1: TSpeedButton; Label21: TLabel; EditBildunterschrift: TEdit; Label22: TLabel; Button8: TButton; Button9: TButton; Button10: TButton; Button11: TButton; GroupBox6: TGroupBox; Label23: TLabel; EditOpenPRUser: TEdit; EditOpenPRPass: TEdit; EditPRInsideUser: TEdit; EditPRInsidePass: TEdit; Label24: TLabel; Button12: TButton; Button13: TButton; Label25: TLabel; EditPremiumpresseUser: TEdit; EditPremiumpressePass: TEdit; Label26: TLabel; EditFairNewsUser: TEdit; EditFairNewsPass: TEdit; EditOffenesPPUser: TEdit; EditOffenesPPPass: TEdit; Label27: TLabel; Label28: TLabel; Label29: TLabel; Label30: TLabel; Label31: TLabel; Label32: TLabel; Label33: TLabel; EditNachrichtenNetUser: TEdit; EditNachrichtenNetPass: TEdit; EditFirmenpresseUser: TEdit; EditFirmenpressePass: TEdit; EditLivePRUser: TEdit; EditLivePRPass: TEdit; EditPresseINUser: TEdit; EditPresseINPass: TEdit; EditPresseWSUser: TEdit; EditPresseWSPass: TEdit; EditInarUser: TEdit; EditInarPass: TEdit; Button14: TButton; Button15: TButton; Button20: TButton; Button21: TButton; Button22: TButton; Button35: TButton; Button36: TButton; Button37: TButton; Button38: TButton; Button39: TButton; Button40: TButton; Label34: TLabel; EditnordPRUser: TEdit; EditnordPRPass: TEdit; Button41: TButton; Button42: TButton; Button43: TButton; Label35: TLabel; EditDailyNetUser: TEdit; EditDailyNetPass: TEdit; Button44: TButton; Button45: TButton; Label36: TLabel; EditPTextUser: TEdit; EditPTextPass: TEdit; Button46: TButton; Button47: TButton; EditOnlinepresseinfoUser: TEdit; EditOnlinepresseinfoPass: TEdit; Label37: TLabel; Button48: TButton; Button49: TButton; Label38: TLabel; EditOpenbroadcastUser: TEdit; EditOpenbroadcastPass: TEdit; Button50: TButton; Label39: TLabel; Label40: TLabel; StaticText1: TStaticText; Button51: TButton; EditFreiePMUser: TEdit; EditFreiePMPass: TEdit; Label41: TLabel; Button52: TButton; Label42: TLabel; Label43: TLabel; EditVorname: TEdit; EditPLZ: TEdit; EditOrt: TEdit; EditStrasse: TEdit; Label44: TLabel; EditNr: TEdit; Label45: TLabel; Label46: TLabel; procedure WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); procedure WebBrowser1ProgressChange(Sender: TObject; Progress, ProgressMax: Integer); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button34Click(Sender: TObject); procedure ButtonDatenSpeichernClick(Sender: TObject); procedure ButtonDatenLadenClick(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button16Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button10Click(Sender: TObject); procedure Button11Click(Sender: TObject); procedure Button39Click(Sender: TObject); procedure Button40Click(Sender: TObject); procedure Button42Click(Sender: TObject); procedure Button43Click(Sender: TObject); procedure Button45Click(Sender: TObject); procedure Button49Click(Sender: TObject); procedure Button47Click(Sender: TObject); procedure Button51Click(Sender: TObject); procedure MemoKontaktdatenClick(Sender: TObject); procedure MemoKeysClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; ini: TIniFile; PWert: Integer; implementation {$R *.dfm} function FillForm(WebBrowser: TWebBrowser; FieldName: string; Value: string): Boolean; var i, j: Integer; FormItem: Variant; begin Result := False; //no form on document if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then begin Exit; end; //count forms on document for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do begin FormItem := WebBrowser.OleObject.Document.forms.Item(I); for j := 0 to FormItem.Length - 1 do begin try //when the fieldname is found, try to fill out if FormItem.Item(j).Name = FieldName then begin FormItem.Item(j).Value := Value; Result := True; end; except Exit; end; end; end; end; procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin // Ab hier die Ausfüllfelder eintragen // Ausfüllfelder für Swissdelphicenter FillForm(WebBrowser1, 'homepage', 'http://www.swissdelphicenter.ch') ; FillForm(WebBrowser1, 'email', EditEmail.Text); FillForm(WebBrowser1, 'headline', EditTitel.Text); FillForm(WebBrowser1, 'name', EditVorname.Text + ' ' + EditName.Text) ; FillForm(WebBrowser1, 'agency', EditAgentur.Text) ; FillForm(WebBrowser1, 'tel', EditTelefon.Text) ; FillForm(WebBrowser1, 'firma', EditFirma.Text) ; FillForm(WebBrowser1, 'titel', EditTitel.Text) ; FillForm(WebBrowser1, 'text', MemoHaupttext.Text) ; FillForm(WebBrowser1, 'ccontact', MemoKontaktdaten.Text) ; FillForm(WebBrowser1, 'portrait', MemoPortrait.Text) ; FillForm(WebBrowser1, 'shorttext', MemoTeaser.Text); FillForm(WebBrowser1, 'maintext', MemoHaupttext.Text); FillForm(WebBrowser1, 'company', EditFirma.Text) ; FillForm(WebBrowser1, 'adress', MemoKontaktdaten.Text) ; FillForm(WebBrowser1, 'web', EditWebseite.Text) ; FillForm(WebBrowser1, 'person', EditVorname.Text + ' ' + EditName.Text) ; //PRInside FillForm(WebBrowser1, 'position', 'Pressesprecher(in)') ; //PRInsie FillForm(WebBrowser1, 'ftitle', EditTitel.Text) ; //Premiumpresse FillForm(WebBrowser1, 'fsubtitle', EditUntertitel.Text) ; //Premiumpresse FillForm(WebBrowser1, 'fcity', EditVeroeffentlichungOrt.Text) ; //Premiumpresse FillForm(WebBrowser1, 'feditor1', MemoHaupttext.Text) ; //Premiumpresse FillForm(WebBrowser1, 'fuserkw1', EditKey1.Text) ; //Pemiumpresse FillForm(WebBrowser1, 'fuserkw2', EditKey2.Text) ; //Premiumpresse FillForm(WebBrowser1, 'fuserkw3', EditKey3.Text) ; //Premiumpresse FillForm(WebBrowser1, 'link_zur_homepage', EditWebseite.Text) ; //FillForm(WebBrowser1, 'passwort', EditPassword.Text) ; FillForm(WebBrowser1, 'firma', EditFirma.Text) ; //Offenes Presseportal FillForm(WebBrowser1, 'vorname', EditVorname.Text) ; //Offenes Presseportal FillForm(WebBrowser1, 'nachname', EditName.Text) ; //Offenes Presseportal FillForm(WebBrowser1, 'stadt', EditOrt.Text) ; //Offenes Presseportal FillForm(WebBrowser1, 'email', EditEmail.Text) ; //Offenes Presseportal FillForm(WebBrowser1, 'telefon', EditTelefon.Text) ; //Offenes Presseportal FillForm(WebBrowser1, 'url', EditWebseite.Text) ; //Offenes Presseportal FillForm(WebBrowser1, 'titel', EditTitel.Text) ; //Offenes Presseportal FillForm(WebBrowser1, 'text', MemoHaupttext.Text) ; //Offenes Presseportal FillForm(WebBrowser1, 'firmenportrait', MemoPortrait.Text) ; //Offenes Presseportal FillForm(WebBrowser1, 'bild_titel', EditBildunterschrift.Text) ; FillForm(WebBrowser1, 'titel', EditTitel.Text) ; FillForm(WebBrowser1, 'subtitle', EditUntertitel.Text) ; FillForm(WebBrowser1, 'hauptinhalt', MemoHaupttext.Text) ; FillForm(WebBrowser1, 'pressekontakt', MemoKontaktdaten.Text) ; FillForm(WebBrowser1, 'profil', MemoPortrait.Text) ; FillForm(WebBrowser1, 'edit[titel]', EditTitel.Text) ; FillForm(WebBrowser1, 'edit[taxonomy][tags][2]', MemoKeys.Text) ; FillForm(WebBrowser1, 'edit[body]', MemoHaupttext.Text) ; FillForm(WebBrowser1, 'post_titel', EditTitel.Text) ; FillForm(WebBrowser1, 'content', MemoHaupttext.Text) ; //Firmenpresse //Zugangsdaten if PWert=4 then begin //Starte Weiche für Premiumpresse FillForm(WebBrowser1, 'fusername', EditPremiumpresseUser.Text) ; //Premiumpresse FillForm(WebBrowser1, 'fpassword', EditPremiumpressePass.Text) ; //Premiumpresse end //Ende Weiche für Premiumpresse else if PWert=5 then begin //Starte Weiche für Fair News FillForm(WebBrowser1, 'edit[name]', EditUsername.Text) ; FillForm(WebBrowser1, 'edit[pass]', EditPassword.Text) ; end else if PWert=3 then begin //Starte Weiche für PRInsie FillForm(WebBrowser1, 'password', EditPRInsidePass.Text) ; end else if PWert=7 then begin //Nachrichten.net FillForm(WebBrowser1, 'password', EditNachrichtenNetPass.Text) ; FillForm(WebBrowser1, 'username', EditNachrichtenNetUser.Text) ; end else if PWert=8 then begin //Firmenpresse FillForm(WebBrowser1, 'uname', EditFirmenpresseUser.Text) ; FillForm(WebBrowser1, 'pass', EditFirmenpressePass.Text) ; end; end; procedure TForm1.WebBrowser1ProgressChange(Sender: TObject; Progress, ProgressMax: Integer); begin if ProgressMax = 0 then begin label1.Caption := ''; Exit; end; try if (Progress <> -1) and (Progress <= ProgressMax) then label1.Caption := IntToStr((Progress * 100) div ProgressMax) + '% loaded...' else label1.Caption := ''; except on EDivByZero do Exit; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Webbrowser1.Navigate('http://www.swissdelphicenter.ch/en/addtip.php'); PWert := 1; // Show the Titel of the currently active Webpage in the titlebar // Den Titel der aktuellen Webseite in der Titeleiste anzeigen // Caption := Webbrowser1.OleObject.Document.Title; end; procedure TForm1.Button2Click(Sender: TObject); begin PWert := 2; Webbrowser1.Navigate('http://openpr.de/news/einstellen.html'); end; procedure TForm1.Button34Click(Sender: TObject); begin PWert := 3; Webbrowser1.Navigate('http://www.pr-inside.com/de/release_new.htm'); end; procedure TForm1.ButtonDatenSpeichernClick(Sender: TObject); var ini: TIniFile; begin ini:=TIniFile.Create('./userdat.ini'); With ini do begin // Wenn das Formular geschlossen wird, werden diese Werte in die userdat.ini gespeichert WriteString('User1','Name',EditName.Text); WriteString('User1','Vorname',EditVorname.Text); WriteString('User1','Email',EditEmail.Text); WriteString('User1','Telefon',EditTelefon.Text); WriteString('User1','Agentur',EditAgentur.Text); WriteString('User1','Archiv',EditFirma.Text); WriteString('User1','Webseite',EditWebseite.Text); WriteString('User1','Username',EditUsername.Text); WriteString('User1','Password',EditPassword.Text); WriteString('User1','Strasse',EditStrasse.Text); WriteString('User1','Nr',EditNr.Text); WriteString('User1','PLZ',EditPLZ.Text); WriteString('User1','Ort',EditOrt.Text); WriteString('User1','OpenPRUser',EditOpenPRUser.Text); WriteString('User1','OpenPRPass',EditOpenPRPass.Text); WriteString('User1','PRInsideUser',EditPRInsideUser.Text); WriteString('User1','PRInsidePass',EditPRInsidePass.Text); WriteString('User1','PremiumpresseUser',EditPremiumpresseUser.Text); WriteString('User1','PremiumpressePass',EditPremiumpressePass.Text); WriteString('User1','FairNewsUser',EditFairNewsUser.Text); WriteString('User1','FairNewsPass',EditFairNewsPass.Text); WriteString('User1','OffenesPPUser',EditOffenesPPUser.Text); WriteString('User1','OffenesPPPass',EditOffenesPPPass.Text); WriteString('User1','NachrichtenNetUser',EditNachrichtenNetUser.Text); WriteString('User1','NachrichtenNetPass',EditNachrichtenNetPass.Text); WriteString('User1','FirmenpresseUser',EditFirmenpresseUser.Text); WriteString('User1','FirmenpressePass',EditFirmenpressePass.Text); WriteString('User1','LivePRUser',EditLivePRUser.Text); WriteString('User1','LivePRPass',EditLivePRPass.Text); WriteString('User1','PresseINUser',EditPresseINUser.Text); WriteString('User1','PresseINPass',EditPresseINPass.Text); WriteString('User1','PresseWSUser',EditPresseWSUser.Text); WriteString('User1','PresseWSPass',EditPresseWSPass.Text); WriteString('User1','InarUser',EditInarUser.Text); WriteString('User1','InarPass',EditInarPass.Text); WriteString('User1','nordPRUser',EditnordPRUser.Text); WriteString('User1','nordPRPass',EditnordPRPass.Text); WriteString('User1','DailyNetUser',EditDailyNetUser.Text); WriteString('User1','DailyNetPass',EditDailyNetPass.Text); WriteString('User1','PTextUser',EditPTextUser.Text); WriteString('User1','PTextPass',EditPTextPass.Text); WriteString('User1','OnlinepresseinfoUser',EditOnlinepresseinfoUser.Text); WriteString('User1','OnlinepresseinfoPass',EditOnlinepresseinfoPass.Text); WriteString('User1','OpenbroadcastUser',EditOpenbroadcastUser.Text); WriteString('User1','OpenbroadcastPass',EditOpenbroadcastPass.Text); WriteString('User1','FreiePMUser',EditFreiePMUser.Text); WriteString('User1','FreiePMPass',EditFreiePMPass.Text); //WriteLn('User1','Kontaktdaten',Memo1.Lines); //Wenn die Anwendung geschlossen wird, werden Fensterposition und Größe in die Ini geschrieben // WriteInteger('Position','Links',Left); // WriteInteger('Position','Oben',Top); // WriteInteger('Position','Rechts',Width); // WriteInteger('Position','Unten',Height); end; ini.Free end; procedure TForm1.ButtonDatenLadenClick(Sender: TObject); var ini: TIniFile; begin ini:=TIniFile.Create('./userdat.ini'); with ini do begin // Wenn die Anwendung gestartet wird, werden diese Daten aus der userdat.ini geschrieben EditName.Text:=ReadString ('User1','Name',''); EditVorname.Text:=ReadString ('User1','Vorname',''); EditEmail.Text:=ReadString ('User1','Email',''); EditTelefon.Text:=ReadString ('User1','Telefon',''); EditAgentur.Text:=ReadString ('User1','Agentur',''); EditFirma.Text:=ReadString ('User1','Archiv',''); EditWebseite.Text:=ReadString ('User1','Webseite',''); EditUsername.Text:=ReadString ('User1','Username',''); EditPassword.Text:=ReadString ('User1','Password',''); EditStrasse.Text:=ReadString ('User1','Strasse',''); EditNr.Text:=ReadString ('User1','Nr',''); EditPLZ.Text:=ReadString ('User1','PLZ',''); EditOrt.Text:=ReadString ('User1','Ort',''); EditOpenPRUser.Text:=ReadString ('User1','OpenPRUser',''); EditOpenPRPass.Text:=ReadString ('User1','OpenPRPass',''); EditPRInsideUser.Text:=ReadString ('User1','PRInsideUser',''); EditPRInsidePass.Text:=ReadString ('User1','PRInsidePass',''); EditPremiumpresseUser.Text:=ReadString ('User1','PremiumpresseUser',''); EditPremiumpressePass.Text:=ReadString ('User1','PremiumpressePass',''); EditFairNewsUser.Text:=ReadString ('User1','FairNewsUser',''); EditFairNewsPass.Text:=ReadString ('User1','EditFairNewsPass',''); EditOffenesPPUser.Text:=ReadString ('User1','OffenesPPUser',''); EditOffenesPPPass.Text:=ReadString ('User1','OffenesPPPass',''); EditNachrichtenNetUser.Text:=ReadString ('User1','NachrichtenNetUser',''); EditNachrichtenNetPass.Text:=ReadString ('User1','NachrichtenNetPass',''); EditFirmenpresseUser.Text:=ReadString ('User1','FirmenpresseUser',''); EditFirmenpressePass.Text:=ReadString ('User1','FirmenpressePass',''); EditLivePRUser.Text:=ReadString ('User1','LivePRUser',''); EditLivePRPass.Text:=ReadString ('User1','LivePRPass',''); EditPresseINUser.Text:=ReadString ('User1','PresseINUser',''); EditPresseINPass.Text:=ReadString ('User1','PresseINPass',''); EditPresseWSUser.Text:=ReadString ('User1','PresseWSUser',''); EditPresseWSPass.Text:=ReadString ('User1','PresseWSPass',''); EditInarUser.Text:=ReadString ('User1','InarUser',''); EditInarPass.Text:=ReadString ('User1','InarPass',''); EditnordPRUser.Text:=ReadString ('User1','nordPRUser',''); EditnordPRPass.Text:=ReadString ('User1','nordPRPass',''); EditDailyNetUser.Text:=ReadString ('User1','DailyNetUser',''); EditDailyNetPass.Text:=ReadString ('User1','DailyNetPass',''); EditPTextUser.Text:=ReadString ('User1','PTextUser',''); EditPTextPass.Text:=ReadString ('User1','PTextPass',''); EditOnlinepresseinfoUser.Text:=ReadString ('User1','OnlinepresseinfoUser',''); EditOnlinepresseinfoPass.Text:=ReadString ('User1','OnlinepresseinfoPass',''); EditOpenbroadcastUser.Text:=ReadString ('User1','OpenbroadcastUser',''); EditOpenbroadcastPass.Text:=ReadString ('User1','OpenbroadcastPass',''); EditFreiePMUser.Text:=ReadString ('User1','FreiePMUser',''); EditFreiePMPass.Text:=ReadString ('User1','FreiePMPass',''); // Memo1.Lines:=ReadString ('User1','Kontaktdaten',''); //Fensterposition vom letzten Programmende verwenden // Left := ReadInteger('Position','Links',Left); // Top := ReadInteger('Position','Oben',Top); // Width := ReadInteger('Position','Rechts',Width); // Height := ReadInteger('Position','Unten',Height); end; ini.Free; end; procedure TForm1.Button16Click(Sender: TObject); var Datei: TextFile; //text_datei: TextFile; text_zeilen: string; zeilen_num: Integer; begin if SaveDialogAlles.Execute then // MemoKontaktdaten.Lines.SaveToFile(SaveDialogAlles.FileName); // MemoPortrait.Lines.SaveToFile(SaveDialogAlles.FileName); AssignFile(Datei, SaveDialogAlles.FileName); Rewrite(Datei); WriteLn(Datei, EditName.Text); WriteLn(Datei,EditEmail.Text); WriteLn(Datei,EditTelefon.Text); WriteLn(Datei,EditAgentur.Text); WriteLn(Datei,EditFirma.Text); WriteLn(Datei,EditWebseite.Text); WriteLn(Datei,EditUsername.Text); WriteLn(Datei,EditPassword.Text); // WriteLn(Datei,MemoKontaktdaten.Lines.DelimitedText); // WriteLn(Datei,MemoPortrait.Lines.DelimitedText); //--------------Test---------------------- for zeilen_num := 0 to MemoKontaktdaten.Lines.Count -1 do begin //liest geänderte Zeilen in Variable text_zeilen := {IntToStr(zeilen_num) +} MemoKontaktdaten.Lines[zeilen_num]; //schreibt in Datei Zeile für Zeile WriteLn(datei,text_zeilen); end; //for end for zeilen_num := 0 to MemoPortrait.Lines.Count -1 do begin //liest geänderte Zeilen in Variable text_zeilen := {IntToStr(zeilen_num) +} MemoPortrait.Lines[zeilen_num]; //schreibt in Datei Zeile für Zeile WriteLn(datei,text_zeilen); end; //for end //------------Test Ende--------------------- CloseFile(Datei); end; procedure TForm1.Button6Click(Sender: TObject); begin PWert := 7; Webbrowser1.Navigate('http://www.nachrichten.net/news/create'); end; procedure TForm1.Button7Click(Sender: TObject); begin PWert := 8; Webbrowser1.Navigate('http://www.firmenpresse.de/pressemitteilung-veroeffentlichen.html'); end; procedure TForm1.Button8Click(Sender: TObject); begin PWert := 9; Webbrowser1.Navigate('http://www.live-pr.com/neue-pressemeldung.htm'); end; procedure TForm1.Button9Click(Sender: TObject); begin PWert := 10; Webbrowser1.Navigate('http://www.pressemitteilung.in/node/add/pressemeldung'); end; procedure TForm1.Button10Click(Sender: TObject); begin PWert := 11; Webbrowser1.Navigate('http://pressemitteilung.ws/node/add/story'); end; procedure TForm1.Button11Click(Sender: TObject); begin PWert := 12; Webbrowser1.Navigate('http://www.inar.de/wp-admin/post-new.php'); end; procedure TForm1.Button39Click(Sender: TObject); begin PWert := 13; Webbrowser1.Navigate('http://www.presse-kostenlos.de/press.exe?new=true'); end; procedure TForm1.Button40Click(Sender: TObject); begin PWert := 14; Webbrowser1.Navigate('http://www.nordpr.de/form/presseartikel-kostenlos-einstellen.html'); end; procedure TForm1.Button42Click(Sender: TObject); begin PWert := 15; Webbrowser1.Navigate('http://www.pressekat.de/index.php?_B=pm-erstellen-neul'); end; procedure TForm1.Button43Click(Sender: TObject); begin PWert := 16; Webbrowser1.Navigate('http://www.dailynet.de/anmeldung_pm.php'); end; procedure TForm1.Button45Click(Sender: TObject); begin PWert := 17; Webbrowser1.Navigate('http://www.ptext.de/user'); end; procedure TForm1.Button49Click(Sender: TObject); begin PWert := 19; Webbrowser1.Navigate('http://www.openbroadcast.de/publish.html'); end; procedure TForm1.Button47Click(Sender: TObject); begin PWert := 18; Webbrowser1.Navigate('http://www.onlinepresse.info/user/'); end; procedure TForm1.Button51Click(Sender: TObject); begin PWert := 20; Webbrowser1.Navigate('http://www.freie-pressemitteilungen.de/modules.php?name=Your_Account'); end; procedure TForm1.Button3Click(Sender: TObject); begin PWert := 4; Webbrowser1.Navigate('http://www.premiumpresse.de/seite/pressemitteilung-erstellen/'); end; procedure TForm1.Button4Click(Sender: TObject); begin PWert := 5; Webbrowser1.Navigate('http://www.fair-news.de/pr_neu_2.php'); end; procedure TForm1.Button5Click(Sender: TObject); begin PWert := 6; Webbrowser1.Navigate('http://www.offenes-presseportal.de/artikel-schreiben.htm'); end; procedure TForm1.MemoKontaktdatenClick(Sender: TObject); begin MemoKontaktdaten.Text := EditVorname.Text + ' ' + EditName.Text + #13#10 + EditEmail.Text + #13#10 + EditStrasse.Text + ' ' + EditNr.Text + #13#10 + EditPLZ.Text + ' ' + EditOrt.Text + #13#10 + 'Telefon: ' + EditTelefon.Text ; end; procedure TForm1.MemoKeysClick(Sender: TObject); begin MemoKeys.Text := EditKey1.Text + ', ' + EditKey2.Text + ', ' + EditKey3.Text + ', ' + EditKey4.Text ; end; end. Grüße Erutan
Holger
|
![]() |
Registriert seit: 19. Mai 2006 570 Beiträge Delphi XE3 Professional |
#3
Ein Problem ist, daß die Eigenschaft "Name" nicht immer vorhanden ist. Aber dazu wurde schon einiges gesagt.
Das andere Problem liegt in den Exceptions, die die JavaScript-Engine des Internet Explorers produziert. Hier hilft nur das Abschalten der vom Prozessor erzeugten Exceptions. ![]() |
![]() |
nahpets
(Gast)
n/a Beiträge |
#4
PWert ist nicht zwingend mit einem sinnvollen Wert befüllt.
Bei Button1 wird PWert erst nach dem Webbrowser1.Navigate befüllt, hat also vorher ggfls. einen undefinierten Wert (irgendein Integer). Gib hier bitte mal FieldName mit aus, damit man weiß, bei welchem Feld der Fehler auftritt.
Delphi-Quellcode:
Mir ist der Fehler nur bei Offenes-Presseportal.de ca. 46 mal um die Ohren gehauen worden. Auf der Seite scheinen alle Eingabefelder... innerhalb von FieldSets zu stehen. Es kann sein, dass das FillForm dafür nicht geeignet ist, da die Eingabefelder nicht direkt im Form liegen, sondern in FieldSets.
except
on E: Exception do ShowMessage('Fehler vom Typ: ' + E.ClassName + ', Meldung: ' + E.Message + ' , Feld: ' + FieldName); end; Die Seite von Fair-News.de enthält mehrere Formulare. Welches dieser Formulare erwischst Du denn mit Deinem Programm? Buttons sind auch Felder in einem Formular, sie haben aber nicht zwingend einen Namen. Damit kann FormItem.Item(j).Name leer sein. Hier könntest Du mal probieren, ob eine Abfrage mit EmptyVar funktioniert. Weiß nicht, ob sowas funktionieren könnte:
Delphi-Quellcode:
Dashier ist äußerst ungeschickt:if Not (FormItem.Item(j).Name = EmptyVar) and (FormItem.Item(j).Name = FieldName) then begin FormItem.Item(j).Value := Value; Result := True; end;
Delphi-Quellcode:
Damit ignorierst Du Deine Fehler und verlierst die Fehlermeldung.
except
Exit; end; Da Du den Rückgabewert von FillForm nie benutzt, könntest Du diesen auf String ändern und dann die Fehlermeldung zurückgeben.
Delphi-Quellcode:
Dann spendierst Du dem Programm noch ein Memofeld (unterhalb der Buttons?) und gibst dort den Rückgabewert von FillForm aus.
function FillForm(WebBrowser: TWebBrowser; FieldName: string; Value: string): String;
var i, j: Integer; FormItem: Variant; begin Result := 'setze ' + FieldName + '=' + Value; ... Except on E: Exception do Result := Result + #13 + 'Fehler vom Typ: ' + E.ClassName + ', Meldung: ' + E.Message + ' Feld: ' + FieldName; ShowMessage(Result); end; end;
Delphi-Quellcode:
In der endgültigen Programmversion kannst Du das Memo dann unsichtbar machen.MemoLog.Lines.Clear; MemoLog.Lines.Add(FillForm(WebBrowser1, 'homepage', 'http://www.swissdelphicenter.ch')); ... Alternativ kannst Du die Fehler auch in eine LOG-Datei schreiben. |
![]() |
Registriert seit: 16. Mär 2013 71 Beiträge Delphi 7 Professional |
#5
Ahhh, jetzt wird mir so langsam Einiges klar...u.a. auch Sachen nach denen ich später um Rat fragen wollte.
Z.B. das hier: ![]() Auf der Seite scheinen alle Eingabefelder... innerhalb von FieldSets zu stehen. Es kann sein, dass das FillForm dafür nicht geeignet ist, da die Eingabefelder nicht direkt im Form liegen, sondern in FieldSets.
![]() ![]() PWert ist nicht zwingend mit einem sinnvollen Wert befüllt.
Allerdings wird die Variable bei jedem Aufruf schn mal mit einem sinnvollen Wert gefüllt. ![]() Die Seite von Fair-News.de enthält mehrere Formulare. Welches dieser Formulare erwischst Du denn mit Deinem Programm?
![]() Gib hier bitte mal FieldName mit aus, damit man weiß, bei welchem Feld der Fehler auftritt.
![]() Das andere Problem liegt in den Exceptions, die die JavaScript-Engine des Internet Explorers produziert. Hier hilft nur das Abschalten der vom Prozessor erzeugten Exceptions. Das hier sollte Dir weiterhelfen.
Ich schaue mir das jetzt an. Viele Grüße und vielen Dank
Holger
|
![]() |
Registriert seit: 16. Mär 2013 71 Beiträge Delphi 7 Professional |
#6
So, bin wieder aus dem Urlaub zurück.
Ich habe alle Vorschläge eingebaut bzw. abgearbeitet aber nichts hat geholfen. In den meisten Fällen wollte Delphi den Code gar nicht mehr compilieren. Dazu kommt noch, daß dieses Konzept, wie nahpets schon sagte, für viele Presseportale einfach nicht geeignet scheint. In einige Fällen, wie etwa beim offenen Presseportal, werden die Felder nicht ausgefüllt, bei anderen, wie bei Nachrichten.net wird eine Anmeldung aus irgendwelchen Gründen verhindert, d.h. ich komme über das Programm gar nicht erst auf die Seite mit dem auszufüllenden Formular. Gleiches bei firmenpresse.de. Scheinbar bringt der TWebbrowser, obwohl doch einfach nur ein Internet Explorer, nicht alle Eigenschaften eines "echten" Browsers mit was die Portale möglicherweise als Spam werten. Dabei hatte ich mich ursprünglich für diese Form der Anmeldung entschieden weil sie eben kein Spam darstellt und man die Seiten in Originalform, inklusive aller Werbung, präsentiert bekommt. Falls jemand eine andere Lösung weiß, dann wäre das echt klasse. Es muß doch irgendeine Möglichkeit geben, diese Portale irgendwie anzusteuern und dort Meldungen einzustellen. Es gibt doch schließlich sogar kommerzielle Formfiller, die für mich jedoch wegen ihrer mangelnden Spezialisierung nicht geeignet sind. Gibt es vielleicht die Möglichkeit, einen anderen Browser als den TWebbrowser einzusetzen oder die Datenübermittlung komplett anders zu organisieren? Über IdHTTP geht es übrigens meiner Ansicht nach nicht, da man sich fast überall anmelden muß und die Anmeldedaten nur selten in hidden-fields innerhalb des Formulars gespeichert werden.
Holger
|
![]() |
Furtbichler
(Gast)
n/a Beiträge |
#7
Haben die Seiten keine API? Wäre das nicht besser? Ist es überhaupt erlaubt/erwünscht, das die Ameldung über Bots ausgeführt wird (Stichwort: AGB)?
|
![]() |
Registriert seit: 16. Mär 2013 71 Beiträge Delphi 7 Professional |
#8
![]() Haben die Seiten keine API?
![]() Ist es überhaupt erlaubt/erwünscht, das die Ameldung über Bots ausgeführt wird (Stichwort: AGB)?
Eine Grauzone vielleicht und den Betreibern sicherlich nicht leicht verständlich zu machen. Ich besuche diese Seiten ohnehin täglich, logge mich ein, fülle die Formulare aus und sende sie ab. Das alles dauert nur mehrere Stunden. Mit dem Tool könnte ich die Arbeit in einer Stunde erledigt haben. Das Ergebnis für die Seitenbetreiber wäre das gleiche - nur für mich würde es eine Zeiteinsparung bedeuten. Damit das nicht in ein falsches Licht gerät, möchte ich hier mal kurz erklären: Pressemitteilungen bedeuten für die Presseportale unabdingbar wichtigen Content, der die Inhalte der Portale darstellt. Es ist nichts Unrechtes was ich mit meinem Tool mache. Alle Daten direkt via IdHTTP an die Portale zu versenden wäre da schon bedenklicher.
Holger
|
![]() |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
LinkBack |
![]() |
![]() |