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
Erutan

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

Floating Point division by zero

  Alt 18. Aug 2013, 01:04
Delphi-Version: 5
Hallo,

so viel Spaß mir as Anfänger das Programmieren meines kleinen Pressemitteilungs-Helfers auch macht...manchmal könnte ich verzweifeln.

Ich baue mir gerade ein Helferlein, das mir die lästige Arbeit mit Pressemitteilungen etwas erleichtern soll. Es ist im Kern ein automatisches Ausfüllprogramm, basierend auf einem Code, den ich mal hier gefunden habe:
http://www.swissdelphicenter.ch/de/showcode.php?id=262

Das klappt eigentlich auch ganz gut...zumindest wenn ich meine eigenen Webseiten oder die, im Code angegebene Seite vom swissdelphicenter ansteuere bekomme ich laufend Abstürze.
In der Entwicklungsumgebung selber lautet die Fehlermeldung: Project xyz raised exception class EOleError with Message 'Methode 'Name' not supported by automation object. Process stopped. Use Step or Run to continue.

Der Debugger stoppt bei folgendem Code:
if FormItem.Item(j).Name = FieldName then Aber wie gesagt, das macht er niemals bei der Seite vom Swissdelphicenter oder meinen Testseiten. Ich vermute deshalb, daß es etwas mit dem Verhalten der angesteuerten Webseiten zu tun hat. Möglicherweise mit diversen JavaScript-Fehlermeldungen, ich ich durch Silent := true einfach abgeschaltet habe.

Wenn ich das Programm direkt starte, also nicht über die IDE, dann läuft es ein wenig stabiler. Wenn es dann aber doch abstürzt, dann produziert es die Fehlermeldung: Floatng Point division by zero.

Ich kann mit beiden Fehlermeldungen nicht sehr viel anfangen und verstehe nur, daß es sich um einen Laufzeitfehler handelt, der durch die Methode "Name" ausgelöst wird.

Wäre klasse wenn jemandem etwas dazu einfallen könnte.

Viele Grüße
Erutan
Holger
  Mit Zitat antworten Zitat
Erutan

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

AW: Floating Point division by zero

  Alt 18. Aug 2013, 01:19
Oh, ich sehe gerade, daß sich da ein Fehler eingeschlichen hat. Das Forum glaubt, ich würde noch mit Delphi 5 arbeiten. Nein, ich habe mich mittlerweile bis zu Delphi 7 hochgearbeitet Hab's inzwischen geändert.
Holger
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#3

AW: Floating Point division by zero

  Alt 18. Aug 2013, 01:43
Hallo,

Zitat:
Das klappt eigentlich auch ganz gut...
Scheint nicht so zu sein.

Zitat:
zumindest wenn ich meine eigenen Webseiten oder die, im Code angegebene Seite vom swissdelphicenter ansteuere bekomme ich laufend Abstürze.
Zitat:
Aber wie gesagt, das macht er niemals bei der Seite vom Swissdelphicenter oder meinen Testseiten.
So, jetzt bin ich leicht verwirrt (Absturz [ ] Ja, [ ] Nein).

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.

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Bjoerk

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

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.874 Beiträge
 
Delphi 11 Alexandria
 
#5

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.639 Beiträge
 
Delphi 12 Athens
 
#6

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.948 Beiträge
 
Delphi 12 Athens
 
#7

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
 
#8

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
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 23:29 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