Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Buchstaben weiterzählen (https://www.delphipraxis.net/29853-buchstaben-weiterzaehlen.html)

himitsu 15. Sep 2004 16:12

Re: Buchstaben weiterzählen
 
zählt von "a" bis "z":
Delphi-Quellcode:
for i := 1 to Lenght(text) do
  if text[i] < 'z' then text[i] := Chr(Ord(text[i])+1) else text[i] := 'a';

fes 15. Sep 2004 16:19

Re: Buchstaben weiterzählen
 
Das ist schonmal super! Danke!
Aber, neues Problem:
1. äöü wird in a umgewandelt.
2. Geht mit Großbuchstaben nicht.
3. Wenn ich die Buchstaben im 2er Schritt weiterzähl dann wird jedes z in ein a umgewandelt(müsste aber ein b sein) und der Buchstabe, der über z hinausgeht, wird auch ein Sonderzeichen!(z.B. y wird zu { )

Edit:
Hab das 2&3 Problem gelöst (Großbuchstaben werden in Kleinbuchstaben umgewandelt & drittens hab ich mit einer Schleife gelöst)
Nur wie durchsuche ich den String nach äöü und wandle diese in ae oe ue um?

glkgereon 15. Sep 2004 18:39

Re: Buchstaben weiterzählen
 
Delphi-Quellcode:
for i:=1 to length(text) do
  if text[i]='ä'
  then begin
       delete(text,i);
       insert(text,i,'ae');
       end;
und dann für alle...

da fällt mir grade ein: ich bin mir nicht sicher ob die wirklich delete und insert heissen...
gib ma innner hilfe strutils ein, und dann klick dich weiter, dann hast du da ne liste mit allen string-funktionen....

alcaeus 15. Sep 2004 18:42

Re: Buchstaben weiterzählen
 
Hi fes,

Anstatt Insert und Delete kannst du auch Delphi-Referenz durchsuchenStringReplace (oder wars Delphi-Referenz durchsuchenReplaceString :gruebel:) verwenden.
Das andere Problem wird eben etwas schwierig, aber ich hab im Moment leider keine Zeit (und kein Delphi) mir eine vernünftige Lösung einfallen zu lassen, sorry.

Greetz
alcaeus

himitsu 15. Sep 2004 18:43

Re: Buchstaben weiterzählen
 
Zitat:

Zitat von fes
Das ist schonmal super! Danke!
Aber, neues Problem:
1. äöü wird in a umgewandelt.
2. Geht mit Großbuchstaben nicht.
3. Wenn ich die Buchstaben im 2er Schritt weiterzähl dann wird jedes z in ein a umgewandelt(müsste aber ein b sein) und der Buchstabe, der über z hinausgeht, wird auch ein Sonderzeichen!(z.B. y wird zu { )

Also das Beispiel war jetzt nur für den Bereich von "a" bis "z" und mit einschrittiger Zählweise ausgelegt, aber es könnte auch noch leicht abgeändert/erweitert werden.

Wenn du mal genau angeben würdest, wie du zählen willst, dann könnte man da auch was machen.
Für mein Beispiel würde ich das dann mal so definieren: a>b, b>c ... y>z, z>a
Es ist vorallem wichtig, ob z.B. aus 'nem "C" ein "D", oder "d" werden soll

Hier werden z.B. die Groß- und Kleinbuchstaben (a-z, A-Z) in zwei schleifen durchgezählt:
Delphi-Quellcode:
for i := 1 to Lenght(text) do
  if text[i] in ['a'..'z'] begin
    if text[i] < 'z' then text[i] := Chr(Ord(text[i])+1) else text[i] := 'a';
  end else if text[i] in ['A'..'Z'] begin
    if text[i] < 'Z' then text[i] := Chr(Ord(text[i])+1) else text[i] := 'A';
  end;
und wenn man in mehreren Schritten Zählen will, dann könnte das so aussehn:
Delphi-Quellcode:
for i := 1 to Lenght(text) do
  if text[i] in ['a'..'z'] then begin
    if Chr(Ord(text[i])+3) <= 'z' then text[i] := Chr(Ord(text[i])+3) else text[i] := Chr(Ord(text[i])-25);
  end else if text[i] in ['A'..'Z'] then begin
    if Chr(Ord(text[i])+3) <= 'Z' then text[i] := Chr(Ord(text[i])+3) else text[i] := Chr(Ord(text[i])-25);
  end;
oder etwas kürzer:
Delphi-Quellcode:
for i := 1 to Lenght(text) do
  if text[i] in ['a'..'z', 'A'..'Z'] then
    if AnsiLowerCase(Chr(Ord(text[i])+3)) <= 'z' then text[i] := Chr(Ord(text[i])+3) else text[i] := Chr(Ord(text[i])-25);
Zitat:

Zitat von fes
Nur wie durchsuche ich den String nach äöü und wandle diese in ae oe ue um?

zum erstetzen von Zeichen > Hier im Forum suchenStringReplace ... da sollte massig zu finden sein und die OH wird auch nicht dazu schweigen


[add]
@glkbkk
das sollte so auch gehn, aber es geht auch einfacher :zwinker:

glkgereon 15. Sep 2004 18:51

Re: Buchstaben weiterzählen
 
:wall: :wall: :wall:
klar, strinreplace

also einfach dies:

Delphi-Quellcode:
  begin
  StringReplace(Text,'ä','ae');
  StringReplace(Text,'ö','oe');
  StringReplace(Text,'ü','ue');
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:21 Uhr.
Seite 2 von 2     12   

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