![]() |
ein Edit-Feld über eine Funtion/Procedure ändern
Hallo, ich habe mir eine procedure geschireben, mit der ich ein edit-Feld auf seinen Inhalt prüfen kann.
Wenn der Inhalt inkorrekt ist, soll dieser gelöscht werden. Er wird aber nicht gelöscht, alles andere funktioniert ohne Probleme. Wäre super wenn ihr mir helfen könnt! Gruß cRayZo
Delphi-Quellcode:
procedure intcheck(LabelName:string);
var i: integer; begin for i := 1 to length(LabelName) do begin if not (LabelName[i] in ['0','1','2','3','4','5','6','7','8','9']) then begin showmessage('ungültiges Zeichen'); LabelName:=''; //<--- diese Zeile funktionier nicht exit; end; end; if LabelName='' then exit else if strtoint(LabelName)>15 then begin showmessage('bitte Zahlen bis 15 eingeben'); LabelName:=''; //<--- diese Zeile auch nicht nicht, ansonsten alles paletti exit; end; end; |
Re: ein Edit-Feld über eine Funtion/Procedure ändern
Die Zeile funktioniert wahrscheinlich schon, nur weist Du den Leerstring ja nirgends dem Text des Edits zu.
|
Re: ein Edit-Feld über eine Funtion/Procedure ändern
Du übergibst ja den String an die Prozedur. Dort arbeitest du mit einer Kopie. Änderungen daran wirken sich natürlich nicht auf das Original aus.
|
Re: ein Edit-Feld über eine Funtion/Procedure ändern
Wenn ein Parameter veränderbar sein voll, dann mußt du diesen als solchen kennzeichnen
Code:
procedure IntCheck([b]var[/b] LabelName: String);
[edit] man kann das Ganze aber auch kürzen
Delphi-Quellcode:
PS: wenn du mit der ersten Schleife eine Exception in StrToInt verhindern wolltest, dann versuch mal '1234567890123456789' an StrToInt zu übergeben :zwinker:
procedure intcheck(var LabelName: String);
var i: integer; begin i := StrToIntDef(LabelName, -1); if (i < 0) or (i > 15) then begin showmessage('bitte Zahlen bis 15 eingeben'); LabelName := ''; end; end; // bzw. procedure intcheck(var LabelName: String); var i: integer; begin if not TryStrToInt(LabelName, i) or (i < 0) or (i > 15) then begin showmessage('bitte Zahlen bis 15 eingeben'); LabelName := ''; end; end; |
DP-Maintenance
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
Laut Titel geht es um ein TEdit -> VCL |
Re: ein Edit-Feld über eine Funtion/Procedure ändern
super vielen Dank für eine Antworten!
nur noch eine Frage: wenn ich die Procedure aufrufe habe ich bis jetzt zB. folgendes benutzt:
Delphi-Quellcode:
wenn ich jetzt aber das mache, was himitsu sagt
intcheck(lk14.Text);
Zitat:
Der Fehler sieht dann wie folgt aus: Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen wie kannn ich das jetzt beheben? Gruß cRayZo |
Re: ein Edit-Feld über eine Funtion/Procedure ändern
.Text ist kein normaler String sondern eine Property. Mach mal eine Funktion daraus.
|
Re: ein Edit-Feld über eine Funtion/Procedure ändern
Oder du musst den Text in eine Stringvariable legen, die dann verändert werden kann, und danach wieder zurück.
Du kannst aber auch einfach nur das Editfeld selbst übergeben. |
Re: ein Edit-Feld über eine Funtion/Procedure ändern
Delphi-Quellcode:
oder du übergist direkt das Edit
procedure intcheck(var LabelName: String);
var i: integer; begin i := StrToIntDef(LabelName, -1); if (i < 0) or (i > 15) then begin showmessage('bitte Zahlen bis 15 eingeben'); LabelName := ''; end; var s: String; s := lk14.Text; intcheck(s); lk14.Text := s;
Delphi-Quellcode:
[add] jetzt hat sich jaenicke vorgeschlichen :shock:
procedure intcheck(Edit: TEdit);
var i: integer; begin i := StrToIntDef(Edit.Text, -1); if (i < 0) or (i > 15) then begin showmessage('bitte Zahlen bis 15 eingeben'); Edit.Text := ''; end; intcheck(lk14); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:01 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-2025 by Thomas Breitkreuz