Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Suche nach einem Zeichen in einem Edit (https://www.delphipraxis.net/12207-suche-nach-einem-zeichen-einem-edit.html)

Nikolas 22. Nov 2003 21:33


Suche nach einem Zeichen in einem Edit
 
Ich will verhindern, dass in einem Edit mehr als ein komma eingegeben wird.
Deswegen versuche ich bei jedem Keypress das edit zu durchsuchen indem ich mir von jedem Zeichen den Ascii-Wert anschaue.

Delphi-Quellcode:
for i:= 0 to length(edi1.text) do
begin
     
if ord(edit1.Text[i]) = 44
        then
        Kommagefunden:=true;
end;
bei der if-Zeile bekomme ich aber einen EAccessViolation und ich komm nicht darauf warum. :gruebel:

Vielen Dank

THXbyTOX

himitsu 22. Nov 2003 21:39

Re: Suche nach einem Zeichen in einem Edit
 
Such mal dort nach meinen 2 Beispielen, die machen so was:
Nur Zahlen und Punkte in InputBox

APP 22. Nov 2003 21:43

Re: Suche nach einem Zeichen in einem Edit
 
Hallo Toxman,

Code:
for i:= 1 to length(edi1.text) do
Du mußt von 1 weg zählen.

Nikolas 22. Nov 2003 21:45

Re: Suche nach einem Zeichen in einem Edit
 
Das ist nicht mein Problem. Ich will es im endeffekt so machen dass ich, wenn ich ein komma gefunden habe, in der

Delphi-Quellcode:
If not(key in [#8,#48..#57])
noch #44

hinzufügen will.

Mein Problem ist die EAccessviolation die ausgelöst wird.

Danke

APP 22. Nov 2003 21:51

Re: Suche nach einem Zeichen in einem Edit
 
Hallo
also ich weiß nicht, bei mir funktioniert es wie es soll, ohne Fehler!

Vielleicht kommt deine Fehlermeldung von wo anderst her?

p.s.
Zitat:

Zitat von OH
Die Funktion Length gibt die Anzahl der Zeichen eines Strings oder der Elemente eines Array zurück.

Daher solltest Du von 1 weg starten.

himitsu 22. Nov 2003 21:54

Re: Suche nach einem Zeichen in einem Edit
 
:warn: Hättest ja mal in meine Demo schauen können.
Dann währe das ja schon lange geklärt.

Das Teil beachtet sogar welches Zeichen im laufenden System als komma verwendet wird.

Delphi-Quellcode:
{© by Himitsu @ Delphi-PRAXiS}

Procedure TInputBoxNZForm.Edit1KeyPress(Sender: TObject; Var Key: Char);
  Begin
    If not (Key in [#08, #13, DecimalSeparator{,}, '0'..'9']) Then Key := #00;
    If (Key = DecimalSeparator{,}) and (Pos(DecimalSeparator{,}, Edit1.Text) > 0) Then Key := #00;
  End;
Die Suchfunktion dieser Seite ist übrigens sehr gut.

Nikolas 22. Nov 2003 21:55

Re: Suche nach einem Zeichen in einem Edit
 
Das war der Fehler. Mit i=0 hab ich versucht die 0te Stelle des edits zu lesen und das hat dann die Eaccesviolation ausgelöst.

THXbyTOX :dp:

Nikolas 22. Nov 2003 22:01

Re: Suche nach einem Zeichen in einem Edit
 
Der Link hat mir aber mein Problem nicht ganz erklärt, da meine Idee mit der For-Schleife nicht benutzt wird. Und die Suchfunktion ist dass, was ich vor jedem Post hier gut anschaue.

Tox

himitsu 22. Nov 2003 22:07

Re: Suche nach einem Zeichen in einem Edit
 
PS:
Delphi-Quellcode:
If Pos(',', Edit1.Text) > 0 Then KommaGefunden := True;

{ entspricht deinem }

For i := 1 to Length(Edi1.Text) do
  If Ord(Edit1.Text[i]) = 44 Then KommaGefunden := True;

For i := 1 to Length(Edi1.Text) do
  If Edit1.Text[i] = ',' Then KommaGefunden := True;
Ist nur etwas schneller und einfacher.

Nikolas 22. Nov 2003 22:15

Re: Suche nach einem Zeichen in einem Edit
 
Ich kannte bisher den pos(..) befehl noch nicht und deswegen hat mir auch diese antwort nicht viel gebracht. Da ich versuche etwas für die schule zu schreiben un da kann ich natürlich nur sachen benutzen, von denen ich weiss warum un diwe sie funktionieren. Und da hilft es mir nichts, wenn ich eine fremde Idee ( und ist sie noch so schön) per Copy&paste übernehme und sie dann benutze ohne zu wissen warum.

Aber Danke für die Antwort

THXbyTOX


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 Uhr.
Seite 1 von 2  1 2      

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