Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

Nicolai1234 25. Feb 2006 21:28

Re: groß/kleinschreibung
 
nein, daran liegt es nicht! Code von alzaimar in "richtiger" Form:
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;

Peter Mössinger 25. Feb 2006 22:54

Re: groß/kleinschreibung
 
Hallo Nicolai1605,

ich denke so klappt es auch und ist noch etwas schöner:

Delphi-Quellcode:
Var
  bFirst : boolean;
  i : Integer;

Begin
  bFirst := True;
  For i := 1 to Length (aWord) do Begin
    If bFirst Then aWord[i] := Upc(aWord[i])
     else aWord[i] := LowerCase(aWord[i]);
    bFirst := (aWord[i]=' ');
  End;
End;

danku 17. Mai 2006 15:37

Re: groß/kleinschreibung
 
Zitat:

Zitat von Matze
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. ^^

hab das mit einer tstringgrid probiert aber keine reaktion ergab sich in der. :gruebel:

himitsu 17. Mai 2006 15:44

Re: groß/kleinschreibung
 
Wie wäre es in der Art

Delphi-Quellcode:
Function CreateCorrectName(Const MyName: String): String;
  Var i: Integer;

  Begin
    Result := AnsiLowerCase(Trim(MyName));
    If Result = '' Then Exit;
    i := 1;
    While i > 0 do Begin
      Result[i] := UpperCase(Result[i]);
      i := PosEx(' ', Result, i);
      If i <> 0 Then Inc(i);
    End;
  End;
PS: Wer hat behauptet, daß das erste Zeichen nicht auch schon ein Leerzeichen ist und ob überhaupt was eingegeben wurde?

TeronG 17. Mai 2006 15:51

Re: groß/kleinschreibung
 
Zitat:

Zitat von Peter Mössinger
Hallo Nicolai1605,

ich denke so klappt es auch und ist noch etwas schöner:

Delphi-Quellcode:
Var
  bFirst : boolean;
  i : Integer;

Begin
  bFirst := True;
  For i := 1 to Length (aWord) do Begin
    If bFirst Then aWord[i] := Upc(aWord[i])
     else aWord[i] := LowerCase(aWord[i]);
    bFirst := (aWord[i]=' ');
  End;
End;

du setzt aber bFirst nicht mehr auf False

Zitat:

Zitat von himitsu
PS: Wer hat behauptet, daß das erste Zeichen nicht auch schon ein Leerzeichen ist und ob überhaupt was eingegeben wurde?

Da hat der mann mit den schönen Bäumen wohl recht ^^

himitsu 17. Mai 2006 15:57

Re: groß/kleinschreibung
 
Außerdem muß ein Name ja nicht unbedingt per " " getrennt sein ... Doppelnamen werden oft per "-" getrennt und wenn man zuerst den Nachnamen angibt, mach man im Allgemeinen ein "," rein.
Delphi-Quellcode:
Function CreateCorrectName(Const MyName: String): String;
  Var i: Integer;

  Begin
    Result := AnsiLowerCase(Trim(MyName));
    i := 1;
    While i <= Length(Result) do Begin
      Result[i] := UpperCase(Result[i]);
      While (i <= Length(Result) and not (Result[i] in [' ', '-', ',']) do Inc(i);
      Inc(i);
    End;
  End;
In dem Code wird zwar bei mehreren aufeinanderfolgenden " ", "-" und/oder "," zwar unnötig versucht eines der Zeichen Großzuschreiben, aber dat is ja eigentlich egal ... jedenfalls wäre 'ne Abfrage um das zu verhindern nicht sehr viel Performanceeinbringender ^^

danku 17. Mai 2006 15:58

Re: groß/kleinschreibung
 
klar. ich test das jetzt mal in meiner stringgrid mit der 1.spalte.
cya

Dale 17. Mai 2006 16:04

Re: groß/kleinschreibung
 
Hallo,

eine andere Möglichkeit wäre es mit Hilfe einer Stringliste zu lösen:

Delphi-Quellcode:
FUNCTION CreateCorrectName(MyName: STRING): STRING;
VAR

  i   : Integer;
  Liste: TStrings;
 
BEGIN

  Liste := TStringList.Create;
  Liste.Delimitier := ' ';              // Hier muss natürlich ein Leerzeichen stehen
  Liste.DelimitedText := MyName;
 
  FOR i := 0 TO Liste.Count - 1 DO
    Liste[i] := UpperCase(Liste[i]);    // und da hat eine Klammer gefehlt
   
  Result := Liste.DelimitedText;
 
  Liste.Free;
 
END;
Grüße von Dale

TeronG 17. Mai 2006 16:08

Re: groß/kleinschreibung
 
Delphi-Quellcode:
MyName[i] := UpperCase(MyName[i]);
Zitat:

[Fehler] Unit1.pas(35): Inkompatible Typen: 'Char' und 'String'
evtl. MyName[i] := UpCase(MyName[i]);

Delphi-Quellcode:
While not (MyName[i] in [' ', '-', ',']) do Inc(i);
Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 0044E282 in Modul 'Project1.exe'. Lesen von Adresse 00CF4000'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------

himitsu 17. Mai 2006 16:12

Re: groß/kleinschreibung
 
Tut mir leid, hab halt die Parameter von UpCase nicht im Kopf ... schau mal in die OH, aber vielleicht hilf da
UpCase(MyName[i])[1];

Und wegen der "linken Seite" ... geh nochmal in meinen Post da oben (hatte einiges durch Result ersetzt :zwinker: und gerade noch ein (i <= Length(Result) and eingefügt :stupid: )


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:26 Uhr.
Seite 2 von 3     12 3      

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