Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi VAR Funktion (https://www.delphipraxis.net/56984-var-funktion.html)

lprade 14. Nov 2005 17:11


VAR Funktion
 
Hallo zusammen
Ich schreibe ein Program, indem ein Wert der von dem Benutzer über ein Textfeld eingegeben wird in einer Timer-Komponente weiterverarbeitet werden soll. Dazu muss der Wert aber von dem String in das Real Format umgewandelt werden. Dass mach ich im Moment mit der Funktion strtofloat. Falls der Benutzer aber aus Versehen ein Zeichen eingegeben hat liefert das Program eine Fehlermeldung. Das Problem ist, dass der Wert wie gesagt aus einer Timer-Komponente abgefragt wird. Wenn der Timer z.B. auf 1 Sekunde steht, kommt einmal pro Sekunde eine neue Fehlermeldung.

Um dieses Problem zu lösen wollte ich die Funktion VAL benutzen. Wenn ich aber eingebe

Messier:=VAL(edit1.text);

erhalte ich die Compilermessage "Nicht genügend wirkliche Parameter". Kann mir irgendjemand helfen (Habe Messier als Integer deklarier)?
Vielen Dank
Ludwig

Binärbaum 14. Nov 2005 17:21

Re: VAR Funktion
 
Val ist AFAIK keine Funktion, sondern eine Prozedur und hat nicht einen sondern zwei Parameter.
Einer ist der String, der andere die numerische Variable, in die gespeichert werden soll. In deinem Beispiel müsste es also wie folgt heißen:
Delphi-Quellcode:
Val(edit1.text, messier);
//oder
Val(messier, edit1.text);
Ich habe zwei Varianten angegeben, weil ich nicht mehr weiß, in welcher Reihenfolge die Parameter angegeben werden müsssen: probier's einfach aus.

MfG
Binärbaum

Khabarakh 14. Nov 2005 17:22

Re: VAR Funktion
 
Platziere deinen Cursor auf "Val" und drücke F1, sofort erscheint eine wunderschöne Online-Hilfe, die dir genau verrät, welche Parameter du benutzen musst :zwinker: . Es sei denn, du besitzt nur D2005, dann hast du ein Problem :stupid: .
Eine Alternative wäre Delphi-Referenz durchsuchenTryStrToInt

[add] @Binärbaum: Es sind drei :wink: [/add]

shmia 14. Nov 2005 17:23

Re: VAR Funktion
 
Die Lösung findest du in der Online-Hilfe von Delphi.
Einfach den Cursor auf Val setzen und F1 drücken. Dann dem Link Beispiel oder Example folgen.
<edit> zu langsam ;-) </edit>

SirThornberry 14. Nov 2005 17:24

Re: VAR Funktion
 
du könntest mit "Try" und "Except" bzw. "Finally" arbeiten, oder du prüfst vorher ob in dem String Zeichen vorkommen die keine Zahl sind.
Delphi-Quellcode:
var ErlaubteZeichen, LEditText: String;
    OK: Boolean;
    LCount, LMax: Integer;
begin
  LEditText := Edit1.Text;

  ErlaubteZeichen := '01234567890' + DecimalSeparator;
  LMax := Length(LEditTExt);
  LCount := 1;
  OK := True;
  while OK and (LCount <= LMax) do
  begin
    OK := Pos(LEditText[LCount], ErlaubteZeichen) > 0;
    inc(LCount);
  end;
  showmessage(booltostr(OK, true));

lprade 14. Nov 2005 18:18

Re: VAR Funktion
 
danke an alle, habe dass Problem gelöst.
PS: Die Onlinehilfe streikt bei mir aus irgendeinen Grund... :stupid:
Mfg, Ludwig


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