Wenn ich richtig verstehe bewirkt StrToInt also, dass ich im Edit-Feld nur noch ganze Zahlen eingeben kann.
Also gilt die Umwandlung nicht für meine Variable n, sondern für Edit1.Text?
Das würde Sinn machen, denn n ist ein Integer und Edit1-Text wäre es nach der Umwandlung auch. Das Edit-Feld wird n also zugeordnet und alles was ich in dieses Feld nachher reinschreibe wird mit dieser Vari verrechnet.
...
Nein, nicht ganz. strtoint ist eine bloße Funktion, die einen Wert berechnet, auf das künftige Verhalten von edit1 hat sie keinerlei Einfluss. Was in Zeile 5 wirklich passiert, ist folgendes (Schritt für Schritt erklärt):
Dieser Code wird jedes Mal ausgeführt, wenn man auf den Button klickt und wandelt dann den eingegebenen String in eine Zahl um. Der Text wird dabei aber in keinster Weise verändert, du kannst ja mal probieren, was passiert, wenn du totalen Unsinn (also keine Zahl) eingibst.
Dein dazuedierter Kommentar zu der Zeile ist demnach auch nicht korrekt, die anderen stimmen aber, denke ich.
--
A human is a system for converting dust billions of years ago into dust billions of years from now via a roundabout process which involves checking email a lot.
Genau, wenn Edit1 allerdings nicht umwandelbar ist, dann bekommst du n' Fehler un d die Prozedure schmiert ab, also solltest du solche Umwandlungen vorsichtig anwenden aka pruefen oder durch z.B. Spinedits ausschschliesen.
Beide gehen (ungetestet, grad kein Delphi). Obere pausiert aber im Debug Modus bei einem Nicht-Integer.
Anwendung waere dann so:
Quellcodes einrueken und Gross-Kleinschreibung beachten ist btw. ziemlich sinnvoll wenn es um Leserlichkeit geht.
--
Signature.
Geändert von Crash-Override (10.05.2008 um 23:07 Uhr)
@drunken monkey: Hab mir die Informationen aus deinem Post noch einmal in einfacher Form zusammengetragen, um zu sehen ob ich das auch wirklich kapiert habe:
edit1 // Klar, ein Eingabefeld.
edit1.text // Edit.text gibt also meinen eingegebenen Daten den String-Typus.
Zitat von drunken monkey
strtoint(edit1.text) //Ist edit1.text also z.B. "12", so liefert der Ausdruck den Wert 12 (als Integer) zurück.
...
Gut, das verstehe ich.
Zitat von drunken monkey
n := strtoint(edit1.text)
...
Also Variable n bekommt den Wert meiner Eingabe, was immer das auch sein mag. Demnach ist es also klüger, lieber eine Zahl als ein Wort einzugeben, da sowas sonst Fehler provoziert (das Wort "Hamster" als Integer zurückzugeben ist wohl für Delphi unmöglich, bei der Zahl "12" ists aber kein Problem).
Eine Frage hätte ich hierzu noch:
Die Variable summe wird von einer Kommazahl (real) in einen String umgewandelt, um auf der Caption vom Labelfeld angezeigt zu werden.
Gilt sowas auch generell, also kann man Zahlen wie Integer und real nicht auf einer Caption anzeigen lassen und muss man sie deshalb immer in einen String umwandeln?
--
Elektra Kingdom v.4.12 Vollversion in der Mache, Zeitlimit bis zum 31.12.2024 *click Offizieller Blog zum Spiel News, Links, Screenshots, etc. *click Tanalin Integer Scaler Fullscreen Tool für RPG Maker 2000 / 2003 Spiele*click VirtualMIDISynth Fix für kaputte MIDI Musik*click Windows Photo Viewer Fix für unscharfe Windows Fotoanzeige *click RPG Maker Ultimate (rpg2009) von Cherry: 1 Million Switches/Variablen, 125 Kästchen für BattleAnimationen, beliebige Picture-Größen importieren *click für DL & *click für 100.000 Pictures RPG Maker 2000 / 2003 (Steam) Korrektes Vollbild , Performance+ & Ultimate *click
Die Variable summe wird von einer Kommazahl (real) in einen String umgewandelt, um auf der Caption vom Labelfeld angezeigt zu werden.
Gilt sowas auch generell, also kann man Zahlen wie Integer und real nicht auf einer Caption anzeigen lassen und muss man sie deshalb immer in einen String umwandeln?
...
Nein, sowas geht nicht. Zahlen zu String immer Umwandeln. FloatToInt(), IntToStr() und FormatFloat() [Letzteres fuer komplexere Formatierungen aka 10.10 statt 10.1]