AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ein Edit-Feld über eine Funtion/Procedure ändern

Ein Thema von cRayZo · begonnen am 15. Feb 2009 · letzter Beitrag vom 15. Feb 2009
Antwort Antwort
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#1

ein Edit-Feld über eine Funtion/Procedure ändern

  Alt 15. Feb 2009, 14:41
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;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: ein Edit-Feld über eine Funtion/Procedure ändern

  Alt 15. Feb 2009, 14:42
Die Zeile funktioniert wahrscheinlich schon, nur weist Du den Leerstring ja nirgends dem Text des Edits zu.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: ein Edit-Feld über eine Funtion/Procedure ändern

  Alt 15. Feb 2009, 14:44
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#4

Re: ein Edit-Feld über eine Funtion/Procedure ändern

  Alt 15. Feb 2009, 14:44
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:
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;
PS: wenn du mit der ersten Schleife eine Exception in StrToInt verhindern wolltest, dann versuch mal '1234567890123456789' an StrToInt zu übergeben
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
15. Feb 2009, 14:55
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
Laut Titel geht es um ein TEdit -> VCL
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#6

Re: ein Edit-Feld über eine Funtion/Procedure ändern

  Alt 15. Feb 2009, 15:02
super vielen Dank für eine Antworten!

nur noch eine Frage:
wenn ich die Procedure aufrufe habe ich bis jetzt zB. folgendes benutzt:intcheck(lk14.Text); wenn ich jetzt aber das mache, was himitsu sagt
Zitat:
Wenn ein Parameter veränderbar sein voll, dann mußt du diesen als solchen kennzeichnen
procedure IntCheck(var LabelName: String);
dann funktioniert das (logischer Weise) nicht mehr.
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: ein Edit-Feld über eine Funtion/Procedure ändern

  Alt 15. Feb 2009, 15:08
.Text ist kein normaler String sondern eine Property. Mach mal eine Funktion daraus.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.332 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: ein Edit-Feld über eine Funtion/Procedure ändern

  Alt 15. Feb 2009, 15:11
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#9

Re: ein Edit-Feld über eine Funtion/Procedure ändern

  Alt 15. Feb 2009, 15:14
Delphi-Quellcode:
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;
oder du übergist direkt das Edit
Delphi-Quellcode:
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);
[add] jetzt hat sich jaenicke vorgeschlichen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:58 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