Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi probleme mit formatierter Ausgabe in Edit.TXT (https://www.delphipraxis.net/137269-probleme-mit-formatierter-ausgabe-edit-txt.html)

tedbomi 17. Jul 2009 11:42


probleme mit formatierter Ausgabe in Edit.TXT
 
Hallo Leute,

ich habe eine kleine Maske zum Erfassen von Preis, Anzahl und einer zu berechnenden Summe eingerichtet.

Die Ausgabe soll nicht "12345,67", sonder so aussehen "12.345,67". Mit folgenden Zeilen habe ich mein Problem realisiert:


Delphi-Quellcode:
procedure TForm1.EinpreisKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
Var Preis,Summe: Real;
begin

  If Key=13 Then
    begin
      Preis:=StrToFloat(ol(EinPreis.Text));
      EinPreis.Text:=' '+FloatToStrF(Preis,ffNumber,8,2);
    end;

Nach ENTER soll also die Eingabe formatiert angezeigt werde. Es klappt bis 999,99 ganz gut, ab 1000.00 kommt eine Fehlermeldung:


------------------------
Im Projekt Lehrer.exe ist eine Exception der Klasse EConvertError mit der Meldung ''1.000,00' ist kein gültiger Gleitkommawert' aufgetreten.
------------------------

Was mache ich falsch, bzw. was habe ich übersehen?

Ich bin neugierig auf die, sicherlich einfachen, Hinweise

TedBomi

jfheins 17. Jul 2009 11:47

Re: probleme mit formatierter Ausgabe in Edit.TXT
 
Was macht die Funktion ol ?
Hast du den DecimalSeperator bzw. das Tausendertrennzeichen umgestellt ?

tedbomi 17. Jul 2009 14:10

Re: probleme mit formatierter Ausgabe in Edit.TXT
 
Hallo Jfheins,

Zitat:

Was macht die Funktion ol ?
ol ist eine kleine Funktion, die dafür sorgen soll, dass vor und hinter der Eingabe alle Leerzeichen beseitigt werden. Ob mit oder ohne diese Funktion, mein Problem bleibt das selbe.

Du sprichts den Tausenderpunkt an, könnte da das Problem drin stecken?

TedBomi

p80286 17. Jul 2009 15:35

Re: probleme mit formatierter Ausgabe in Edit.TXT
 
Zitat:

Zitat von tedbomi
Du sprichts den Tausenderpunkt an, könnte da das Problem drin stecken?

Das isses!
1000,00 wird akzepiert, bei 1.000,00 klallt's

Gruß
K-H

tedbomi 17. Jul 2009 19:56

Re: probleme mit formatierter Ausgabe in Edit.TXT
 
Hallo,

mein Problem habe ich folgendermaßen gelöst:

Delphi-Quellcode:
EinPreis.Text:=StringReplace(EinPreis.Text,'.','',[rfReplaceAll]);
Preis:=StrToFloat(EinPreis.Text;
Ich entferne einfach den Punkt aus meinem String und wandele ihn erst dann in das Float-Format um.

es ist eine Lösung, vielleicht gibt es eine einfachere?

schönes Wochenende

TedBomi

Luckie 17. Jul 2009 19:59

Re: probleme mit formatierter Ausgabe in Edit.TXT
 
Wenn du den tausendertrennpunkt mit eingibst, dann kommt es bei StrToFloat zu einer EConvertError Exception, weil es keine gültige Fleißkommazahl ist.

Und deine eigene Funktion kannst du dir sparen. Guck dier in der Hilfe mal die Funktion trim an.

Namenloser 17. Jul 2009 20:33

Re: probleme mit formatierter Ausgabe in Edit.TXT
 
Zitat:

Zitat von Luckie
Und deine eigene Funktion kannst du dir sparen. Guck dier in der Hilfe mal die Funktion trim an.

Du könntest aber das StringReplace darin kapseln.

Luckie 17. Jul 2009 20:42

Re: probleme mit formatierter Ausgabe in Edit.TXT
 
Würde ich nicht machen, weil es schelchter Stil ist, wenn eine Funktion mehrere Sachen macht.

Namenloser 17. Jul 2009 21:00

Re: probleme mit formatierter Ausgabe in Edit.TXT
 
Zitat:

Zitat von Luckie
Würde ich nicht machen, weil es schelchter Stil ist, wenn eine Funktion mehrere Sachen macht.

Wieso zwei Sachen? Sie macht eine Sache: Sie normalisiert die Eingabe.

Edit: Man sollte der Funktion dann aber nen aussagekräftigen Namen geben.

tedbomi 19. Jul 2009 11:44

Re: probleme mit formatierter Ausgabe in Edit.TXT
 
Hallo Luckie und NamenLozer,

Zitat:

Wenn du den Tausendertrennpunkt mit eingibst, dann kommt es bei StrToFloat zu einer EConvertError Exception, weil es keine gültige Fleißkommazahl ist.
Die Eingabe erfolgt nicht manuell, sondern durch FloatToStrF(Preis,ffNumber,8,2).

Zitat:

Und deine eigene Funktion kannst du dir sparen. Guck dir in der Hilfe mal die Funktion trim
Diese Funktion kannte ich noch nicht, funktioniert aber gut, meine ist damit tatsächlich überflüssig.

Zitat:

Man sollte der Funktion dann aber nen aussagekräftigen Namen geben
Ich fand den Namen eindeutig: ol() - ohne Leerzeichen

Vielen Dank für die Anregungen

TedBomi


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 Uhr.
Seite 1 von 2  1 2      

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