AGB  ·  Datenschutz  ·  Impressum  







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

ungültige Typenumwandlung Single- Byte

Ein Thema von Virchov · begonnen am 25. Mär 2004 · letzter Beitrag vom 25. Mär 2004
Antwort Antwort
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#1

Re: ungültige Typenumwandlung Single- Byte

  Alt 25. Mär 2004, 15:53
Zitat von Virchov:
NormalisedV:= BYTE (roiHistogram[idx] * ( (*single*)(MAXBYTE) div (*single*)(roiHistogramMax) );
Ich nehme an:
NormalizedV : Byte
roiHistogram : array of Byte
MAXBYTE : Byte
roiHistogramMax : Byte

"/" ist in Delphi der Disivionsoperator für Fließkommawerte, und "div" für Ganzzahlenwerte. Byte ist immer ganzzahlig. Bei einer "div"-Division gehen Informationen verloren, z.B. bei 10 div 3. Das Ergebnis bei "div": 3 (es wird immer abgerundet!) und bei "/": 3.3333...

Wenn du das Ergebnis ordentlich gerundet (ab n.5 aufgerundet), dann mach es am besten so:
NormalizedV := round(roiHistogram[idx] * (MAXBYTE / roiHistogramMax)); Der Typecast nach "single" weiter oben war unnötig. Das Problem ist, dass eine "/"-Division IMMER ein Ergebnis vom Typ "double" liefert, und so keinem "Byte" zugewiesen werden kann. Daher muss man vorher Casten. Entweder so wie du oben mit BYTE(...) (Wird abgerundet), oder eben mit round(...). Es ginge auch noch trunc(...) (auch hier wird abgerundet/der Nachkommaanteil einfach abgeschnitten).
Oder man verzichtet GANZ auf Casts und macht's mit dem "div"-Operator:
NormalizedV := roiHistogram[idx] * (MAXBYTE div roiHistogramMax); Diese Zeile sollte ebenfalls gültig sein, allerdings wird eben nur abgerundet.



Hoffe, das war verständlich...


gruss,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  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 04:54 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