Autor Beitrag
spike0
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 77



BeitragVerfasst: Fr 13.05.05 18:30 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Fr 13.05.05 18:34 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
function eBg(s:string):string;
begin
  result := s;
  result[1] := uppercase(s[1]);
end;

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
GSE
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 740

Win 2k, Win XP Pro
D5 Prof, D6 Ent, D2k5 PE
BeitragVerfasst: 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)
ausblenden 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

_________________
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs
and the universe trying to produce bigger and better idiots. So far, the universe is winning. (Richard Cook)
spike0 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 77



BeitragVerfasst: Fr 13.05.05 18:45 
Funktioniert nicht: bei uppercase geht nur string, und kein char
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Fr 13.05.05 19:02 
dann halt upcase
interessanter asm code:
system.pas hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function        UpCase( ch : Char ) : Char;
asm
{ ->    AL      Character       }
{ <-    AL      Result          }

        CMP     AL,'a'
        JB      @@exit
        CMP     AL,'z'
        JA      @@exit
        SUB     AL,'a' - 'A'
@@exit:
end;


_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
spike0 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 77



BeitragVerfasst: 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...