AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Floating Point division by zero

Ein Thema von Erutan · begonnen am 18. Aug 2013 · letzter Beitrag vom 3. Sep 2013
Antwort Antwort
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Floating Point division by zero

  Alt 18. Aug 2013, 08:12
Würd' ich auch gern mal wissen, was da Delphi so macht? Scheint irgendwie mit dem Variant zusammenzuhängen.

Zum Beispiel wird das kompiliert??

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  A: Variant;
begin
  A.Nonsens.Tralala.SomeItem(119).SomeBlödsinn := 'Test';
end;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.876 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Floating Point division by zero

  Alt 18. Aug 2013, 08:26
Ich bin mir nicht ganz sicher, ob er sich am ö stort, aber grundsätzlich sollte die Zeile komplilieren
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.652 Beiträge
 
Delphi 12 Athens
 
#3

AW: Floating Point division by zero

  Alt 18. Aug 2013, 09:10
Ich bin mir nicht ganz sicher, ob er sich am ö stort, aber grundsätzlich sollte die Zeile komplilieren
Unter D2009+ würde die Zeile auf jeden Fall kompilieren (da kann man zwar Umlaute in Identifiern verwenden - sollte es aber nicht!). Variants werden ja erst zur Laufzeit aufgelöst und da nimmt der Compiler ebenn alles, was syntaktisch erlaubt ist.

Wenn es dann aber beim Programmlauf kein A.Nonsens oder eines der folgenden Unterelemente gibt, wird ein Fehler gemeldet.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.962 Beiträge
 
Delphi 12 Athens
 
#4

AW: Floating Point division by zero

  Alt 18. Aug 2013, 09:50
Ich bin mir nicht ganz sicher, ob er sich am ö stort, aber grundsätzlich sollte die Zeile komplilieren
Unter aktuellen Delphiversionen kompiliert auch das ohne Probleme:
Delphi-Quellcode:
var
  鈀灞渤: Variant;
begin
  鈀灞渤.碑背椑北(22);
In der Entwicklungsumgebung selber lautet die Fehlermeldung: Project xyz raised exception class EOleError with Message 'Methode 'Name' not supported by automation object.
Ich bin mir nicht sicher, ob alle Elemente die Eigenschaft Name haben...
tagname sollte aber immer verfügbar sein. Damit kannst du dann erst einmal schauen, ob das Tag passt und dann erst den Namen prüfen. Das sollte immer funktionieren.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Floating Point division by zero

  Alt 18. Aug 2013, 10:12
In einem Variant kann auch ein IDispatch - Interface stecken.
Daher ist es ganz normal, dass der Compiler keine weiteren Prüfungen mehr vornimmt.

Ein IDispatch Interface funktioniert so:
zur Laufzeit fragt die Anwendung nach der Nummer der Methode / Property.
Falls es die Methode / Property gibt wird in einem zweiten Schritt die Methode aufgerufen.
Dies wird auch "late bindung" genannt, weil erst zur Laufzeit geprüft wird ob es die Methoden überhaupt gibt.
fork me on Github
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Floating Point division by zero

  Alt 18. Aug 2013, 16:16
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;
  Mit Zitat antworten Zitat
Erutan

Registriert seit: 16. Mär 2013
71 Beiträge
 
Delphi 7 Professional
 
#7

AW: Floating Point division by zero

  Alt 18. Aug 2013, 23:57
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ß.

Zitat:
So, jetzt bin ich leicht verwirrt (Absturz [ ] Ja, [ ] Nein).
Okay. Ich sagte ja, daß das Programm nur beim Aufruf einiger Seiten abstürzt während es beim Aufruf anderer Seiten stabil läuft.

Es stürzt beispielsweise beim Aufruf der Seite http://www.swissdelphicenter.ch/en/addtip.php (um dort probehalber das Feld bei Homepage ausfülen zu lassen) niemals ab; ist zumindest bisher noch nie abgestürzt.

Dagegen stürzt es beim Aufruf der Seite http://openpr.de/news/einstellen.html manchmal und beim Aufruf der Seite http://www.fair-news.de/pr_neu_2.php bzw. http://www.firmenpresse.de/pressemit...entlichen.html sehr häufig ab. Die letzteren Seiten biegen die Anfrage allerdings auf eine Login-Seite um. Das spielt allerdings keine Rolle. Auch wenn ich direkt auf die Loginseite verlinke, stüzt das Programm hin und wieder ab.

Etwas was wirklich seltsam ist:
Gehe ich zuerst auf http://www.swissdelphicenter.ch/en/addtip.php und erst dann auf die anderen Seiten, reduzieren sich die Abstürze deutlich.

Zitat:
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.
Gern. Ich füge hier einfach mal den gesamten Sourcecode ein, da ich mir nicht sicher bin, ob das Problem wirklich dort entsteht wo der Debugger es mir anzeigt. Möglich, daß einfach nur eine Einstellung falsch gewählt ist?...

Also, hier der gesamte Sourcecode:

Delphi-Quellcode:
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.
Für den Fall, daß es jemand selber ausprobieren will, habe ich die kompilierte Datei hochgeladen.

Grüße
Erutan
Angehängte Dateien
Dateityp: zip Project1.zip (267,6 KB, 9x aufgerufen)
Holger
  Mit Zitat antworten Zitat
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#8

AW: Floating Point division by zero

  Alt 19. Aug 2013, 00:45
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. Das hier sollte Dir weiterhelfen.
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#9

AW: Floating Point division by zero

  Alt 19. Aug 2013, 01:15
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:
  except
    on E: Exception do
      ShowMessage('Fehler vom Typ: ' + E.ClassName + ', Meldung: ' + E.Message + ' , Feld: ' + FieldName);
  end;
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.

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:
        
        if Not (FormItem.Item(j).Name = EmptyVar)
        and (FormItem.Item(j).Name = FieldName) then
        begin
          FormItem.Item(j).Value := Value;
          Result := True;
        end;
Dashier ist äußerst ungeschickt:
Delphi-Quellcode:
      except
        Exit;
      end;
Damit ignorierst Du Deine Fehler und verlierst die Fehlermeldung.
Da Du den Rückgabewert von FillForm nie benutzt, könntest Du diesen auf String ändern und dann die Fehlermeldung zurückgeben.
Delphi-Quellcode:
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;
Dann spendierst Du dem Programm noch ein Memofeld (unterhalb der Buttons?) und gibst dort den Rückgabewert von FillForm aus.
Delphi-Quellcode:
 
MemoLog.Lines.Clear;
MemoLog.Lines.Add(FillForm(WebBrowser1, 'homepage', 'http://www.swissdelphicenter.ch'));
...
In der endgültigen Programmversion kannst Du das Memo dann unsichtbar machen.
Alternativ kannst Du die Fehler auch in eine LOG-Datei schreiben.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:03 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