Entwickler-Ecke

Sonstiges (Delphi) - 1 Stelle eines Wort ersetzen ?


Jagg - Do 23.01.03 14:47
Titel: 1 Stelle eines Wort ersetzen ?
Hallo,Leute !

Ich habe eine Datenbank,dadrin ist das Feld "Name",mit einem Datensatz der heisst "michael " !
Ich will das das Programm überprüft,wenn an der 1 Stelle des Datensatzes (in dem Fall das "m ") ein kleiner Buchstabe steht,das er es durch einen großen Großen Buchstaben (in dem Fall das "M") ersetzt !

Ich habe das mal mit StringReplace versucht :

Quelltext
1:
StringReplace [Table1.FieldByName('Name').AsString,LowerCase(Table1.FieldByName('Name').AsString),UpperCase(Table1.FieldByName('Name').AsString),[rfReplaceAll,rfIgnoreCase]                    


Hierbei wandelt er kleine Buchstaben in große Buchstaben um,aber er wandelt das ganze Wort um,ich will aber nur das er den 1 Buchstaben umwandelt !

Wie mach ich das ???

Jagg !


smiegel - Do 23.01.03 14:53

Hallo,


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var s:String;
...
with Table1 do
begin
  while not Eof do
  begin
    Edit;
    s:=FieldByName('Name').AsString;
    s[1]:=AnsiUpperCase(s[1]);
    FieldByName('Name').AsString:=s;
    Post;
    Next;
  end; // while
end; // with


Jagg - Do 23.01.03 14:58

yo danke wenn es nicht klappt schreib ich nochmal rein ;)


Anonymous - Do 23.01.03 16:44

Nicht so schnell.

Bei soeiner Aktion sollte man vorher prüfen ob der String überhaupt Text hat. Wenn nicht, dann gibt es eine schöne Fehlermeldung. S[1] ist kein String, sondern ein Char. Und ein Char hat immer ein Zeichen.


Quelltext
1:
2:
3:
4:
    ...
    s:=FieldByName('Name').AsString; 
    if Length(s) < 1 then Exit; // <<< Wichtig
    ...