AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi "-NAN"? Variablenzuweisung funktioniert nicht?!
Thema durchsuchen
Ansicht
Themen-Optionen

"-NAN"? Variablenzuweisung funktioniert nicht?!

Ein Thema von Sven M. · begonnen am 1. Jul 2009 · letzter Beitrag vom 1. Jul 2009
Antwort Antwort
Sven M.

Registriert seit: 21. Okt 2006
Ort: Halle/Saale
106 Beiträge
 
Delphi 5 Enterprise
 
#1

"-NAN"? Variablenzuweisung funktioniert nicht?!

  Alt 1. Jul 2009, 11:43
Hallo zusammen,
entweder steh' ich gerade auf dem Schlauch oder Delphi spinnt. Wahrscheinlich ist ersteres der Fall...

Ich habe folgende Funktion:
Delphi-Quellcode:
function FindNextPoint(Graph: TLineSeries): integer;
var i: integer;
    XValue, YValue: double;

    t1, t2: double; //Debugging-Zwecke
begin
  i:=0;
  Graph.GetCursorValues(XValue, YValue);

  ShowMessage(FloatToStr(Graph.XValue[i]));//korrekte Anzeige "-100"
  t1:=Graph.XValue[i];//-NAN
  t2:=abs(Graph.XValue[i+1]);//sinnlose Potenz

  while (i<Graph.Count-1) and
    (abs(Graph.XValue[i]-XValue) > abs(Graph.XValue[i+1])-XValue) do
  begin
    inc(i);
  end;
  result:=i;
end;
Diese soll mir den am nächsten am Cursor gelegenen Punkt einer TLineSeries zurückgeben.
Problem ist folgendes: Für positive X-Werte funktioniert das alles ganz gut. Bei Rückgabewerten, die eigentlich negativ sein müssten, liefert das Ding jedoch immer nur 0.
Will ich mir die Werte von t1 und t2 im Debugger anschauen, wird mir für t1 "-NAN" und für t2 ein völlig sinnloser Wert (*10^-25 o.ä.) angezeigt. Dazu muss ich sagen, dass die betreffende Series eine quadratische Funktion ist mit einem Definitionsbereich -100...100. D.h. Graph.XValue[0] müsste also -100 ergeben, was in der ShowMessage ja auch korrekt getan wird.

Habt ihr irgendeine Idee, woran das liegen könnte und wie ich mein Problem beheben kann?

Besten Dank,
Sven
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#2

Re: "-NAN"? Variablenzuweisung funktioniert nicht?

  Alt 1. Jul 2009, 11:52
Wie/wo zeigt der Debugger diese "komischen" Werte an?

Und ist das der komplette Code?

Wird t1 und t2 wirklich nicht mehr irgendwo verwendet?
Wenn nein, dann mach mal was ganz "Sinnloses" und verwende t1 und t2 mal,
denn sonst werden diese Variablen vom Compiler weroptimiert und der Inhalt ist nicht wirklich verfügbar
Delphi-Quellcode:
**result:=i;
  if t1 = t2 then ;
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Sven M.

Registriert seit: 21. Okt 2006
Ort: Halle/Saale
106 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: "-NAN"? Variablenzuweisung funktioniert nicht?

  Alt 1. Jul 2009, 12:00
Danke für deine Antwort himitsu. Zumindest kann ich nun den Wert der Variablen auslesen - scheinen tatsächlich wegoptimiert worden zu sein...
t1 und t2 wurden nämlich auch nirgendwo anders verwendet.

Die Funktion macht zwar immer noch nicht, was ich will (bzgl. negative X-Werte), aber das bekomme ich auch noch hin...
(Wenn jemand dahingehend noch Hinweise hat, her damit!)


Danke himitsu!
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

Re: "-NAN"? Variablenzuweisung funktioniert nicht?

  Alt 1. Jul 2009, 12:02
Zitat von himitsu:
Wird t1 und t2 wirklich nicht mehr irgendwo verwendet?
Wenn nein, dann mach mal was ganz "Sinnloses" und verwende t1 und t2 mal,
denn sonst werden diese Variablen vom Compiler weroptimiert und der Inhalt ist nicht wirklich verfügbar
Oder in den Compileroptionen (oder per Compilerschalter) die Optimierung ausschalten.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.347 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: "-NAN"? Variablenzuweisung funktioniert nicht?

  Alt 1. Jul 2009, 12:07
Setze doch einfach einen Haltepunkt, markiere so etwas wie Graph.XValue[i] und drücke Strg + F7. Dann siehst du den Wert. Du kannst auch mit rechts draufklicken und unter Debug auf Auswerten.
Dann kannst du den Wert auch überwachen lassen und schrittweise durch den Quelltext gehen. Links siehst du dann die Liste der überwachten Ausdrücke. So kannst du relativ einfach sehen was passiert.

(Bei D7 und früher geht es ähnlich, nur etwas unübersichtlicher.)
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  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 19:33 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