Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Gegenteil von UpCase bei Char? (https://www.delphipraxis.net/146352-gegenteil-von-upcase-bei-char.html)

stho 18. Jan 2010 16:11


Gegenteil von UpCase bei Char?
 
Hallo Leute

Auch wenn ich heute ein bisschen viel im Forum schreibe, aber eine letzte Sache hab ich noch auf dem Herzen...

Fast jeder von euch kennt ja die UpperCase() und die LowerCase() funktionen...
die klasse der Chars hat da auch so eine Funktion. UpCase heißt sie...

Doch wie heißt die LowerCase()-Variante für chars?
Ich habs beim besten Willen nicht gefunden :-(
bin grad ziemlich ratlos...

MarioM. 18. Jan 2010 16:19

Re: Gegenteil von UpCase bei Char?
 
Gibt es, warum auch immer, nicht.

Du kannst sie Dir aber analog zu UpCase auch selber schreiben:
Delphi-Quellcode:
Function LowCase(ch: Char): Char;
Begin
   Result := ch;
   Case Result Of
      'A'..'Z': Dec(Result, Ord('A') - Ord('a'));
   End;
End;

himitsu 18. Jan 2010 16:21

Re: Gegenteil von UpCase bei Char?
 
Man mag es nicht glauben, aber das gibt es nicht. :angel:

kann man sich aber selber basteln:
Delphi-Quellcode:
function LoCase(ch: AnsiChar): AnsiChar; overload;
begin
  Result := Ch;
  if Result in ['A'..'Z'] then Inc(Result, $20);
end;

function LoCase(Ch: WideChar): WideChar; overload;
begin
  case Ch of
    'A'..'Z': Result := WideChar(Word(Ch) or $0020);
    else     Result := Ch;
  end;
end;
[edit]
war etwas langsam :stupid:

[edit]
warum hatte ich das UpCase nicht in LoCase umbenannt?

stho 18. Jan 2010 16:23

Re: Gegenteil von UpCase bei Char?
 
vielen tausend dank leute :-)

ich dachte ich bin zu blöd das zu finden ^^
aber wenns die funktion tatsächlich nicht gibt bin ich wohl doch net zu doof ;-)

Vielen tausend Dank :dp:

p80286 18. Jan 2010 16:35

Re: Gegenteil von UpCase bei Char?
 
Bitte nicht vergessen
Delphi-Quellcode:
case Ch of
 ....
  'Ä' : result:='ä';
  'Ö' : result:='ö';
  'Ü' : result:='ü';
....
end;
Gruß
K-H

Wolfgang Mix 18. Jan 2010 16:43

Re: Gegenteil von UpCase bei Char?
 
MarioM schrieb
Zitat:

Du kannst sie Dir aber analog zu UpCase auch selber schreiben:
... oder kürzer
Delphi-Quellcode:
Function LowCase(ch: Char): Char;
Begin
   Result := ch;
   Case Result Of
      'A'..'Z': Dec(Result,-32));
   End;
End;

himitsu 18. Jan 2010 16:52

Re: Gegenteil von UpCase bei Char?
 
@p80286: UpCase und demnach auch Lo(w)Case arbeiter nur mit ASCII und demnach gibt es kein äöü :zwinker:

Darum steht auch in der OH, man solle statt UpCase/UpperCase besser AnsiUpperCase verwenden.

Reinhard Kern 18. Jan 2010 17:34

Re: Gegenteil von UpCase bei Char?
 
Hallo,

da wir in Deutschland sind, nützen uns Funktionen ohne Umlaute so gut wie nichts, auch das gute alte UpCase nicht. Und da wir auch woanders wohnen könnten, sollte alles vom Sprachtreiber geregelt werden, also keine case-Anweisung mit Ä usw. Für das gewünschte empfiehlt sich daher die Verwendung der Windows-Funktion CharLower:

Delphi-Quellcode:
function DownCase (uch : char) : char;
begin
Result := CharLower(@uch)^;
end;
liefert ä für Ä.

Gruss Reinhard

p80286 18. Jan 2010 17:47

Re: Gegenteil von UpCase bei Char?
 
@himitsu
Bitte etwas Verständnis für einen TurboPascal geschädigten.

wir haben's damals so gemacht weil weit und breit kein Ansi.. zu kriegen war.

Und überhaupt AnsiLowCase(CH) gibt's ja wohl auch nicht.

@Reinhard

bitte das hier nicht übersehen:
Remarks
Zitat:

Note that CharLower always maps uppercase I to lowercase I, even when the current language is Turkish or Azeri.
Gruß
K-H

himitsu 18. Jan 2010 18:13

Re: Gegenteil von UpCase bei Char?
 
Zitat:

Zitat von p80286
Und überhaupt AnsiLowCase(CH) gibt's ja wohl auch nicht.

Delphi-Referenz durchsuchenAnsiLowerCase

PS: ab D2009 ist AnsiLowerCase standardmäßig Unicode :wall:

Reinhard Kern 18. Jan 2010 23:46

Re: Gegenteil von UpCase bei Char?
 
Zitat:

Note that CharLower always maps uppercase I to lowercase I, even when the current language is Turkish or Azeri.
Als Nichttürken sagt mir das wenig, aber grundsätzlich: bevor es eine Software gibt, die in ALLEN Sprachen der Erde ALLES richtig macht, sind wahrscheinlich die meisten Sprachen ausgestorben und das Problem hat sich damit erledigt. Trotzdem gibt es keine Alternative dazu, BS-Eigenschaften zu benutzen, die schon für hunderte Sprachen definiert sind, anstatt das alles selbst mit case zu programmieren (nach aktuellem Unicode-Umfang müsste die case-Anweisung mehr als 100000 Fälle unterscheiden).

Gruss Reinhard

p80286 19. Jan 2010 12:59

Re: Gegenteil von UpCase bei Char?
 
@Himitsu

beachte bitte den kleinen Unterschied
AnsiLowCase und AnsiLowerCase
erstere sollte die Funktion für einen einzelnen Char sein. Für einen String kann das schließlich jeder.
ich sag das auch nie wieder, bitte nicht schlagen.

@Reinhard
nun der Unterschied zwischen I mit i-Punkt und ohne ist ähnlich dem Unterschied zwischen Ä und A.
Es gibt diese Ausnahme, und das sollte man wissen bzw. im Hinterkopf haben.

Gruß
K-H

Reinhard Kern 19. Jan 2010 18:03

Re: Gegenteil von UpCase bei Char?
 
[quote="p80286@Reinhard
nun der Unterschied zwischen I mit i-Punkt und ohne ist ähnlich dem Unterschied zwischen Ä und A.
Es gibt diese Ausnahme, und das sollte man wissen bzw. im Hinterkopf haben.
[/quote]

aber eine klitzekleine Verbesserung gegenüber UpCase ganz ohne Umlaute könntest du der Lösung doch zugestehen? Bitte Bitte

Ich zwinge doch auch niemanden, die Funktion zu benutzen, wie schon Marx und Engels sagten, war ja bloss mal sone Idee.

Gruss Reinhard

p80286 20. Jan 2010 09:30

Re: Gegenteil von UpCase bei Char?
 
@Reinhard

Zitat:

Zitat von Reinhard Kern

aber eine klitzekleine Verbesserung gegenüber UpCase ganz ohne Umlaute könntest du der Lösung doch zugestehen? Bitte Bitte

Aber nur weil Du es bist.

Nein keine Frage, besser als das (7Bit-)ASCII-Upcase auf jeden Fall, und für die meisten Programme locker ausreichend, aber es gibt da kleine Unregelmäßigkeiten und nur darauf wollte ich hinweisen.
(vielleicht gibts ja noch einen den das ab und an mal interessieren muß)

Gruß
K-H

Reinhard Kern 20. Jan 2010 13:32

Re: Gegenteil von UpCase bei Char?
 
Zitat:

Zitat von p80286
... und für die meisten Programme locker ausreichend, aber es gibt da kleine Unregelmäßigkeiten und nur darauf wollte ich hinweisen.
(vielleicht gibts ja noch einen den das ab und an mal interessieren muß)

Wenn ich das richtig interpretiere, gibt es mehrere kleine i und nur 1 grosses I, da kann das garnicht funktionieren - Upper und Lower Case Funktionen sind eben nur möglich, wenn die Zuordnung in beiden Richtungen eindeutig ist. Wahrscheinlich kommt das in den Weltsprachen noch öfter vor, aber wir brauchen uns auch da garnicht über die Türken lustig machen oder sie aus der EU ausschliessen, bei uns gibt es vergleichbaren Mist: das kleine scharfe ß kann man zwar in SS umwandeln, aber es führt kein Weg zurück.

Meiner Ansicht nach ist ß sowieso der dümmste Buchstabe aller Sprachen der Welt. Leider haben nur die Schweizer Mut und Vernuft genug aufgebracht ihn abzuschaffen. Unsere nahezu bewegungsunfähige Kulturbürokratie ist nicht dazu in der Lage.

Gruss Reinhard

himitsu 20. Jan 2010 13:51

Re: Gegenteil von UpCase bei Char?
 
Im den (vor)letzten Unicodestandard sind auch noch extra Zeichen (Codes) für "normale" Buchstaben (a-z) eingeführt wurden.
- Fettschrift, Kursiv usw. damit man diese auch ohne Umstellen der Schrifteigenschaften direkt darstellen kann.

Also direkt Vergleichen kann man nicht.


PS: Upper/Lower-Case ist recht eindeutig und es gibt nur wenige Fälle, wo X <> Upper(Lower(X)) ist.

mz23 24. Jan 2010 17:44

Re: Gegenteil von UpCase bei Char?
 
Tja, wer kennt das nicht!

Zitat:

...das kleine scharfe ß kann man zwar in SS umwandeln...
und das große "ß" sucht man auf der Tastatur verzweifelt:)

Früher wurde "sz" geschrieben und irgendjemand hat dann ein "ß" daraus gemacht.
Heute ist man wieder versucht diesen Buchstaben loszuwerden. Dabei sind wir
Deutschen mit unseren drei harmlosen Umlauten ä ö ü noch gut dran.

Mit freundlichen Grüßen
Manfred Zenns

FAlter 24. Jan 2010 18:09

Re: Gegenteil von UpCase bei Char?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

Zitat:

Zitat von mz23
Früher wurde "sz" geschrieben und irgendjemand hat dann ein "ß" daraus gemacht.

Von der Schreibweise: ja. Von der Bedeutung hat es nie etwas mit z zu tun gehabt (z = Aussprache ts), es wurde niemals "sts" ausgespruchen. Früher war ß eine Kombination aus dem "langen" s und dem "Schluss"-s. Das Wort Schluss demonstriert das. Am Schluss von Schluss steht das Schluss-S, also folgten hier langes s und Schluss-s aufeinander. Daraus wurde dann das Wort ß und es hieß Schluß. Heute heißt es wieder Schluss, aber ohne zwei verschiedene "s"e. Es sei denn, man verwendet noch den Fraktursatz. Dann schreibt man Schluss neuerdings mit langem s, gefolgt vom Schluss-s. Das sieht absolut hässlich (oder häßlich) aus. Daher verstehe ich schon warum einst das ß erfunden wurde.

Vor allem, wie sieht denn jetzt das Flussschifft aus? Flu- langes s - Schluss-s - langes s - chiff? Das kann kein Mensch mehr lesen. (Siehe Anhang - sorry, mit Maus schreibts sich nicht gut...)

Gerade die Unterscheidung des Kleinbuchstaben s ist es, was wohl am meisten daran hindert, heute am PC einfach eine normale Frakturschrift zu installieren - oder gibt es dafür schon ein Unicode-Zeichen? Selbst wenn, ich finde den Buchstaben nicht auf meiner Tastatur. Notfalls würde ich aber sowas wie AltGr+S akzeptieren (für das Schluss-s).

Gruß
FAlter

Matze 24. Jan 2010 18:23

Re: Gegenteil von UpCase bei Char?
 
Zitat:

Zitat von mz23
Früher wurde "sz" geschrieben und irgendjemand hat dann ein "ß" daraus gemacht.
Heute ist man wieder versucht diesen Buchstaben loszuwerden.

Das ist nur z.T. richtig

p80286 25. Jan 2010 09:29

Re: Gegenteil von UpCase bei Char?
 
Kleiner Nachtrag zum türkischen i:
es gibt im türkischen ein i mit i-Punkt und eins ohne, dies gilt sowohl für die Groß- als auch für die Kleinschreibung. Für Türken sind unsere beiden i's also zwei unterschiedliche Buchstaben, einmal mit Punkt (i) einmal ohne (I).

İi Iı

Gruß
K-H

himitsu 25. Jan 2010 09:43

Re: Gegenteil von UpCase bei Char?
 
Zitat:

Zitat von p80286
Kleiner Nachtrag zum türkischen i:

Seitens Windows wird dieses nicht, bei der Groß-/Kleinschreibung, beachtet.
(die arme unterdrückte türkische Minderheit :cry: )
Jedenfalls in einem deutschen Windows.

Delphi-Quellcode:
Edit1.Text := '&#304;&#305;';
Edit2.Text := AnsiUpperCase(Edit1.Text) + ' ' + AnsiLowerCase(Edit1.Text);

// Edit2.Text = '&#304;&#305; &#304;&#305;';
(nicht über's Ansi wundern ... wurde in D2010 getestet und da isses ja Unicode)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 Uhr.

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