Autor Beitrag
the-kecks
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157
Erhaltene Danke: 1

Windows Vista Home Premium 64Bit
Delphi 7 Ent.
BeitragVerfasst: Mi 04.03.09 17:52 
hi,
ich hab ein problem. Ich weiß nicht wie ich aus dem string "name" (edit2.text) alle sonderzeichen rauskriegen soll.
ich könnte natürlich jedes sonderzeichen einzeln mit dem pos befehl suchen und ggf. löschen aber das wäre vieeeeeel zu aufwendig.
habe in der sufu nichts gefunden was meinem problem abhilfe schaffen könnte.
PS: ich kann nicht einfach statt der variable edit2.text nehmen, da ich die variable ständig brauche und es sein könnte dass der benutzer sie ändert/löscht.
hoffe ihr könnt mir helfen.

mfg


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mi 04.03.2009 um 23:14
Jens Hartmann
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120

XP
Delphi
BeitragVerfasst: Mi 04.03.09 17:55 
Hallo,

versuch es mal mit StringReplaced..

ausblenden Delphi-Quelltext
1:
2:
  MeinString := StringReplace(MeinString, #13#10'', [rfReplaceAll]);
  MeinString := StringReplace(MeinString, #154'Ü', [rfReplaceAll]);



Hiermit würdest du z.B #154 gegen ein großes Ü ersetzten oder #13#10(Zeilenvorschub) entfernen
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 04.03.09 18:00 
Erstens könntest du alle Sonderzeichen auch gleich bei der Eingabe verhindern, zweitens kannst du einfach alles bis auf Buchstaben z.B. herausfiltern. Ganz schnell und ungetestet hingeschrieben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function GetOnlyChars(Value: String): String;
var
  i, CurResult: Integer;
begin
  SetLength(Result, Length(Value));
  CurResult := 1;
  for i := 1 to Length(Value) do
    if Value[i] in ['a'..'z''A'..'Z'then
    begin
      Result[CurResult] := Value[i];
      Inc(CurResult);
    end;
  SetLength(Result, CurResult - 1);
end;
Dann kannst du das einfach aufrufen:
ausblenden Delphi-Quelltext
1:
EditContents := GetOnlyChars(Edit1.Text);					
the-kecks Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157
Erhaltene Danke: 1

Windows Vista Home Premium 64Bit
Delphi 7 Ent.
BeitragVerfasst: Mi 04.03.09 18:03 
hmm vll wäre es am besten die sonderzeichen zu suchen und falls welche gefunden werden einfach showmessage('Dieser Name ist ungültig');
geht des vll auch?

mfg
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 04.03.09 18:11 
Wie du die einzelnen Buchstaben prüfst siehst du ja in meinem Beispiel. Das ja auch fertig ist, wenn du sie einfach entfernen willst.

Um zu schauen, ob es sich um ein Sonderzeichen handelt, könntest du einfach umgekehrt schauen, ob es kein Buchstabe ist:
ausblenden Delphi-Quelltext
1:
    if not (Value[i] in ['a'..'z''A'..'Z']) then					
the-kecks Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157
Erhaltene Danke: 1

Windows Vista Home Premium 64Bit
Delphi 7 Ent.
BeitragVerfasst: Mi 04.03.09 18:40 
hab das mal so gemacht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function Sonderzeichenueberpruefung(Value: String): String;
var
  i, CurResult: Integer;
begin
  SetLength(Result, Length(Value));
  CurResult := 1;
  for i := 1 to Length(Value) do
    if not Value[i] in ['a''b''c''d''e''f''g''h''i''j''k''l''m''n''o''p''q''r''s''t''u''v''w''x''y''z''1''2''3''4''5''6''7''8''9''_''A''B''C''D''E''F''G''H''I''J''K''L''M''N''O''P''Q''R''S''T''U''V''W''X''Y''Z'then
    begin
      showmessage('Dieser Name ist ungültig!');
      exit;
    end;
  SetLength(Result, CurResult - 1);
end;

//...

namenew:=Sonderzeichenueberpruefung(namenew);

der zeigt bei mir immer den fehler "Operator ist auf diesen Operandentyp nicht anwendbar"...mach ich was falsch?

mfg

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 04.03.09 18:44 
Du musst klammern.
ausblenden Delphi-Quelltext
1:
if not (Value[i] in ['a'..'z''0'..'9''_''A'..'Z','ä','Ä','ö','Ö','ü','Ü','ß']) then					
the-kecks Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157
Erhaltene Danke: 1

Windows Vista Home Premium 64Bit
Delphi 7 Ent.
BeitragVerfasst: Mi 04.03.09 18:48 
oh mann natürlich...ich vergess das immer. funzt, danke!

mfg