Einzelnen Beitrag anzeigen

m.wollert

Registriert seit: 18. Aug 2003
Ort: Heilbronn
92 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Dummer Schleifen Fehler!

  Alt 4. Jul 2007, 20:05
Hi,

Grundsätzlich sollten Löschvorgänge in einer Zeichenkette "von hinten" gestartet werden.

also
Delphi-Quellcode:
procedure TForm1.Edt_Change(Sender: TObject);
var i: integer;
       Ausgabe: String;

Begin
  Ausgabe := Edt_.Text;
  For i:= length(Ausgabe) downto 1 do
  Begin
     If Ausgabe[i] <> 'then
       If (Ausgabe[i] <> ' ') and
          (Ausgabe[i] <> '.') and
          (Ausgabe[i] <> '-') then
         Begin
           showmessage('Ungültige(s) Zeichen in der Eingabe!');
           Delete(Ausgabe,i,1);
           Edt_.Text := Ausgabe;
         End;
  End;
End;//Edt_Change
In einer Vorwärtsschleife kann es passieren, daß Du einzelne Elemente nicht prüfst

Beispiel:
W.XY-Z

i steht auf 1, löscht W (Zeichenkette wird kürzer)
i steht auf 2, löscht X
i steht auf 3, löscht nichts (Y ist hier nun an 2. Stelle)
...

Einfach mal zum nachdenken

Grüße
Michael
Michael
*Im Auftrag ewiger Jugend und Glückseligkeit*
  Mit Zitat antworten Zitat