Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi addieren (https://www.delphipraxis.net/68208-addieren.html)

Pump3r 26. Apr 2006 11:07


addieren
 
Hallo, kann mir vielleicht jemand sagen, wie ich zu 1,50 + 0,10 dazu zähle?

danke, gruß pump :angel:

chrisw 26. Apr 2006 11:09

Re: addieren
 
Delphi-Quellcode:
var a : real;
.....
begin
  .....
  a := 1.5 +0.1;
  showmessage(FloatToStr(a)); //ergibt dann 1,6
 ......
end;

Oder war das ein Scherz ?

Matze 26. Apr 2006 11:10

Re: addieren
 
Hi

Äh, wie meinst du das? Gleitkommazahlen (z.B. Typ: Double) kann man doch normal addieren (1.50 + 0.10), oder habe ich dich jetzt falsch verstanden? :gruebel:


Edit: Red box, where have you been? ^^

Pump3r 26. Apr 2006 11:12

Re: addieren
 
und wie kann ich zb:

q : real;
i : string;
i := ini2.ReadString('handelspreis','1','');

also ist i bei mir: 1.5

jetzt würd ich gerne zu diesen 1.5, 0.1 dazu zählen.

aber: q := i +0.1;
geht nicht.


weiß jemand ne lösung?

danke, pump :angel:

Flare 26. Apr 2006 13:30

Re: addieren
 
Hi Pump3r!

Es geht nicht, weil i bei dir ein String ist! Du müsstest also den String auswerten und in einer Gleitkommazahl speichern.
Delphi-Quellcode:
var
  q,p : real;
  code: integer;
  i : string;
begin
  i := ini2.ReadString('handelspreis','1','');
  Val(i, p, code);
  if code=0 then
  begin
    q := p + 0.1;
    ShowMessage('Der Handelspreis ist '+floattostr(q));
  end;
end;

Flare

//Edit: Falsche Parameter richtig getauscht.

jim_raynor 26. Apr 2006 13:35

Re: addieren
 
Oder auch StrToFloat nutzen, wobei da eventuell eine Exception auftritt wenn im String keine gültige Gleitkommazahl steht.

Pump3r 26. Apr 2006 13:43

Re: addieren
 
flare ich bekomm jetzt eine meldung: inkompatible typen.

Matze 26. Apr 2006 13:47

Re: addieren
 
Zitat:

Zitat von Pump3r
flare ich bekomm jetzt eine meldung: inkompatible typen.

Dann tausche mal i und p. Sieh dir doch an, was für Parameter Val erwartet: Delphi-Referenz durchsuchenVal. Delphi zeigt das doch auch nett als Hint an.

ichbins 26. Apr 2006 13:50

Re: addieren
 
Wandle den String in der Ini einfach mit Strtofloat in eine Gleitkommazahl um:

Delphi-Quellcode:
var
  r:real;
  i:string;
begin
  i:=readstringetc...
 
  r:=strtofloat(i);
  r:=r+0.01;
 
  label1.caption:=floattostr(r);
ausserdem bekommt man Augenkrebs von deinem Programmierstil :cyclops: ;)
Verwende NIE den Variablennamen i für einen String !!!
i heisst integer, c heisst char und s heisst string, diese Namen sind absolut tabu für andere Typen :!:

dieses I als Stringname schränkt die Lesbarkeit des Codes brutal ein. Immer wenn ich ein i sehe weiss ich sofort dass es sich um eine integer handelt.

Flare 26. Apr 2006 13:51

Re: addieren
 
Zitat:

Zitat von Pump3r
flare ich bekomm jetzt eine meldung: inkompatible typen.

Sorry, Parameter vertauscht...aber Matze hats ja schon erklärt :thumb:


Flare

Pump3r 26. Apr 2006 13:53

Re: addieren
 
so jetzt hab ichs auch kapiert :)

tausend dank an euch alle!!!



gruß pump :angel:

Pump3r 26. Apr 2006 14:31

Re: addieren
 
achja gibt es eine möglichkeit, zb: 1.4 in einem währungsformat anzuzeigen?
-> 1.4 -> 1.40€ ... also das euro zeichen ist ja net das problem aber die 0.
wenn ich an 1.4 eine 0 ran häng, dann ist es 1.40.
wenn ich das aber bei 2 mach, dann ist es 20.
das ist etwas schlecht :)



gruß pump :angel:

Matze 26. Apr 2006 14:38

Re: addieren
 
Schau dir mal Delphi-Referenz durchsuchenFormat an.

Pump3r 26. Apr 2006 15:34

Re: addieren
 
so hab mal ein bisschen herumprobiert.

Edit9.Text := FloatToStrF(ini2.ReadString('handelspreis','1','') ,ffCurrency,8,2);


kleines problem:

das was es aus der ini ausliest, ist ein string: 1.24
wenn ich aber 1.24 direkt in die zeile schreibt klappt es ohne probleme, er hat nur probleme mit dem lesen wie es aussieht. hmm?

aber so wie ich FloatToStrF verstanden hab muss da ein string hin ...

ManuMF 26. Apr 2006 15:51

Re: addieren
 
Hallo,

beim direkten Reinschreiben muss das Zeichen ein Punkt sein (in englischer Sprache so üblich). Wenn du es von einem String umwandelst, muss es ein Komma sein. Mach einfach ein Delphi-Referenz durchsuchenStringReplace.

P.S.: Aber warum willst du es umwandeln? Im Code in deinem letzten Beitrag arbeitest du nur mit Strings, da würde ein "normales" Format reichen. Aber lies doch besser mit ini.ReadFloat aus.

Gruß,
ManuMF

Pump3r 27. Apr 2006 09:39

Re: addieren
 
Delphi-Quellcode:
Edit9.Text := FloatToStrF(StringReplace(ini2.ReadString('handelspreis','1',''),'.',',', [rfReplaceAll, rfIgnoreCase]),ffCurrency,8,2);
das will nicht so wie ich:

Erzeugen
[Fehler] main.pas(145): Es gibt keine überladene Version von 'FloatToStrF', die man mit diesen Argumenten aufrufen kann
[Fataler Fehler] BBoerse.dpr(5): Verwendete Unit 'main.pas' kann nicht compiliert werden




ich glaub ich bin zu dumm :p


kann mir wer meinen fehler sagen?

danke, pump :angel:

Klaus01 27. Apr 2006 09:44

Re: addieren
 
Edit9.Text := FloatToStrF(StringReplace(ini2.ReadString('handelspreis','1',' ')'.',',', [rfReplaceAll, rfIgnoreCase]),ffCurrency,8,2);

Du versuchst mit floatTostrF einen String in einen String umzuformen.
FloatToStrF erwartet aber so weit ich das weiß ein FloatWert als Parameter.

Grüße
Klaus

Matze 27. Apr 2006 09:50

Re: addieren
 
@Christian: Delphi hilft dir wirklich wo es geht, es meldet dir doch als Hint folgendes:

Zitat:

function FloatToStrF(Value: Extended, Format: TFloatFormat, Precision: Integer, Digits: Integer): string;

function FloatToStrF(Value: Extended, Format: TFloatFormat, Precision: Integer, Digits: Integer, var FormatSettings: TFormatSettings): string;
Dann guck dir einfach die Parameter an, dann weißt du sofort, was los ist. :roll:

Pump3r 27. Apr 2006 09:51

Re: addieren
 
okay, also brauch ich meine zahl als float wert nicht als string so wie er in der ini steht.
nun, aber readfloat geht nicht und den string auslesen und dann strtofloat will auch net gehen ...

ManuMF 27. Apr 2006 19:37

Re: addieren
 
Hallo,

was heißt, ReadFloat geht nicht? Will es der Compiler nicht oder gibts beim Ausführen ein Problem?

Das muss gehen:
Delphi-Quellcode:
Edit9.Text := FloatToStrF(ini2.ReadFloat('handelspreis', '1', 0), ffCurrency, 8, 2);
Gruß,
ManuMF


Alle Zeitangaben in WEZ +1. Es ist jetzt 05: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