AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language "invalid floating point operation" finde den Fehler nicht
Thema durchsuchen
Ansicht
Themen-Optionen

"invalid floating point operation" finde den Fehler nicht

Ein Thema von St0rmhunter · begonnen am 2. Nov 2011 · letzter Beitrag vom 14. Nov 2011
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

AW: "invalid floating point operation" finde den Fehler nicht

  Alt 4. Nov 2011, 15:42
@DeddyH

Zitat:
Bist Du einmal durchgesteppt und hast Dir die aktuellen Variableninhalte einmal angesehen?
Mit durchsteppen hast du bestimmt das mit F7 gemeint, also den nächsten Befehl immer erst nach F7 ausführen oder? Wenn ja ... das klappt bei mir irgendwie nicht
irgendwie?
was klappt denn da nicht? gibt es eine Fehlermeldung?
vllt hilft es unter den Projektoptionen / Compiler dem Debugger auf die Sprünge zu helfen?

Dann wo denkst du denn sind Zwischenvariablen angebracht? Wüsste nicht wo es hilfreich wäre oder nützlich wäre.
Und zu der Idee mit der minimalen Fehlerbehandlung, sry aber ich weiß nicht was du damit meinst?
Hier z.B.
for j:=2 to strtoint(edit3.text) do
Delphi-Quellcode:
maxj:=strtoint(edit3.text);
if maxj<2 then showmessage('vertan');
for j:=2 to maxj do



Zitat:
strtoint(edit2.text) // Division durch 0
Auch ist die Division durch 0 nicht "möglich" weil in edit2 nur positive Zahlen geschrieben werden sollen. Klar wenn der Nutzer 0 reinschreibt isses ne Division durch 0, aber normalerweise stehen da nur positive Zahlen im Feld.
[/QUOTE]

"normalerweise" ist nicht das gleiche wie NIE!

Normalerweise scheint im Sommer die Sonne und es ist warm (die Frage ist nur wo, und warm ist ziemlich relativ )

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: "invalid floating point operation" finde den Fehler nicht

  Alt 4. Nov 2011, 15:49
sorry für meinen Extendedlapsus
die Grenze für Trunc liegt bei 9223372036854775807 = 2^63 - 1 , ab genau welcher Version auch für Int64 implementiert wurde weiß ich allerdings nicht
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Bjoerk

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

AW: "invalid floating point operation" finde den Fehler nicht

  Alt 4. Nov 2011, 16:33
So ist es.

Das wird nicht compiliert:

Delphi-Quellcode:
  ShowMessage (FloatToStr(Trunc(High(Int64)+1)));
  ShowMessage (FloatToStr(Int(High(Int64)+1)));
  Mit Zitat antworten Zitat
St0rmhunter

Registriert seit: 20. Aug 2011
24 Beiträge
 
#4

AW: "invalid floating point operation" finde den Fehler nicht

  Alt 4. Nov 2011, 19:25
Ok danke für die Tipps mit den Showmessages =)

Das mit F7 funktioniert einfach nicht, ich kann f7 drücke oder übers menu gehen und es passiert einfach nichts, das meinte ich mit funktioniert irgendwie nicht ^^

So der Fehler wird dann bei Trunc( liegen, da meine zahlen meistens viel größer sind wie z.B. 142^23 oder ähnlich groß.
Hätte jemand eine Idee wie ich denn bei so großen Zahlen den Rest berechnen kann? Der Windows Rechner kanns ja

Für Trunc( sind die Zahlen zu groß mod ist nicht für Extended ...
Hätte keine Idee mehr, einer von euch?

Aber soweit schonmal danke für eure Hilfe
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: "invalid floating point operation" finde den Fehler nicht

  Alt 4. Nov 2011, 20:01
Um mit F7 steppen zu können muß Du im Code vorher Breakpoints setzen, F5 oder Mausklick links neben dem Quelltext, wenn Du XE verwendest nicht über den grünen Pfeil, sondern über den grünen Pfeil mit Käfer starten.

Theoretisch gäbe es die Funktion Frac aus der Unit Math, die taugt aber für derart große Zahlen auch nicht mehr.

Gegf. arbeitest Du Dich da mal ein:

http://www.delphi-forum.de/viewtopic...hlight=bignum2
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#6

AW: "invalid floating point operation" finde den Fehler nicht

  Alt 4. Nov 2011, 21:09
Ohne Angaben, was Du eigentlich berechnen willst, kann man nur spekulieren. Einiges scheint doch ohne nähere Angaben verbesserungwürdig.

Wenn Du Fließkomma rechnest, wozu der Zwischenschritt über integer, d.h. warum nimmst Du trunc und nicht floor aus der Math-Unit?

Wenn Du als eigentliches Ziel allerdings wirklich zB 142^23 mod 997 berechnen willst, ist Dein Ansatz ziemlich daneben. Nehmen wir an, Du willst b^a mod m berechnen, mit Integerwerten a,b,m. Wenn Du schon a^b in einer Schleife durch Ausmultiplizieren potenzieren und nicht mit schneller Exponentation berechnen willst, reduzierst Du in jedem Schritt mod also
Delphi-Quellcode:
r := b;
for i:=2 to a do begin
  r := r*b mod m;
end;

Wenn Du allerdings nicht Integer sondern Fließkomma rechnen willst, ist eine Lösung
Delphi-Quellcode:
r := power(b,a);
r := r - floor(r/m);
  Mit Zitat antworten Zitat
Bjoerk

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

AW: "invalid floating point operation" finde den Fehler nicht

  Alt 4. Nov 2011, 23:51
Ok danke für die Tipps mit den Showmessages =)

Das mit F7 funktioniert einfach nicht, ich kann f7 drücke oder übers menu gehen und es passiert einfach nichts, das meinte ich mit funktioniert irgendwie nicht ^^

So der Fehler wird dann bei Trunc( liegen, da meine zahlen meistens viel größer sind wie z.B. 142^23 oder ähnlich groß.
Hätte jemand eine Idee wie ich denn bei so großen Zahlen den Rest berechnen kann? Der Windows Rechner kanns ja

Für Trunc( sind die Zahlen zu groß mod ist nicht für Extended ...
Hätte keine Idee mehr, einer von euch?

Aber soweit schonmal danke für eure Hilfe
Sieht nach RSA-Verschlüsselung aus. Probier mal so:

Delphi-Quellcode:
implementation

{$Q+}

function PowerAndMod(A, E, M: int64): int64;
begin
  if (A > MaxInt) or (E > MaxInt) then
    raise Exception.Create('int64 Overflow');
  Result:= 1;
  try
    while E > 0 do
      if E mod 2 <> 0 then
      begin
        Result:= (Result*A) mod M;
        E:= E-1;
      end
      else
      begin
        A:= (A*A) mod M;
        E:= E div 2;
      end;
  except
    raise Exception.Create('int64 Overflow');
  end;
end;
  Mit Zitat antworten Zitat
St0rmhunter

Registriert seit: 20. Aug 2011
24 Beiträge
 
#8

AW: "invalid floating point operation" finde den Fehler nicht

  Alt 14. Nov 2011, 17:04
So vielen Dank an alle Helfer, war noch Unterwegs in letzter Zeit und hatte keine Zeit für die Programmierung des Programms.

Die Lösung von Gammatester war genau das was ich brauchte jetzt funktioniert endlich auch alles =)
Delphi-Quellcode:
r := b;
for i:=2 to a do begin
  r := r*b mod m;
end;
Nochmal ein großes Danke an alle Helfer, dieses tollen Forums
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:09 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