![]() |
StrToInt funzt nicht!
Hallo!
Ich muß gestehen, ich bin ziemlicher Delphi- Dau, daher meine (vielleicht sehr dumme) Frage: Ich habe eine Variable Anlage vom Typ String, in der entweder '1','2' oder '3' steht. Dies möchte ich nun in einen Integer- Wert wandeln. Ich habe auch schon versucht, die StrToInt- Funktion zu verwenden, allerdings erhalte ich immer die Fehlermeldung: Undefinierter Bezeichner. Mein Code:
Delphi-Quellcode:
Wie/Was müsste ich da ändern?
var
Anlage: String; x: Integer; { Hier lesen wir die Parameter fuer die Anlage aus und rufen die entsprechende Applikation auf: } begin if ParamCount = 1 then begin Anlage:=ParamStr(1); end else begin Anlage:='1'; end; x:=StrToInt(Anlage[1]); Danke im Voraus. Gruß Florian |
Re: StrToInt funzt nicht!
Schau mal in der Delphi-Hilfe nach, in welcher Unit sich StrToInt befindet (wahrscheinlich SysUtils) und stelle sicher, dass die Unit unter 'uses' aufgeführt wird.
|
Re: StrToInt funzt nicht!
Hai Flons,
der Compiler sagt Dir doch auch wo bzw. was der Undefinierte Bezeichner ist? Btw: Ich würde es so schreiben ;-)
Delphi-Quellcode:
da sonst versucht wird nur das erste Char des Strings Anlage zu verwenden.
x := StrToInt(Anlage);
|
Re: StrToInt funzt nicht!
Ja, danke erst mal. Der undefinierte Bezeichner ist StrToInt. Liegt es daran, daß die Unit die Programm- Unit ist? Im Kopf habe ich nämlich stehen:
Delphi-Quellcode:
Ist das evtl. der Fehler? Wenn ja, wie kann ich das dann umgehen?
program SGAInfo;
uses Forms, Main in 'Main.pas' {FMain}, About in 'About.pas' {FAbout}, Hilfe in 'Hilfe.pas' {FHelp}; Ich habe auch etwas über ord gelesen. Kann ich sonst eine Typumwandlung mit der Funktion ord machen? Wenn ja, wie würde ich as machen(können)? Florian (ein für-jede-Hilfe-dankbarer-Dau) |
Re: StrToInt funzt nicht!
Code:
program SGAInfo;
uses Forms, [color=green]SysUtils,[/color] Main in 'Main.pas' {FMain}, About in 'About.pas' {FAbout}, Hilfe in 'Hilfe.pas' {FHelp}; |
Re: StrToInt funzt nicht!
Oh, jemineh....
Vielen Dank! Jetzt sieht auch der Blinde wieder! Danke, danke, danke. Ja, es ist so einfach, wenn man weiß, wie es geht. Gruß Florian |
Re: StrToInt funzt nicht!
Zitat:
|
Re: StrToInt funzt nicht!
PS: Es geht auch ohne den String ^^
Dann kann es ja auch wie schon bemerkt Probleme mit dem [1] geben, wenn du aber damit die Eingabe beschrenken willst, dann doch lieber mit 'ner Abfrage.
Delphi-Quellcode:
var
x: Integer; begin if ParamCount = 1 then x := StrToInt(ParamStr(1)) else x := 1;
Delphi-Quellcode:
Wenn du nicht willst, dass dein Programm abstürtzt, wenn mal keine Zahl eingegeben wurde, dann mußt du halt mit StrToIntDef, oder Try/Except arbeiten.
var
x: Integer; begin if ParamCount = 1 then begin x := StrToInt(ParamStr(1)) if (x < 1) or (x > 3) then x := 1; // oder halt 'ne Fehlermeldung... end else x := 1;
Code:
var
x: Integer; begin if ParamCount = 1 then begin x := StrToInt[color=#ff0000]Def[/color](ParamStr(1)[color=#ff0000], 1[/color]) if (x < 1) or (x > 3) then x := 1; // oder halt 'ne Fehlermeldung... end else x := 1;
Code:
wobei du bei Try/Except selber auch mitbekommst, ob ein "Fehler" aufgetreten ist:
var
Anlage: String; x: Integer; begin if ParamCount = 1 then begin Anlage := ParamStr(1); end else begin Anlage := '1'; end; x := StrToInt[color=#ff0000]Def[/color](Anlage[color=#ff0000], 1[/color]); if (x < 1) or (x > 3) then x := 1; // oder halt 'ne Fehlermeldung...
Code:
var
Anlage: String; x: Integer; begin if ParamCount = 1 then begin Anlage := ParamStr(1); end else begin Anlage := '1'; end; [color=#ff0000]try[/color] x := StrToInt(Anlage); if (x < 1) or (x > 3) then x := 1; // oder halt 'ne Fehlermeldung... [color=#ff0000]except // Wenn du willts, dann kann hier auch 'ne eigenen Fehlerbehandlung rein, // z.B. eine Meldung an den UIser, dass er/sie einen "falschen" Parameter angegeben hat. x := 1; end;[/color] |
Re: StrToInt funzt nicht!
Vielen Dank auch für den Hinweis. Ich habe mögliche Fehleingaben jetzt abgefangen. Dabei reagiere ich sowohl auf falsche Zahl- als auch auf Buchstabeneingaben.
Hier mein Code:
Delphi-Quellcode:
Gruß an alle.
try
x:= StrToInt(Anlage[1]); case x of 1..3: FMain.Anlage:=x; else //Wenn nicht, gib Meldung aus und starte mit 1: Application.MessageBox('Falscher Paramter!' + #13 + 'Gültige Parameter: 1, 2 oder 3!' + #13 + 'Es wird mit Parameter 1 gestartet!','Problem',16); FMain.Anlage:=1 end; //Wenn keine (gueltige) Zahl, gib Meldung aus und starte mit 1: except Application.MessageBox('Falscher Paramter!' + #13 + 'Gültige Parameter: 1, 2 oder 3!' + #13 + 'Es wird mit Parameter 1 gestartet!','Problem',16); FMain.Anlage:=1; Schöne Ostertage Florian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:29 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