Edit mehr als 6 Zeichen dann .....

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
aldi
Beiträge: 59
Registriert: Sa 26. Apr 2014, 14:03

Edit mehr als 6 Zeichen dann .....

Beitrag von aldi »

hallo,

versuche eine if Anweisung umzusetzen! Bin aber auf dem Holzweg :-(

Oh....
Wenn das (Edit35) 7 Zeichen erreicht hat, soll das Feld gesperrt werden. (enable:= false)

Code: Alles auswählen

 
  if Edit35.MaxLength <=6 then begin 
 
gibt es andere Möglichkeiten?
Zuletzt geändert von aldi am Mi 6. Aug 2014, 18:47, insgesamt 1-mal geändert.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Edit mehr als 6 Zeichen dann .....

Beitrag von m.fuchs »

Unglaublich wie hier manche Beiträge erstellt werden. Als ob jemand auf den Tisch ko***.

Vielleicht möchtest du ja doch einmal dein Problem schildern. Zum Beispiel welche Fehlermeldung du bekommst. Und vielleicht auch ein paar Zeilen Code mehr als diese eine.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Edit mehr als 6 Zeichen dann .....

Beitrag von m.fuchs »

Aha, mit der Änderung wird zumindest schon einmal klar was du möchtest.

MaxLength ist die Eigenschaft, die dem Edit sagt, wieviel Zeichen es maximal beinhalten kann. Das ist also die falsche Eigenschaft für deine Abfrage.

Die kannst aber die Funktion Length benutzen um die Länge von der Eigenschaft Text zu prüfen. Wenn diese mehr als 6 beträgt, kannst du dein Edit deaktivieren.

Falls du nur möchtest, dass der Benutzer nicht mehr als 6 Zeichen eingeben kann (diese aber sehr wohl wieder löschen und bearbeiten), dann solltest du im Objektinspektor MaxLength auf den entsprechenden Wert setzen.
Zuletzt geändert von m.fuchs am Mi 6. Aug 2014, 22:04, insgesamt 1-mal geändert.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

aldi
Beiträge: 59
Registriert: Sa 26. Apr 2014, 14:03

Re: Edit mehr als 6 Zeichen dann .....

Beitrag von aldi »

das ist die Lösung!

Code: Alles auswählen

 
   if Length(Edit35.text) > 6 then
    for I := 1 to Length(Edit35.text) do
    begin  
 

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Edit mehr als 6 Zeichen dann .....

Beitrag von Christian »

LoL es gibt Tage an dem ich mir jemand wünschen würde der Schwachsinnige Threads löscht.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

aldi
Beiträge: 59
Registriert: Sa 26. Apr 2014, 14:03

Re: Edit mehr als 6 Zeichen dann .....

Beitrag von aldi »

habe doch noch eine Frage :-)
wieso geht das Showmessage- Fenster bei Test nicht sofort zu?

Code: Alles auswählen

 
procedure TForm3.BitBtn13Click(Sender: TObject);
var
 i: Integer;
begin
 Memo1.Color:=clred;
 Memo1.Font.Color:=clblack;
 Memo1.Enabled:= true;
  if Application.MessageBox('Alarm- Text auslösen?', 'Hinweis', MB_ICONINFORMATION or MB_OKCANCEL or MB_DEFBUTTON2) = IDOK
   then begin
    if (ComboBox7.Text='a')or(ComboBox7.Text='b')or(ComboBox7.Text='c')or(ComboBox7.Text='d')then begin
     if Length(Edit35.Text) > 6 then begin
      for I := 1 to Length(Edit35.text) do
       begin
        Showmessage('Test');
         Edit35.Clear;
       end;
      end else
       Showmessage('Feuer');
        Memo1.Color:=clwhite;
        Memo1.Font.Color:=clblack;
       Memo1.Enabled:= false;
      end else begin
       Showmessage('Fehler');
        Memo1.Color:=clwhite;
        Memo1.Font.Color:=clblack;
       Memo1.Enabled:= false;
      end;
  end else begin
  Memo1.Color:=clwhite;
   Memo1.Font.Color:=clblack;
  Memo1.Enabled:= false;
 end;
end; 

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Edit mehr als 6 Zeichen dann .....

Beitrag von Michl »

aldi hat geschrieben:

Code: Alles auswählen

      for I := 1 to Length(Edit35.text) do
       begin
        Showmessage('Test');
         Edit35.Clear;
       end;
Nehmen wir mal an, Edit35.text hat eine Länge von 100, dann wird "ShowMessage" und "Edit35.Clear" 100mal aufgerufen! Bei "for I := 1 to Length(Edit35.text)" wird nur 1mal "Length(Edit35.text)" ausgewertet und dieser Wert wird für die Schleife genutzt.

Es würde genügen:

Code: Alles auswählen

...
     if Length(Edit35.Text) > 6 then begin
 //     for I := 1 to Length(Edit35.text) do
 //      begin
        Showmessage('Test');
         Edit35.Clear;
//       end;
      end else
       Showmessage('Feuer');
...
Aber warum setzt Du die Lösung von m.fuchs nicht um :?: :!:
m.fuchs hat geschrieben:Falls du nur möchtest, dass der Benutzer nciht mehr als 6 Zeichen eingeben kann (diese aber sehr wohl wieder löschen und bearbeiten), dann solltest du im Objektinspektor MaxLength auf den entsprechenden Wert setzen.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Edit mehr als 6 Zeichen dann .....

Beitrag von m.fuchs »

Christian hat geschrieben:LoL es gibt Tage an dem ich mir jemand wünschen würde der Schwachsinnige Threads löscht.
Naja, das ist nun auch übertrieben. Der eine oder andere Poster wird ja vielleicht doch noch lernwillig.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Edit mehr als 6 Zeichen dann .....

Beitrag von Christian »

Darum gehts ja nicht hinterher nützt der Thread aber keinem mehr was, ich sag ja nicht das man die diskussion abwürgen soll.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Edit mehr als 6 Zeichen dann .....

Beitrag von corpsman »

Vielleicht brauchen wir eine Rubrik im Forum, welche alles älter als 30 Tage löscht, dahin könnte man dan solche threads verschieben..
--
Just try it

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Edit mehr als 6 Zeichen dann .....

Beitrag von Scotty »

aldi hat geschrieben:das ist die Lösung!

Code: Alles auswählen

 
   if Length(Edit35.text) > 6 then
 
Allerdings funktioniert das nicht mehr, wenn Umlaute oder andere Unicode-Zeichen enthalten sind, die mit 2 Byte kodiert sind. In diesem Fall hilft UTF8Length() aus der Unit LauUTF8.

Antworten