Delphi-PRAXiS
Seite 1 von 3  1 23   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi groß/kleinschreibung (https://www.delphipraxis.net/63994-gross-kleinschreibung.html)

m.p.h. 25. Feb 2006 21:36


groß/kleinschreibung
 
hallo leute.
hab ein problem:

aus
hErMAn mEieR

soll
Herman Meier gemacht werden.
Wie kann man Namen so mit einer delphi-function formatieren?
:cry:

Matze 25. Feb 2006 21:48

Re: groß/kleinschreibung
 
Hi, herzlich willkommen!

Das ist etwas unperformant und auf die Schnelle hingecoded, müsste aber gehen:

Delphi-Quellcode:
function CreateCorrectName(MyName: string): string;
var
  i: Integer;
  TempName: string;
begin
  TempName := MyName;
  TempName := LowerCase(TempName);

  for i := 1 to Length(MyName) do
  begin
    if i = 1 then
      TempName[i] := UpperCase(TempName[i])[1] else
    if TempName[i - 1] = ' ' then
      TempName[i] := UpperCase(TempName[i])[1]
  end;

  result := TempName;
end;
Nur wenn das tausende Namen sind, die du formatieren musst, würde ich wohl nach einer anderen Lösung suchen. :zwinker:


Edit: Da war eine Zeile zuviel. ^^

alzaimar 25. Feb 2006 21:50

Re: groß/kleinschreibung
 
Du gehst einfach iterativ durch den String durch. Der erste Buchstabe nach einem Leerzeichen (oder der erste buchstabe überhaupt) wird groß, der Rest klein geschrieben.
Delphi-Quellcode:
Var
  bFirst : boolean;
  i : Integer;

Begin
  bFirst := True; // <-- Nachträglich eingefügt
  For i := 1 to Length (aWord) do Begin
    If bFirst Then begin
      aWord[i] := Upc(aWord[i]);
      bFirst := False;
      end
    else
      aWord[i] := LowerCase(aWord[i]);
    bFirst := (aWord[i]=' ');
  End;
End;

Nicolai1234 25. Feb 2006 21:55

Re: groß/kleinschreibung
 
Kann man nicht ersteinmal alle klein machen und dann über pos(' ')+1 die ersten Buchstaben großmachen? Da sollte doch schneller gehen, oder?

markusj 25. Feb 2006 22:03

Re: groß/kleinschreibung
 
Hallo,

du lässt eine Schleife von 1 bis length(string) über den String laufen und checkst in dieser Schleife ob du:
a) ein Leerzeichen hast, wenn ja wird das nächste Zeichen Großgeschrieben
b) kein Leerzeichen hast, dann wird das aktuelle Zeichen, wenn nicht durch a) ein durchlauf vorher "markiert" kleingeschrieben

Klein und Großschreibung geht mit uppercase und lowercase

mfG

Markus

Delphi-Quellcode:
function correctName(str : string):string;
var up : boolean;
var i : integer;
begin
 up := false;
 str[1] := uppercase(str[1]);
 for i := 2 to length(str) do
  begin
  if str[i] <> ' ' then
   begin
   if up then str[i] := uppercase(str[i) else str[i] := lowercase(str[i]);
   up := false;
   end else
   begin
   up := true;
   end;
  end;
 result := str;
end;
EDIT: @ Nikolai: Oder man machts so wie ich (oder dein Vorredner) und macht alles klein, was nicht groß werden soll
Ups, ich stelle gerade fest, dass der Code meines VorVorrednera eigentlich identisch mit meinem ist ... Pech gehabt ^^

alzaimar 25. Feb 2006 22:10

Re: groß/kleinschreibung
 
Zitat:

Zitat von Nicolai1605
Kann man nicht ersteinmal alle klein machen und dann über pos(' ')+1 die ersten Buchstaben großmachen? Da sollte doch schneller gehen, oder?

Nein, denn dann gehst du den String 2x durch. So, wie markusj und ich es vorgeschlagen haben, ist es optimal schnell (zumindest vom Verfahren). Ein paar Prozentchen dürfte man noch mit ASM rauskitzeln. Vielleicht.

Matze 25. Feb 2006 22:17

Re: groß/kleinschreibung
 
Zitat:

Zitat von alzaimar
Nein, denn dann gehst du den String 2x durch. So, wie markusj und ich es vorgeschlagen haben, ist es optimal schnell (zumindest vom Verfahren).

Sicher? Ich denke, mein Verfahren ist etwas schneller, da LowerCase bei mir nur ein einziges Mal aufgerufen wird und nicht für jeden Buchstaben, der klein zu schreiben ist.

Aber kann ich selbstverständlich irren.

Daniel G 25. Feb 2006 22:17

Re: groß/kleinschreibung
 
Sagt mal, geht das nur mir so, oder fehlt in alzaimars Code trotz der Deklaration als "Delphi-Code" das Syntaxhighlighting? :gruebel:

Matze 25. Feb 2006 22:18

Re: groß/kleinschreibung
 
Zitat:

Zitat von Daniel G
Sagt mal, geht das nur mir so, oder fehlt in alzaimars Code trotz der Deklaration als "Delphi-Code" das Syntaxhighlighting? :gruebel:

Geht mir ebenfalls so, da muss ein kleiner Bug im Caching-/Parsing-System o.ä. vorliegen. Den genauen Fehler konnte Daniel imho noch nicht entdecken.

Flare 25. Feb 2006 22:25

Re: groß/kleinschreibung
 
ich würde sagen, dass bei dem code das highlightening fehlt, weil dort die begriffe, die normalerweise ge-highlightet werden alle groß geschrieben sind und es deswegen nicht werden.

Flare


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:53 Uhr.
Seite 1 von 3  1 23   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz