AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

groß/kleinschreibung

Ein Thema von m.p.h. · begonnen am 25. Feb 2006 · letzter Beitrag vom 22. Mai 2006
Antwort Antwort
Seite 2 von 3     12 3   
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: groß/kleinschreibung

  Alt 25. Feb 2006, 22:28
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;
  Mit Zitat antworten Zitat
Peter Mössinger

Registriert seit: 26. Jul 2005
Ort: Mainz
31 Beiträge
 
Delphi 7 Professional
 
#12

Re: groß/kleinschreibung

  Alt 25. Feb 2006, 23:54
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;
Peter Mössinger
Tischtennis-Ergebnisdienst des RTTV (Rheinhessischen TT Verbandes)
http://ergebnisdienst.rttv.de
Delphi + Kylix!!
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: groß/kleinschreibung

  Alt 17. Mai 2006, 16:37
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.


Edit: Da war eine Zeile zuviel. ^^
hab das mit einer tstringgrid probiert aber keine reaktion ergab sich in der.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.965 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: groß/kleinschreibung

  Alt 17. Mai 2006, 16:44
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?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#15

Re: groß/kleinschreibung

  Alt 17. Mai 2006, 16:51
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 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 ^^
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.965 Beiträge
 
Delphi 10.4 Sydney
 
#16

Re: groß/kleinschreibung

  Alt 17. Mai 2006, 16:57
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 ^^
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: groß/kleinschreibung

  Alt 17. Mai 2006, 16:58
klar. ich test das jetzt mal in meiner stringgrid mit der 1.spalte.
cya
  Mit Zitat antworten Zitat
Dale

Registriert seit: 7. Apr 2006
Ort: Alsdorf
42 Beiträge
 
Delphi 2006 Professional
 
#18

Re: groß/kleinschreibung

  Alt 17. Mai 2006, 17:04
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
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#19

Re: groß/kleinschreibung

  Alt 17. Mai 2006, 17:08
MyName[i] := UpperCase(MyName[i]);
Zitat:
[Fehler] Unit1.pas(35): Inkompatible Typen: 'Char' und 'String'
evtl. MyName[i] := UpCase(MyName[i]);

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
---------------------------
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.965 Beiträge
 
Delphi 10.4 Sydney
 
#20

Re: groß/kleinschreibung

  Alt 17. Mai 2006, 17:12
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 und gerade noch ein (i <= Length(Result) and eingefügt )
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf