Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Formatfunktion würfelt die Datentypen wahllos zusammen (https://www.delphipraxis.net/108245-formatfunktion-wuerfelt-die-datentypen-wahllos-zusammen.html)

grenzgaenger 9. Feb 2008 18:52

Re: Format! Bin ich blöd?
 
Zitat:

Zitat von inherited
Von welchem Typ sind die beiden Variablen?
@taaktaak: Sollte eigentlich auch ohne diese Klammern funktionieren.

Delphi-Quellcode:
ePercent.Text := format('%.3f', [eHigh.value     //extended
                                 / items[0].Price //currency
                                 * 100]) + '%';
mal davon abgesehen, dürften hier nur die kommastellen verschoben sein...


Zitat:

Zitat von taaktaak
Bist du denn sicher, dass die beiden Variablen auch den von dir erwarteten Inhalt haben?

yep, bin ich. da ich da mit dem debugger drauf stand... aber was rauskommt ist einfach ein quatsch von einer %-zahl...

[edit=SirThornberry]Beiträge zusammengeführt - Mfg, SirThornberry[/edit]

SirThornberry 9. Feb 2008 18:55

Re: Format! Bin ich blöd?
 
Könntest du dem Beitrag bitte einen aussagekräftigen Namen geben? "Format" sagt so gut wie nicht aus worum es bei deinem Problem geht.

taaktaak 9. Feb 2008 18:58

Re: Format! Bin ich blöd?
 
Tja, ich habe das jetzt auch mal "nachgestellt"...

Delphi-Quellcode:
var a,b : Integer;

a:=600;
b:=400;
showmessage(format('%0.3f',[a/b*100])+'%');
Bei mir zeigt er 150,000% an - so wie es sein soll

grenzgaenger 9. Feb 2008 19:07

Re: Format! Bin ich blöd?
 
Zitat:

Zitat von taaktaak
Tja, ich habe das jetzt auch mal "nachgestellt"...

Delphi-Quellcode:
var a,b : Integer;

a:=600;
b:=400;
showmessage(format('%0.3f',[a/b*100])+'%');
Bei mir zeigt er 150,000% an - so wie es sein soll

theoretisch, sollt es so funktionieren, wie bei dir ... nur schafft das mein delphi nich...

daher hab ich jetzt eine funktion erstellt ...

Delphi-Quellcode:
 function _percent(value, base: double): string;
 begin
   result := format('%.3f%%',[value / base * 100]);
 end;
wenn ich dieser die variablen übergebe, funzt es... :shock: :shock: :shock:

tja, was soll man dazu noch sagen... :drunken: :drunken: :drunken:

alzaimar 9. Feb 2008 20:08

Re: Format! Bin ich blöd?
 
Zitat:

Zitat von grenzgaenger
theoretisch, sollt es so funktionieren, wie bei dir ... nur schafft das mein delphi nich...

Du weisst, das das Problem nicht Delphi ist, sondern davor sitzt. :zwinker:

Hawkeye219 9. Feb 2008 20:27

Re: Formatfunktion würfelt die Datentypen wahllos zusammen
 
Hallo,

meiner Meinung nach ist in diesem Fall der Delphi-Compiler das Problem. Der wird nämlich durch die MixedMode-Operation (Currency und Extended) innerhalb der Format-Funktion offenbar so irritiert, dass er für den Ausdruck sowohl einen falschen Datentyp ermittelt als auch einen fehlerhaften Code erzeugt. Eine kleine Anpassung und Umstellung der Operanden liefert das erwartete Resultat:

Delphi-Quellcode:
ePercent.Text := format('%.3f', [(100.0 / items[0].Price * eHigh.value)]) + '%';
Auch die Berechnung außerhalb der Format-Funktion liefert mit dem Original-Ausdruck das richtige Resultat.

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:31 Uhr.
Seite 2 von 2     12   

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