AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Welche Zahl ist größer 50, kleiner 60 und gerundet 0?
Thema durchsuchen
Ansicht
Themen-Optionen

Welche Zahl ist größer 50, kleiner 60 und gerundet 0?

Ein Thema von Angel4585 · begonnen am 11. Jul 2006 · letzter Beitrag vom 12. Jul 2006
Antwort Antwort
Seite 1 von 2  1 2      
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

Welche Zahl ist größer 50, kleiner 60 und gerundet 0?

  Alt 11. Jul 2006, 16:10
Hallo,

ich hab folgenden Codeabschnitt in meinem Quelltext:

Delphi-Quellcode:
function TForm1.Test : string;
var xtest : real;
begin
with MyZQuery do
  try
    sql.Text:='SELECT * FROM Tabelle';
    Active:=True;
    if (FieldByName(cfGesamtpreis).AsFloat>50.0)and(FieldByName(cfGesamtpreis).AsFloat <60.0) then
      xtest:=FieldByName(cfGesamtpreis).AsFloat;//in xtest wird hier dauernd 5,2598911262e-307 geschrieben
    Result:=FieldByName(cfID).AsString;
  finally
    Active:=False;
    end;
end;
Also.. kann mir jemand sagen was da los ist?

Danke

Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von rwachtel
rwachtel

Registriert seit: 26. Aug 2004
Ort: Köln
530 Beiträge
 
RAD-Studio 2010 Pro
 
#2

Re: Welche Zahl ist größer 50, kleiner 60 und gerundet 0?

  Alt 11. Jul 2006, 16:26
Woher weisst Du, wass in xtest geschrieben wird? So wie ich das sehe, wird xtest nicht weiter verwendet.
Robert Wachtel
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Welche Zahl ist größer 50, kleiner 60 und gerundet 0?

  Alt 11. Jul 2006, 16:29
die Variable wird vom Compiler wegoptimiert

Delphi-Quellcode:
function TForm1.Test : string;
var xtest : real;
begin
with MyZQuery do
  try
    sql.Text:='SELECT * FROM Tabelle';
    Active:=True;
    if (FieldByName(cfGesamtpreis).AsFloat>50.0)and(FieldByName(cfGesamtpreis).AsFloat <60.0) then
      xtest:=FieldByName(cfGesamtpreis).AsFloat;//in xtest wird hier dauernd 5,2598911262e-307 geschrieben
    Result:=FieldByName(cfID).AsString;
  finally
    Active:=False;
    end;
if xtest = 0 then ; // damit sollte es gehn
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
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Welche Zahl ist größer 50, kleiner 60 und gerundet 0?

  Alt 11. Jul 2006, 16:39
Selbst wenn xtest nicht wegoptimiiert würde, kann die Variable immer noch einen unbestimmten Inhalt haben. Es könnte ja durchaus passieren, dass die If-Bedingung nicht erfüllt ist.
Peter
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Welche Zahl ist größer 50, kleiner 60 und gerundet 0?

  Alt 11. Jul 2006, 16:54
ich hab da en Haltepunkt rein gemacht... auf die zuweisung..
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Welche Zahl ist größer 50, kleiner 60 und gerundet 0?

  Alt 11. Jul 2006, 16:56
Du musst dann aber auch noch einen Schritt weiter gehen. Ansonsten ist die Zuweisung noch nicht erfolgt und die Variable ist noch nicht gefüllt. Hat also ihren nicht-initialisierten Zustand.
Oder setze mal den Haltepunkt nach der Zuweisung. (Bei der Result-Zuweisung)
Peter
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Welche Zahl ist größer 50, kleiner 60 und gerundet 0?

  Alt 11. Jul 2006, 17:07
wenn ich ihn danach setze besteht die möglichkeit das er nich reingegangen ist. so schalu das ich en schritt weiter muss war ich auch.. ich schu morgen mal was passiert wenn ich die Variable danach nochmal verwende...
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Welche Zahl ist größer 50, kleiner 60 und gerundet 0?

  Alt 11. Jul 2006, 17:07
mach also mal den Haltepunkt auf Result:=FieldByName(cfID).AsString; und normaler Weise sollte Delphi was sagen, wegen der nichtgenutzten Variable ... also versuch es auch mal mit urgendwas, was diese Variable hinterher noch verwendet (z.B. mein IF).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Welche Zahl ist größer 50, kleiner 60 und gerundet 0?

  Alt 12. Jul 2006, 08:25
ok ich hab die Variable danach nochmal verwendet und jetzt funt es, scheint wirklich "nur" wegoptimiert geworden zu sein. Aber könnte man das nicht auch wenigstens dazuschreiben? Da steht zwar das der auf xtest zugewiesene Wert nie verwendet wird, aber adraus kann ich doch nicht darauf schliessen das der wegoptimiert wurde
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#10

Re: Welche Zahl ist größer 50, kleiner 60 und gerundet 0?

  Alt 12. Jul 2006, 12:00
Tja das ist genau der Grund, warum die Optimization grundsätzlich ausgeschaltet werden sollte. Der Compiler ist auch ohne Optimierung schnell genug und wenn sie an ist, macht er nur Blödsinn, wie z.B.: durchaus sinnvollen Code wegzuoptimieren oder Schindluder mit dem CallStack zu treiben.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:06 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