![]() |
EInvalidOp -- oO
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:
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.
sk := 400/2/sk;
Aber wie kann 400/2/10 EInvalidOp auslösen ... für mich ein unerklärbares Rätsel. Bitte helft mir :stupid: !!! MfG RobinHood |
Re: EInvalidOp -- oO
nimm doch einfach integer oder real
|
Re: EInvalidOp -- oO
Schon mal in der Hilfe gekuckt:
Zitat:
Zitat:
|
Re: EInvalidOp -- oO
Versuchs mal mit:
Delphi-Quellcode:
sk := (400.0/2.0)/sk;
|
Re: EInvalidOp -- oO
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 :cry: Hilfeeeeee ... MfG RobinHood |
Re: EInvalidOp -- oO
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; |
Re: EInvalidOp -- oO
wahhh ... das funktioniert auch nich -_-
Code:
übergabeparameter von sk ist beim prozeduraufruf 10
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; so siehts aus ... manche methoden gingen ... aber er is dann in zeile 8 (xko := i/sk) wieder gescheitert mit dem selben problem RobinHood :gruebel: |
Re: EInvalidOp -- oO
Och nööö is dieses Problem echt unlösbar? :cry:
|
Re: EInvalidOp -- oO
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...
|
Re: EInvalidOp -- oO
Hmpf ... aber es hat ja schonmal funktioniert ...
Delphi-Quellcode:
so hat ichs früher ... der einzige weitere Unterschied, den man hier nich sehn kann is der Aufruf ...
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; bei der alten version wird diese prozedur vom der hauptprozedur button.click aufgerufen und bei der neuen Version von einer anderen Unterprozedur ... :gruebel: :wiejetzt: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 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