![]() |
DIV Problem (Integer?)
Hallo Ihr :D
Ich hab n problem und finde meinen Fehler nicht! Und zwar geht es darum das ich in meinem Programm eine Rechnung machen will, als ergebnis will ich aber nur GANZE zahlen ausgegeben bekommen. Ich hab daher jetzt in meiner Rechnung mit DIV statt / gerechnet.. Allerdings bekomme ich nun immer folgende Fehlermeldung: [Fehler] Unit1.pas(42): Operator ist auf diesen Operandentyp nicht anwendbar Hier Nochmals mein Quelltext... Kann mir jemand sagen was ich jetzt Falsch gemacht habe??? var Form1: TForm1; L,H,L2,H2:real; procedure TForm1.RechneClick(Sender: TObject); begin L:=strtoint (Laenge.text); H:=strtoint (Hoehe.text); if L>H then begin L2:=L; H2:=(L div 3)*2; end else begin H2:=H; L2:=(H div 3)*2; end; Hoehe2.text:=inttostr(H2) ; Laenge2.Text:=intttostr(L2) ; end; LG Deca |
AW: DIV Problem (Integer?)
DIV funktioniert nur mit ganzen Zahlen, L ist aber vom Typ real.
P.S.: Willkommen in der DP :dp: |
AW: DIV Problem (Integer?)
Warum deklarist du die Variablen als Reals und nicht als Integer?
|
AW: DIV Problem (Integer?)
Warum sind eigentlich
Delphi-Quellcode:
global deklariert, obwohl sie nur lokal benötigt werden?
L,H,L2,H2:real;
Zitat:
siehe
Delphi-Quellcode:
,
L:=strtoint
Delphi-Quellcode:
,
intttostr(L2)
Delphi-Quellcode:
und vorallem
div
Zitat:
Zitat:
Operandentyp = Typ deiner Variable Also, da kann man aus der Fehlermeldung herauslesen, daß die Variable einen unpassenden Typen besitzt, welcher nicht mit dieser Operation vereinbar ist. PS: Für Fließkommazahlen nutzt man das
Delphi-Quellcode:
als Divisionsoperator.
/
Man hätte nicht alles fett schreiben müssen und der Code paßt auch ganz gut in ein [code]...[/code] oder sogar ein [delphi]...[/delphi] (der Knopf mit dem roten Helm) rein. :zwinker: Für Fehlerstellen macht sich z.B. ein Kommentar ala
Delphi-Quellcode:
nicht verkehrt.
// <<<<< hier ist es
|
AW: DIV Problem (Integer?)
Aaaaaa Danke schön :D
Ich hatte das problem das am anfang immer die fehlermeldung kam das InttoFloat nicht möglich ist ^-^ Aber habe das problem behoben xD danke euch xD und das mit [delphi] und Code und so wusste ich nich - . - sorry |
AW: DIV Problem (Integer?)
Zitat:
|
AW: DIV Problem (Integer?)
Er/Sie/Es meinte vermutlich StrToFloat und die Zuweisung an einen Integer. :stupid:
|
AW: DIV Problem (Integer?)
Also ne xD Das mit Int und Floats hab ich noch nich kapiert xD
Ich krieg dauerhaft Fehlermeldungen - .-
Code:
omg - . - Warum ist mein Operator jetz nich anwendbar?? ich hab das doch als Integer deklariert ö.ö
procedure TForm1.RechneClick(Sender: TObject);
var V,L,H,L2,H2:integer; begin L:=strtoint (Laenge.text); H:=strtoint (Hoehe.text); V:= L div H; if V>1.5 then begin H:= L div 1.5; // [Fehler] Unit1.pas(47): Operator ist auf diesen Operandentyp nicht anwendbar end else begin L:=1.5*H; end end; Hoehe2.text:=inttostr(H2) ; Laenge2.Text:= intToStr(L2) ; Sorry bin zu blöd für Delphi glaub ich langsam xD |
AW: DIV Problem (Integer?)
Delphi-Quellcode:
Alle 3 Teile müssen ganzzahlig sein, sonst kannst Du DIV nicht anwenden. 1,5 geht also nicht.
Integerergebnis := Integer div Integer;
|
AW: DIV Problem (Integer?)
Weil 1,5 nun mal keine ganze Zahl ist, der div-Operator aber nur für ganze Zahlen zu nutzen ist. Wenn du durch 1,5 teilen musst, musst du den normalen Teilungsoperator "/" nutzen. Um das Gleitkommaergebnis dieser Operation wieder in eine ganze Zahl zu wandeln hilft z.B. die Funktion
![]() |
AW: DIV Problem (Integer?)
[Fehler] Unit1.pas(47): Inkompatible Typen: 'Integer' und 'Extended'
krieg ich wenn ich / nehm statt DIV |
AW: DIV Problem (Integer?)
Wir drehen uns hier im Kreis. Was genau möchtest Du denn erreichen?
|
AW: DIV Problem (Integer?)
Ich will das so rechnen wie es da steht >> also teilen ^^
Allerdings soll er am ende nur GANZE zahlen ausgeben^^ Deswegen dachte ich an INT und DIV ^^ etc - . - xD |
AW: DIV Problem (Integer?)
Zitat:
Also entweder du nutzt eine Funktion wie Round, wie ich ja schon sagte (auch wenn's scheinbar keiner gelesen hat :roll:) oder du rechnest komplett mit Gleitkommazahlen und gibst das Ergebnis nicht mit FloatToStr sondern mit ![]() |
AW: DIV Problem (Integer?)
Genau, durchgängig mit Fließkommazahlen rechnen und nur die Ausgabe auf ganze Zahlen beschränken.
|
AW: DIV Problem (Integer?)
hmm ich versuchs mal xD
ich kenn Round nich :D |
AW: DIV Problem (Integer?)
|
AW: DIV Problem (Integer?)
Zitat:
|
AW: DIV Problem (Integer?)
aaaaa xD doch klar will ich das kennenlernen etc ^^ aber ich hatte mich auch ma über round informiert und hat trotzdem nix geklappt ^^ deswegen bin ich auf DIV gegangen was auch nich ging und dann war ich planlos xD
|
AW: DIV Problem (Integer?)
Die Datentypen müssen schon passen, da ist Delphi sehr pingelig. Übrigens würde ich es begrüßen, wenn Du in angemessenem Deutsch posten würdest. Nichts gegen einen gelegentlichen Smiley, aber bitte in überschaubarer Anzahl, wir sind ja nicht im Chat hier.
|
AW: DIV Problem (Integer?)
Wobei man auch nichtganzzahlige Divisionen bei DIV verwenden kann ... und zwar dann, wenn man die Divisor und Dividend auf ganzahlige Werte erweitert. :stupid:
Delphi-Quellcode:
x := y / 1.5; // float
x := Trunc(y / 1.5); // integer (abgerundet) x := Round(y / 1.5); // integer (gerundet) x := y * 2 div 3; // integer (abgerundet) x := (y * 2 + 2{*1}) div 3; // integer (aufgerundet) x := (y * 2 + 1{*2}) div 3; // integer (nahezu gerundet) *1 = 3 - 1 = Divisor - 1 = höchster Wert eines Divisionsergebnisses *2 = 3 / 2 = Divisor / 2 = Hälfte des Divisors |
AW: DIV Problem (Integer?)
Zitat:
Fehlen in deiner schönen Auflistung nicht auch noch ![]() ![]() |
AW: DIV Problem (Integer?)
Habt Ihr noch mehr zur Verwirrung des TE beizutragen? :tongue:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 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