AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Aus Extended wird immer Integer (oder Delphi rundet selbstständig)

Aus Extended wird immer Integer (oder Delphi rundet selbstständig)

Ein Thema von Captnemo · begonnen am 12. Okt 2015 · letzter Beitrag vom 12. Okt 2015
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#1

Aus Extended wird immer Integer (oder Delphi rundet selbstständig)

  Alt 12. Okt 2015, 15:04
Hi,

ich habe hier ein "merkwürdiges" Problem.
In folgernder Routine sollen die Min- und die Max-Werte einer Liste bestimmt werden:
Delphi-Quellcode:
    self.FMax:=self[0].FYR;
    self.FMin:=self[0].FYR;
    for I := 0 to self.Count-1 do
    begin
      if self[i].FYR > self.FMax then
        self.FMax:=self[i].FYR;
      if self[i].FYR < self.FMin then
        Self.FMin:=self[i].FYR;
    end;
Die Deklaration der Variablen sieht so aus:
Delphi-Quellcode:
    FYR: Extended;
    FMax: Extended;
    FMin: Extended;
Jetzt sollte man annehmen, dass Extended auch Extended bleibt, und auch die Kommastellen mit übertragen werden.
Doch bereit nach der ersten Zeile wo in FYR 5,12343223 sind wir in FMin nur 5 abgelegt.
Ist 4,7734673 in FYR wird ebenfalls in FMin eine 5 abgelegt.

Logischerweise schlagen alle weiteren Vergleiche fehl, das in diesem speziellen Fall in FYR nur Werte von 4,75 bis 5,25 enthalten sein können.

Erklären kann ich es mir nicht. Ich brüte nun schon lange drauf rum, aber es erschließ sich mir nicht, wo der Fehler liegen sollte.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#2

AW: Aus Extended wird immer Integer (oder Delphi rundet selbstständig)

  Alt 12. Okt 2015, 15:13
Um das von vornherein auszuschließen: Bist du dir ganz sicher, dass nicht deine Debugausgabe gerundet ist oder das in FYR wirklich nicht 5 steht?

Abgesehen davon würde die Funktion spektakulär fehlschlagen, wenn die Liste leer ist.

Geändert von BUG (12. Okt 2015 um 15:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#3

AW: Aus Extended wird immer Integer (oder Delphi rundet selbstständig)

  Alt 12. Okt 2015, 15:44
Also, wenn die Routine durch gelaufen wurde ist in FMin und Fmax immer glatt 5.

Und wenn ich im debugmodus durchsteppe, dann hab ich bei FYRauch immer nachvollziehbar Extendedwerte immer <> 5;
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo

Geändert von Captnemo (12. Okt 2015 um 15:47 Uhr)
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#4

AW: Aus Extended wird immer Integer (oder Delphi rundet selbstständig)

  Alt 12. Okt 2015, 15:52
Wahrscheinlich bin ich zu alt für diesen Kram, aber was genau ist denn self? Es muß array-Eigenschaften haben wg self[i], self[0]. Andererseits scheints auch ein Record zu sein wg. self.FMax.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Aus Extended wird immer Integer (oder Delphi rundet selbstständig)

  Alt 12. Okt 2015, 15:59
Moment, damit ich es richtig verstehe:

In FYR sind Werte von >= 4.75 bis <= 5.25?
Diese Werte werden im Debugger wie erwartet angezeigt?

Woher weißt Du, das FMin und FMax nachher = 5 sind?

In dem Quelltext kann ich keine Ausgabe der Werte erkennen.

Zeig' uns doch bitte mal die Werteausgabe (eventuell liegt ja erst dort der "Hund" begraben).
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#6

AW: Aus Extended wird immer Integer (oder Delphi rundet selbstständig)

  Alt 12. Okt 2015, 16:00
Ich hab doch geschrieben, dass es sich um eine Liste handelt. Genau eine TobjektList.

Hat aber m.M.n. mit dem Problem nix zu tun.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Aus Extended wird immer Integer (oder Delphi rundet selbstständig)

  Alt 12. Okt 2015, 16:01
Datentypen sämtlicher Variablen? Vollständiges Beispielprogramm?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#8

AW: Aus Extended wird immer Integer (oder Delphi rundet selbstständig)

  Alt 12. Okt 2015, 16:08
Moment, damit ich es richtig verstehe:

In FYR sind Werte von >= 4.75 bis <= 5.25?
Diese Werte werden im Debugger wie erwartet angezeigt?

Woher weißt Du, das FMin und FMax nachher = 5 sind?

In dem Quelltext kann ich keine Ausgabe der Werte erkennen.

Zeig' uns doch bitte mal die Werteausgabe (eventuell liegt ja erst dort der "Hund" begraben).
ü

Das im FYR diese Werte stehen sehe ich ja im debugger. Genauso dass in FMin und FMax eben nur 5 steht. Auch die beider IF-Bedingungen liefert immer False, und deren Anwesungen werden auch nie angesprungen.

Eine Ausgeberoutine in der Form gibt es im Objekt nicht, aber es wird später eine Skala aus den beiden Werten FMin und FMax erzeugt, die "unsinnigerweise" von 5 bis 5 geht.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#9

AW: Aus Extended wird immer Integer (oder Delphi rundet selbstständig)

  Alt 12. Okt 2015, 16:17
Was passiert bei diesen Zuweisungen?
Delphi-Quellcode:
self.FMax:=4.1;
self.FMin:=5.249;
Ergebnis wie erwartet oder auch beides Mal 5?

und bitte
Datentypen sämtlicher Variablen? Vollständiges Beispielprogramm?
Aus dem bisher Vorhandenen lässt sich nicht erkennen, wo das Problem liegen könnte.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Aus Extended wird immer Integer (oder Delphi rundet selbstständig)

  Alt 12. Okt 2015, 16:23
Hattest Du FMin und FMax zunächst mal als Integer angelegt und später das Projekt verschoben?
Vielleicht greifen Linker und Debugger auf unterschiedliche Versionen zurück?
Notfalls mal Projektkopien und dcu´s löschen/verschieben und Projekt bereinigen.

Aber vermutlich kannst Du Dir schon mal eine Wand suchen, gegen die Du später den Kopf hauen kannst.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz