![]() |
Integer <-> TCaption kompatibel machen
Hi @all
Ich habe nur eine kleine Frage. Ich habe schon längere Zeit lang nichts mehr mit Delphi gemacht, nun werd ich dies aber (leider) wieder regelmäßig müssen. Ich stehe gerade vor einem kleinen Problem: Wie kann ich einen TCaption-Inhalt "Integer-fähig" machen? ->soll heißen: ich habe eine TEdit-Feld in welches Zahlen eingetragen werden sollen, die dann mit klick auf einen Button als interval-Wert eines Times gesetzt werden. So gehts ja leider nicht (hab mal die Variablen umbenannt, damits übersichtlicher ist):
Delphi-Quellcode:
THX für eure Hilfe :)
procedure TForm1.ButtonClick(Sender: TObject);
var inhalt: integer; begin inhalt := Edit1.text; Timer1.Interval := inhalt; end; Gruß Sturmi |
Re: Integer <-> TCaption kompatibel machen
StrToInt, StrToIntDef und TryStrToInt sind deine Freunde ;-) Näheres verrät dir bestimmt die nette OH :)
|
Re: Integer <-> TCaption kompatibel machen
Das ist ganz einfach:
Delphi-Quellcode:
Vorher evtl noch prüfen, ob in dem TEdit auch wirklich was eingegeben wurde
inhalt := StrToInt (Edit1.text);
Delphi-Quellcode:
if Edit1.Text <> '' then
begin ... ... end; |
Re: Integer <-> TCaption kompatibel machen
ups, stimmt ja ^---^° vielen Dank!
Also für alle weiteren Suchenden (die evtl. genau das gleiche Prob. haben wie ich) so funktionierts:
Delphi-Quellcode:
EDIT: @RavenIV gute Idee mit dem Prüfen, THX auch dir ^^
procedure TForm1.ButtonClick(Sender: TObject);
var inhalt: integer; begin inhalt := StrToInt(Edit1.text); Timer1.Interval := inhalt; end; EDIT2: Wobei gibts noch eine möglichkeit nur Zahlen in dem Edit-Feld zuzulassen? Wenn man Buchstaben eingibt bekommt das dem Prog. nicht besonders gut XD Antwort: k, google Hilft:
Delphi-Quellcode:
function IsStringInteger(const AString: String): Boolean;
begin Result:=StrToIntDef(AString,0)=StrToIntDef(AString,1); end; |
DP-Maintenance
Dieses Thema wurde von "Daniel" von "Fragen / Anregungen zur DP" nach "Sonstige Fragen zu Delphi" verschoben.
|
Re: Integer <-> TCaption kompatibel machen
Wie du in deinem Edit-Feld nur Zahlen zulassen kannst, wird hier imForum an einigen Stellen beschrieben und grade auch Diskutiert.
Wenn du
Delphi-Quellcode:
verwendest, werden eventuell auftretende Fehler abgefangen.
try
inhalt := StrToInt(Edit1.Text); except ShowMessage('Fehler'); end; try-except-end Fangen Fehler ab, und du kannst eine eigene Fehler-behandlung in dein Prgramm einbauen. Wenn dein Programm bei Fehlern weiterlaufen soll, musst du unter "Tools -> Debugger-Optionen ->Sprach-Exception -> Bei Delphi-Exceptions stoppen" das Häckchen entfernen! |
Re: Integer <-> TCaption kompatibel machen
Das könnte man im Keypress-Event des Edits machen, zB mit:
Delphi-Quellcode:
Dann hast du aber immer noch das Copy&Paste Problem. Deswegen mein Hinweis auf TryStrToInt und StrToIntDef. TryStrToInt geibt false zurück, falls ein Wert nicht umgewandelt werden konnte. StrToIntDef hingegen gibt einen Vorgabewert zurück, falls die Umwandlung fehlschlägt.
if Not(Key in ['0'..'9'] then
abort; //Wegen deinem Edit: Die Funktion ist etwas umständlich, da sie den übergegebenen Wert zweimal per StrToIntDef in einen String umwandelt. Bei der ersten Umwandlung gibts beim Fehlschlag eine 0 beim zweiten eine 1. Durch einen Vergleich dieser beiden Werte ergibt sich der Rückgabewert der Funktion. Schöner wäre imho:
Delphi-Quellcode:
procedure TForm1.ButtonClick(Sender: TObject);
var inhalt: integer; begin if TryStrToInt(Edit1.text, inhalt) then Timer1.Interval := inhalt else showMessage('Bitte geben Sie eine gültige Ganzzahl ein!'); end; |
Re: Integer <-> TCaption kompatibel machen
Zitat:
Bei Typ-Umwandlung (Str -> Int) kann man das sehr gut abfangen ohne das try..except zu vergewaltigen. Siehe mein Beitrag weiter oben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 Uhr. |
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 by Thomas Breitkreuz