AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

EInvalidOp -- oO

Ein Thema von RobinHood · begonnen am 13. Jun 2005 · letzter Beitrag vom 20. Jun 2005
Antwort Antwort
RobinHood

Registriert seit: 5. Jun 2005
16 Beiträge
 
#1

EInvalidOp -- oO

  Alt 13. Jun 2005, 15:33
Hi ihr ... ich hab da ma nen Problem:

ich führe in meinem Programm einen gewöhnliche Division durch, die jedoch mit einer Exception der Klasse EInvalidOp.
Das ist mir unbegreiflich ...
Code:
sk := 400/2/sk;
wobei sk eine extended Variable ist, darüber hinaus hat der Wert sk zu Beginn den Wert 10 ... 100%ig, denn ich bin den Quelltext in mehreren Fällen mit F7 einzeln durchgegangen.
Aber wie kann 400/2/10 EInvalidOp auslösen ... für mich ein unerklärbares Rätsel.

Bitte helft mir !!!
MfG RobinHood
  Mit Zitat antworten Zitat
Benutzerbild von Pitch-Bull
Pitch-Bull

Registriert seit: 7. Jun 2005
Ort: Stendal
90 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: EInvalidOp -- oO

  Alt 13. Jun 2005, 15:56
nimm doch einfach integer oder real
Entropie ist keine Glücksgarantie
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: EInvalidOp -- oO

  Alt 13. Jun 2005, 15:57
Schon mal in der Hilfe gekuckt:
Zitat:
EInvalidOp is the exception class for undefined floating-point operations.
Und weiter:
Zitat:
EInvalidOp is raised when the CPU encounters an undefined instruction, invalid operation, or floating-point stack overflow.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#4

Re: EInvalidOp -- oO

  Alt 13. Jun 2005, 16:33
Versuchs mal mit:sk := (400.0/2.0)/sk;
  Mit Zitat antworten Zitat
RobinHood

Registriert seit: 5. Jun 2005
16 Beiträge
 
#5

Re: EInvalidOp -- oO

  Alt 13. Jun 2005, 22:48
Schonmal danke für eure Hilfe ... aber leider geht das alles nich!
Mit real hab ichs probiert -> geht nich
bei Integer hab ichs mit "div" gemacht ... dann kommt aber die selbe Fehlermeldung bei der nächsten Rechenoperation, die aber Kommazahlen enthält
die Schreibweise sk := (400.0/2.0)/sk; geht auch nich ...

Natürlich hab ich in der Hilfe nach der Beschreibung gesucht, aber ich werd einfach nich schlau daraus.

Das kuriose is ja, dass genau die selbe Operation schon einmal fuktioniert hat, jedoch musste ich das Programm umschreiben und nun funktioniert sie nicht mehr

Hilfeeeeee ...
MfG RobinHood
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#6

Re: EInvalidOp -- oO

  Alt 13. Jun 2005, 22:56
mach es doch mal auf zwei versuche:

Delphi-Quellcode:
temp:=400.0/2.0;
if sk<>0 then sk:=temp/sk;
//evtl.auch so:
temp:=400.0/2.0/sk;
sk:=temp;
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
RobinHood

Registriert seit: 5. Jun 2005
16 Beiträge
 
#7

Re: EInvalidOp -- oO

  Alt 14. Jun 2005, 16:43
wahhh ... das funktioniert auch nich -_-


Code:
procedure zeichne_graph(faktoren,exponenten : Textend_array; sk : extended; start,ende : integer);
var xko,yko : extended;
    i,i2 : integer;
begin
  sk := 400.0/2.0/sk;
  for i := start to ende do
    begin
      xko := i/sk;
      yko := 0;
      for i2 := 0 to high(faktoren) do
             yko := yko + faktoren[i2]*power(xko,exponenten[i2]);

      if (i=start) then form1.PaintBox1.Canvas.MoveTo(200+round(xko*sk),200-round(yko*sk))
        else form1.PaintBox1.Canvas.LineTo(200+round(xko*sk),200-round(yko*sk));
    end;
end;
übergabeparameter von sk ist beim prozeduraufruf 10

so siehts aus ... manche methoden gingen ... aber er is dann in zeile 8 (xko := i/sk) wieder gescheitert mit dem selben problem

RobinHood
  Mit Zitat antworten Zitat
RobinHood

Registriert seit: 5. Jun 2005
16 Beiträge
 
#8

Re: EInvalidOp -- oO

  Alt 20. Jun 2005, 15:40
Och nööö is dieses Problem echt unlösbar?
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#9

Re: EInvalidOp -- oO

  Alt 20. Jun 2005, 15:42
Wie bereits gesagt, EInvalidOp wird geworfen, wenn die CPU eine ihr unbekannte Instruktion trifft. Außer mit neuer Hardware lässt sich da leider nix machen...
  Mit Zitat antworten Zitat
RobinHood

Registriert seit: 5. Jun 2005
16 Beiträge
 
#10

Re: EInvalidOp -- oO

  Alt 20. Jun 2005, 16:29
Hmpf ... aber es hat ja schonmal funktioniert ...
Delphi-Quellcode:
procedure zeichne_graph(faktoren : Textend_array; sk : extended);
var xko,yko : extended;
    i,exp : integer;
begin
  sk := 400/2/sk;
  for i := -200 to 200 do
    begin
      xko := i/sk;
      yko := 0;
      for exp := high(faktoren) downto 0 do yko := yko + faktoren[exp]*power(xko,exp);
      if i=-200 then form1.PaintBox1.Canvas.MoveTo(200+round(xko*sk),200-round(yko*sk))
        else form1.PaintBox1.Canvas.LineTo(200+round(xko*sk),200-round(yko*sk));
    end;
end;
so hat ichs früher ... der einzige weitere Unterschied, den man hier nich sehn kann is der Aufruf ...
bei der alten version wird diese prozedur vom der hauptprozedur button.click aufgerufen und bei der neuen Version von einer anderen Unterprozedur ...
  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 06:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz