Delphi-PRAXiS
Seite 2 von 3     12 3      

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 Überprüfen, ob Variable einem gewissen Typ entspricht (https://www.delphipraxis.net/92520-ueberpruefen-ob-variable-einem-gewissen-typ-entspricht.html)

MarquiseDeSade 21. Mai 2007 17:49

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
Danke für eure zahlreichen Antworten. Ich werde gleich mal ein bissl rumprobieren. Die Eingabe ist zu 100 % über Buttons geregelt. Der Taschenrechner hat das selbe Layout, wie der Standartrechner von Windows...

Kannst du mal die Anwendung von
Delphi-Quellcode:
TryStrToFloat
an einem Beispiel zeigen ?

Khabarakh 21. Mai 2007 17:50

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
Zitat:

Zitat von Apollonius
Du versuchst einfach, die Benutzereingabe mit TryStrToFloat in einen Float umzuwandeln.

Wie stellst du dir die praktische Umsetzung vor? Das Programm kann dem User wohl schlecht auf die Fingerchen hauen, sobald dieser "3," eingibt.
Bei Fließkommazahlen ist eine sofortige Validierung und entsprechende Fehlermeldung/Anpassung einfach unmöglich, weshalb ich sie vollständig auf den Zeitpunkt nach der Eingabe (Fokusverlust, Button-Klick, ...) verlagern würde (dann würde ich wirklich TryStrToFloat empfehlen ;) ).

Apollonius 21. Mai 2007 17:52

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
Hm. Hast recht. Aber wenn die Überprüfung wirklich erst im onExit oder ButtonClick ist, dann geht es (wie du gesagt hast).

MarquiseDeSade 21. Mai 2007 18:07

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
Dachte nicht, dass dieses Thema so unterschiedliche Umsetzungsvarianten zur Verfügung stellt :lol:

Da ich aber erst ca. 3 wochen Delphierfahrung habe, würde ich mich über ein konkretes Beispiel mit der
Delphi-Quellcode:
TryStrToFloat-Anweisung
freuen....

Apollonius 21. Mai 2007 18:12

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
Delphi-Quellcode:
procedure TForm1.EingabePruefen;
var h:float;
begin
if not TryStrToFloat(edit1.text,h) then
 begin
  showmessage('Sie Schuft! Geben Sie gefälligst eine gültige Fließkommazahl ein!');
  edit1.text:='';
 end;
end;
Der Text der MessageBox ist natürlich nach Belieben :-D

MarquiseDeSade 21. Mai 2007 18:30

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
So sieht es bei mir im Code aus:

Delphi-Quellcode:
procedure TForm1.Button15Click(Sender: TObject);
var
  h:double;

begin
  if TryStrToFloat(edit1.Text,h) then
  edit1.Text:=edit1.text+','
    else
      begin
        showmessage('Sie haben schon ein Kommata');
        edit1.Text:=' ';
      end;

end;
Nun zu meinem Problem. Es arbeitet alles einwandfrei, aber erst ab dem 3. Kommata :|

Beispiel:
Der User kann eingeben... 2,2,3, erst beim rotem Kommata erscheint die Fehlermeldung. Die Fehlermeldung soll aber schon beim 2. Komma erscheinen :angel2:

Apollonius 21. Mai 2007 18:35

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
Bei welcher Gelegenheit wird dieser Button denn geklickt? Um ein Komma zu setzen? Das funktioniert nicht, du darfst erst ganz am Ende, wenn die Zahl komplett sein soll, prüfen.

MarquiseDeSade 21. Mai 2007 18:54

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mh, ich glaube, ich muss ein bissl besser erklären...

Also, der Rechner besteht aus einem edit1, welches readOnly=true gesetzt ist. Die Eingabe der Zahlen erfolgt über 9 Buttons. Weitere 4 Buttons für die Rechenarten und 1 Button für das Kommata. Nun soll der Benutzer über die Buttons seine Zahlen eingeben. Wenn er dann z.B. die Zahl 1,2,3 eingibt(indem er auf den Kommata-Button drückt), soll schon beim 2. Kommata die Meldung erscheinen, das dies nicht möglich ist.

Wie kann ich das realisieren ?

Im Anhang ist ein ScreenShot vom Rechner...

Ah, und warum lässt sich die Farbe der Zahlen auf den Butten eigentlich nicht verändern ?

Apollonius 21. Mai 2007 19:19

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
Wenn du das so machen willst, ist es mit trystrtofloat nicht möglich, du solltest pos verwenden, um zu prüfen, ob schon ein Komma da ist. TryStrToFloat geht nur dann, wenn die Zahl schon vollständig vorliegt.

Die Einzahl von Kommata lautet übrigens Komma :???:

willnix 21. Mai 2007 19:48

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
Wenn du das rein mit Buttons machst kannst du natürlich auch einfach eine Zählvariable mit dem Komma Button koppeln.
Also wenn der Button geklickt wird erhöhst du die variable um 1 und prüfst bei jedem klick auf den button auch ob die variable schon erhöht wurde oder nicht.
Nur wenn nicht wird ein Komma geschrieben.
Wenn eine Operationstaste Taste wie +,-,*,\,sqrt usw... gedrückt wird setzt du die variable zurück.

Als Code könnte ich mir so etwas denken:
Delphi-Quellcode:
procedure TForm1.KommaButton1Click(Sender: TObject);
begin
  if KommaCount < 1 then
    begin
    Edit1.Text := Edit1.Text+',';
    inc(KommaCount);
    end
  else
    begin
    ShowMessage('Ähäm.. Nur EIN Komma!');
    end;
end;

procedure TForm1.OperationsButton2Click(Sender: TObject);
begin
KommaCount := 0;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
KommaCount := 0;
end;
Willnix


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 Uhr.
Seite 2 von 3     12 3      

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