Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Capitalize
spike0 - Fr 13.05.05 18:30
Titel: Capitalize
Gibt's ne Funktion für Capitalize (die ersten Buchstaben von allen Wörtern groß schreiben, z.B. bei Memo o. Richedit)?
Wenn nicht, wie könnte ich es sonst machen?
retnyg - Fr 13.05.05 18:34
Delphi-Quelltext
1: 2: 3: 4: 5:
| function eBg(s:string):string; begin result := s; result[1] := uppercase(s[1]); end; |
GSE - Fr 13.05.05 18:45
ich glaube er meint nur die Anfangsbuchstaben der Wörter groß schreiben.
grob: du musst den Satz nach Wörtern durchsuchen, will heißen du durchsuchst ihn nach Worttrennzeichen(Kommas, Leerzeichen, Punkte, etc.) und wenn nach einem Trennzeichen kein trennzeichen kommt, fängt ein neues Wort an -> den Buchstaben "upcasen" (UpCase).
z.B. so (ist jetzt auf die schnelle und ungetestet)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| function Capitalize(s: string): string; const Delimiters = [' ', '.', '!']; var i: integer; IsWord: boolean; begin IsWord := false; for i := 1 to Length(s) do begin if (not(s[i] in Delimiters)) and (not IsWord) then begin s[i] := UpCase(s[i]); IsWord := true; end; if ((s[i] in Delimiters)) then IsWord := false; end;
result := s; end; |
mfg
GSE
spike0 - Fr 13.05.05 18:45
Funktioniert nicht: bei uppercase geht nur string, und kein char
retnyg - Fr 13.05.05 19:02
dann halt upcase
interessanter asm code:
system.pas hat folgendes geschrieben: |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| function UpCase( ch : Char ) : Char; asm
CMP AL,'a' JB @@exit CMP AL,'z' JA @@exit SUB AL,'a' - 'A' @@exit: end; |
|
spike0 - Fr 13.05.05 19:27
@ GSE
Danke, das war genau das Richtige.
Hinweis: Meine Antwort ("es geht nicht") war auf die 1. Antwort bezogen...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!