Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zahleneingabe erzwingen (https://www.delphipraxis.net/32191-zahleneingabe-erzwingen.html)

skaven 20. Okt 2004 09:29


Zahleneingabe erzwingen
 
Hi,

ich schreibe ein Programm bei der ich eine Temperatureingabe benötige.

Diese TempEingabe soll vom Benutzer in einem Edit Feld eingegeben werden.

Dabei soll der Zahlenbereich jedoch nur von -90.0 bis +180.0 variieren, Werte außerhalb des Berreichs sollen ignoriert werden.

Wenn man z.b. 180 eingibt, soll ein Wert im Format von 0180.0 an eine Variable weitergegeben werden, da ich einen 4 stelligen Code benötige.

Steve 20. Okt 2004 09:34

Re: Zahleneingabe erzwingen
 
Hi,

zum Thema Zahleneingabe erzwingen haste ja schonmal in Deinem anderen Thread ne Antwort bekommen..
Und zum Formatieren von Variablen schau Dir mal die Funktion Delphi-Referenz durchsuchenFormat() an :)

Gruß
Stephan :dance:

skaven 20. Okt 2004 10:47

Re: Zahleneingabe erzwingen
 
Ok, das geht mit Spin Edit, aber wie mache ich das denn wenn ich kein SpinEdit benutzen will.

Also eine Zahlengrenze von -90 bis +180 einzuhalten?

ibp 20. Okt 2004 10:54

Re: Zahleneingabe erzwingen
 
Code:
if zahl im bereich dann weiter sonst neue eingabe

Steve 20. Okt 2004 10:57

Re: Zahleneingabe erzwingen
 
..Und das ganze z.B. ins OnExit des Editfelds:
Delphi-Quellcode:
IF Edit1.Text='' THEN Edit1.Text := '0';
IF StrToInt(Edit1.Text) < UntereGrenze THEN Edit1.Text := IntToStr(UntereGrenze);
IF StrToInt(Edit1.Text) > ObereGrenze THEN Edit1.Text := IntToStr(ObereGrenze);
oder ähnlich.. nur so als Denkanstoß :)
Oder andere Eingabe erzwingen statt obere Grenze automatisch setzen... (vgl. ibp's Posting & Delphi-Referenz durchsuchenSetFocus)

Gruß
Stephan :dance:

ibp 20. Okt 2004 11:01

Re: Zahleneingabe erzwingen
 
ich würde aber besser trystrtotint benutzen, da hier gleich eine fehlerabfrage implementiert ist!

bmg4ever 20. Okt 2004 11:05

Re: Zahleneingabe erzwingen
 
Zitat:

Zitat von ibp
Code:
if zahl im bereich dann weiter sonst neue eingabe

hmmm.... läuft nicht :lol:

also ich hab das mal für nene taschenrechner so gemacht

Delphi-Quellcode:
const real = ['0'..'9',',','.'];
begin
        i:=0;

        Rechenfeld.PasteFromClipboard;
        RechenfeldText := Rechenfeld.Text;
        Rechenfeld.Text := '';
        while i <= length(RechenfeldText) do
        begin
        while not (RechenfeldText[i] in real) do inc(i);
                if RechenfeldText[i] = '.' then RechenfeldText[i] := ',';
        Rechenfeld.Text := Rechenfeld.Text + RechenfeldText[i];
        inc(i);
        end;
       
end;
Rechenfeld ist ein EDitfeld und Rechenfeldtext(ohne punkt) eine string variable(ich weiß, dass dieser name die lesbarkeit erschwert)
das editfeld kann bei mir nicht frei editiert werden (nur über buttons), aber es ging darum auch einfügen aus der zwischenablage zu ermöglichen. das dingen da oben filtert halt alle zahlen aus einem string raus
du brauchst dann nach einem system dieser art den string nur noch in einen integer oder float oder so wert umzuwandeln und dann überprüfst du einfach, ob der wert deine grenzen über- oder unterschreitet und setzt ihn dann automatisch auf den grenzwert oder gibts dem user eine fehlermeldung raus

[EDIT] mir fällt grad auf, dass man für die umschließende while schleife auch locker ne for-schleife nehmen und mit continue arbeiten kann bzw vielleicht wäre das sogar besser.[/EDIT]

skaven 20. Okt 2004 12:06

Re: Zahleneingabe erzwingen
 
Hat soweit geklappt, DANKE euch.

Schließe hiermit den thread


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