Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Ungültige Gleitkommaoperation (https://www.delphipraxis.net/173910-ungueltige-gleitkommaoperation.html)

DataNess 23. Mär 2013 21:26

Ungültige Gleitkommaoperation
 
Hallo,

ich steh grad auf dem Schlauch...
wenn ich versuche
Code:
x:= round(panel1.Width*v);
oder
Code:
x:= round(panel1.Width*1.2);
wobei x: Integer und v: Real ist
bekomme ich immer einen Runtime-Error "Ungültige Gleitkommaoperation".

Was mach ich falsch ?

Mathematiker 23. Mär 2013 21:38

AW: Ungültige Gleitkommaoperation
 
Hallo,
Zitat:

Zitat von DataNess (Beitrag 1208554)
wenn ich versuche
Code:
x:= round(panel1.Width*v);
...
bekomme ich immer einen Runtime-Error "Ungültige Gleitkommaoperation".

Einen Runtime-Fehler liefert round i.A. nur, wenn die Zahl die Int64-Grenze überschreitet.
Da Dein Panel1 kaum so breit ist, vermute ich, dass der Fehler eher vor dem Befehl entsteht oder panel1.width in diesem Moment unbestimmt ist. Ich kann mir das zwar nicht vorstellen, aber wer weiß.
Evtl. wäre mehr veröffentlichter Quelltext für eine Fehlersuche hilfreich.

Beste Grüße
Mathematiker

DataNess 23. Mär 2013 21:47

AW: Ungültige Gleitkommaoperation
 
Achso,

kann es sein das es Auftritt, weil ich es im "FormCreate" aufrufe ?
Das Panel hab ich aber nicht selbst erstellt, und hat die Breite von 240...

Mathematiker 23. Mär 2013 21:50

AW: Ungültige Gleitkommaoperation
 
Zitat:

Zitat von DataNess (Beitrag 1208557)
kann es sein das es Auftritt, weil ich es im "FormCreate" aufrufe ?

Nimm die Anweisung einmal in die FormActivate. Dann müsste es gehen.

Beste Grüße
Mathematiker

DataNess 23. Mär 2013 22:02

AW: Ungültige Gleitkommaoperation
 
Hab's jetzt mit FormActivate und FormShow probiert aber es ändert nix...
Hier mal mehr Code
Code:
procedure TMain.FormShow(Sender: TObject);
var x,y:integer;
    vf,vs,v:real;
    s:string;
begin
  vs:= Screen.width / screen.height;
  vf:=main.Width / main.Height;
  x:=round((main.Width / vf)*vs);
  v:= ((main.Width / vf)*vs) / main.Width;
  main.Width:=x;
  x:= round(panel1.Width*1.2);
  panel1.Width:=x;
...
was ich erreichen will damit:
Ich hab später 4 Panels, die aber an das Bildschirmformat (4/3 oder 16/10) angepasst werden sollen...
Vieleicht ist es auch einfacher 'ClientWidth div 4' ?
Hab mich nur gewundert...

Danke Trozdem

Bjoerk 23. Mär 2013 22:28

AW: Ungültige Gleitkommaoperation
 
Nach Umstellen und Kürzen ergibt sich einfach:

Delphi-Quellcode:
  Main.Width := Round(Main.Height * Screen.Width / Screen.Height);
  Panel1.Width := Round(Panel1.Width * 1.2);
Gruß
Thomas

Furtbichler 24. Mär 2013 09:59

AW: Ungültige Gleitkommaoperation
 
Ich kann das Problem mit dem Originalcode nicht nachvollziehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:18 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