![]() |
Delphi-Version: 5
Integer/Extended inkompatible
hallo,
folgende Zeile ergibt den Compilierfehler "inkompatible Typen 'Integer' und 'Extended'":
Code:
Welche '2' ist denn hier Extended?
var
Beschr: String; nBl, I: Integer; // Anzahl Blanks begin ... nBl := StrToInt(BreiteNamen.Text)/2-2; Nikodel |
AW: Integer/Extended inkompatible
Eine halbe Ganzzahl ist ein Extendend
Delphi-Quellcode:
oder Round
nBl := Trunc(StrToInt(BreiteNamen.Text)/2)-2;
|
AW: Integer/Extended inkompatible
Hallöle...:wink:
das / ergibt immer Nachkommastellen. Und dann ist es ein Extended. :zwinker: |
AW: Integer/Extended inkompatible
danke, ist ja eigentlich klar. Dann stand ich wohl auf der Leitung :wink:
Nikodel |
AW: Integer/Extended inkompatible
By the way, Int / Int ergibt zwar in Delphi (noch?) Extended, aber in (fast) allen anderen Sprachen wieder einen Int. Daher habe ich mir in so einer Situation angewöhnt, den Divisor als rationale Zahl ( d.h. 2.0 statt 2 ) zu schreiben, damit es mir (und evtl. auch dem Compiler) klar ist.
|
AW: Integer/Extended inkompatible
Ich bin erstaunt, dass das noch niemand erwähnt hat aber es gibt auch eine reine Integer-Division in Delphi:
Delphi-Quellcode:
nBl := StrToInt(BreiteNamen.Text) div 2 - 2;
Allerdings kommt da dann logischerweise immer eine Ganzzahl raus (Integer). d.h.
Delphi-Quellcode:
5 div 2 = 2
|
AW: Integer/Extended inkompatible
Das Ergebnis von DIV dürfte Trunc entsprechen, kann aber um 1 von Round abweichen.
Man muss also schon wissen, was man bei der Division von Integerwerten als Ergebnis erwartet. DIV und Trunc ergeben immer das "abgerundete" Ergebnis, also den ganzszahligen Vorkommaanteil. Round rundet ggfls. auf die nächsthöhere Ganzzahl auf.
Delphi-Quellcode:
i := 42 div 9; // -> i = 4
i := Trunc(42 / 9); // -> i = 4 i := Round(42 / 9); // -> i = 5 |
AW: Integer/Extended inkompatible
Kurzer Ergänzung: Wenn man eh Integer hat und als Ergebnis auch nur einen Integer benötigt also quasi das abgerundete Ergebnis was man auch durch Trunc erhalten würde, dann sollte man besser direkt div nutzen. Es macht keinen Sinn den PC mit einer Gleitkommaoperation zu belasten wenn man am Ende doch wieder nur den Integer haben will.
|
AW: Integer/Extended inkompatible
Wieso ggf.? Round richtet sich doch meines Wissens nach der mathematischen Vorgabe, also das ab 0,5 aufgerundet wird.
Oder habe ich das falsch im Gedächtnis? |
AW: Integer/Extended inkompatible
Für eine Halbierung könnte man auch einfach um eins nach rechts shiften :wink:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 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