Einzelnen Beitrag anzeigen

Maekkelrajter

Registriert seit: 8. Mär 2017
Ort: Köln
118 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Wortanfänge in Großbuchstaben

  Alt 12. Sep 2019, 22:12
Hallo,

die Infos in diesem Thread könnten Dir evtl. weiterhelfen:

Anfangsbuchstaben groß machen

Gruß
Frank
Dort stieß ich auf das Stichwort 'AnsiProperCase', was mich zu diesem Code führte:
Delphi-Quellcode:
const
  StdWordDelims: TSysCharset = [#0..' ',',','.',';','/','\',':','''','"','`','(',')','[',']','{','}'];

function AnsiProperCase(const S: string; const WordDelims: TSysCharSet): string;
var
  P,PE : PChar;
begin
  //Result:=AnsiLowerCase(S);
  Result:= S;
  P:= PChar(pointer(Result));
  PE:= P + Length(Result);
  while (P < PE) do
  begin
    while (P < PE) and CharInSet(P^, WordDelims) do
      inc(P);
    if (P < PE) then
      P^:= UpCase(P^);
    while (P < PE) and not (CharInSet(P^, WordDelims)) do
      inc(P);
  end;
end;

ShowMessage(AnsiProperCase('Suite No. 2 for Orchestra (1921 version): IV. Comodo',StdWordDelims)); //liefert: 'Suite No. 2 For Orchestra (1921 Version): IV. Comodo'
Auf den ersten Blick scheint alles zu funktionieren. Die erste Zeile musste ich auskommentieren, weil es in dem vorgesehenen Anwendungsgebiet keine Großbuchstaben an falscher Stelle gibt, die ersetzt werden müssen. Man sollte annehmen, dass das für das Ergebnis unerheblich ist. Aber in einem der Teststrings (s.o.) kamen römische Zahlen vor, die normalerweise mit Großbuchstaben dargestellt werden, und bei denen - unschön, aber logisch - nur das erste Zeichen groß geschrieben wurde. So scheint die Routine brauchbar zu sein, aber aus alter Erfahrung weiß ich, dass es bestimmt noch Fälle gibt, die nicht berücksichtigt sind. Warten wir's ab

Gruß LP

Geändert von Maekkelrajter (12. Sep 2019 um 22:26 Uhr)
  Mit Zitat antworten Zitat