Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Dummer Schleifen Fehler! (https://www.delphipraxis.net/95295-dummer-schleifen-fehler.html)

SirThornberry 4. Jul 2007 20:35

Re: Dummer Schleifen Fehler!
 
das ganze mal ordentlich:
Delphi-Quellcode:
procedure TForm1.Edt_Change(Sender: TObject);
var
  i,
  lLen   : integer;
  lDst,
  lSrc   : String;
begin
  lLen   := 0;
  lSrc   := Edt_.Text;
  SetLength(lDst, Length(lSrc));
  for i := 1 to Length(lSrc) do
  begin
    if (lSrc[i] in [' ', '.', '-']) then
    begin
      inc(lLen);
      lDst[lLen] := lSrc[i];
    end;
  end;
  if (lLen <> Length(lSrc)) then
  begin
    ShowMessage('Ungültige(s) Zeichen in der Eingabe!');
    Edt_.Text := copy(lDst, 1, lLen);
  end;
end;
@Marabu: Natürlich hast du recht. Aber auch OnChange sollte man nicht außer acht lassen da per Strg + V oder Context-Menü und einfügen aus der Zwischenablage ungewollte Zeichen eingefügt werden können.

DeddyH 4. Jul 2007 20:36

Re: Dummer Schleifen Fehler!
 
Wobei ich dann doch marabus Lösung bevorzugen würde (20 * ShowMessage ist irgendwie nervig, gell?)

Stillmatic 4. Jul 2007 21:27

Re: Dummer Schleifen Fehler!
 
Hab gerade das mal alles durchgetestet!!
Wenn man jetzt natürlich 10 Falsche Zeichen per Copy 'n' Paste einfügt kommt 10 mal Falsche Eingabe!!

Ist auch net so toll!

Namenloser 4. Jul 2007 21:32

Re: Dummer Schleifen Fehler!
 
Ist ja auch kein Wunder, weil du die Message box bei jedem Schleifendurchlauf auslöst.
Du kannst aber in der function eine Boolean-Variable deklarieren, die du am Anfang der function auf false setzt. Wenn ein Zeichen gefunden wird setzt du die Variable auf True. Nach der Schleife prüfst du dann, welchen Wert die Variable hat. Wenn sie den Wert true hat, zeigst du die Messagebox.

Stillmatic 4. Jul 2007 22:14

Re: Dummer Schleifen Fehler!
 
Nachdem man die Zeichen gelöscht hat, kommt es vor das der "leere" String leerzeichen enthält!!

Also meine Frage, wie kann man überprüfen ob ein String nur aus Leerzeichen besteht???
Mit einer For Schleife und einem Booleschen Wert ist das ja eigentlich nicht realisierbar weil der String ja aus 5 Zeichen bestehen kann wovon die ersten vier LeerZeichen sind und eins Ein anderes Zeichen sein kann!

SirThornberry 5. Jul 2007 07:02

Re: Dummer Schleifen Fehler!
 
du könntest einfach die Leerzeichen zählen und wenn es genau soviel Leerzeichen sind wie der gefilterte String lang ist und es mehr als 0 Leerzeichen sind dann machst du einen Leerstring draus.

Namenloser 5. Jul 2007 12:51

Re: Dummer Schleifen Fehler!
 
Dafür gibt es die Funktion Delphi-Referenz durchsuchentrim


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 Uhr.
Seite 2 von 2     12   

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