Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Integer <-> TCaption kompatibel machen (https://www.delphipraxis.net/76073-integer-tcaption-kompatibel-machen.html)

Sturmrider 29. Aug 2006 15:35


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:
procedure TForm1.ButtonClick(Sender: TObject);
var inhalt: integer;
begin
 inhalt := Edit1.text;
 Timer1.Interval := inhalt;
end;
THX für eure Hilfe :)

Gruß Sturmi

Thanatos81 29. Aug 2006 15:37

Re: Integer <-> TCaption kompatibel machen
 
StrToInt, StrToIntDef und TryStrToInt sind deine Freunde ;-) Näheres verrät dir bestimmt die nette OH :)

RavenIV 29. Aug 2006 15:41

Re: Integer <-> TCaption kompatibel machen
 
Das ist ganz einfach:
Delphi-Quellcode:
inhalt := StrToInt (Edit1.text);
Vorher evtl noch prüfen, ob in dem TEdit auch wirklich was eingegeben wurde
Delphi-Quellcode:
if Edit1.Text <> '' then
begin
  ...
  ...
end;

Sturmrider 29. Aug 2006 15:42

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:
procedure TForm1.ButtonClick(Sender: TObject);
var inhalt: integer;
begin
inhalt := StrToInt(Edit1.text);
Timer1.Interval := inhalt;
end;
EDIT: @RavenIV gute Idee mit dem Prüfen, THX auch dir ^^

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 29. Aug 2006 15:51

DP-Maintenance
 
Dieses Thema wurde von "Daniel" von "Fragen / Anregungen zur DP" nach "Sonstige Fragen zu Delphi" verschoben.

Cyberbob 29. Aug 2006 15:58

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:
try
  inhalt := StrToInt(Edit1.Text);
except
  ShowMessage('Fehler');
end;
verwendest, werden eventuell auftretende Fehler abgefangen.

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!

Thanatos81 29. Aug 2006 16:00

Re: Integer <-> TCaption kompatibel machen
 
Das könnte man im Keypress-Event des Edits machen, zB mit:
Delphi-Quellcode:
if Not(Key in ['0'..'9'] then
  abort;
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.

//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;

RavenIV 29. Aug 2006 16:25

Re: Integer <-> TCaption kompatibel machen
 
Zitat:

Zitat von Cyberbob
Delphi-Quellcode:
try
  inhalt := StrToInt(Edit1.Text);
except
  ShowMessage('Fehler');
end;
verwendest, werden eventuell auftretende Fehler abgefangen.

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!

Eine try..except Konstruktion sollte nur verwendet werden, wenn man einen (unvorhergesehenen) Fehler nicht anderst abfangen kann.
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