AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Buchstaben weiterzählen

Ein Thema von fes · begonnen am 15. Sep 2004 · letzter Beitrag vom 15. Sep 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#11

Re: Buchstaben weiterzählen

  Alt 15. Sep 2004, 17:12
zählt von "a" bis "z":
Delphi-Quellcode:
for i := 1 to Lenght(text) do
  if text[i] < 'zthen text[i] := Chr(Ord(text[i])+1) else text[i] := 'a';
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
fes

Registriert seit: 22. Mär 2004
33 Beiträge
 
Delphi 2005 Personal
 
#12

Re: Buchstaben weiterzählen

  Alt 15. Sep 2004, 17:19
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?
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#13

Re: Buchstaben weiterzählen

  Alt 15. Sep 2004, 19:39
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....
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#14

Re: Buchstaben weiterzählen

  Alt 15. Sep 2004, 19:42
Hi fes,

Anstatt Insert und Delete kannst du auch Delphi-Referenz durchsuchenStringReplace (oder wars Delphi-Referenz durchsuchenReplaceString ) 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
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#15

Re: Buchstaben weiterzählen

  Alt 15. Sep 2004, 19:43
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] < 'zthen text[i] := Chr(Ord(text[i])+1) else text[i] := 'a';
  end else if text[i] in ['A'..'Z'] begin
    if text[i] < 'Zthen 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) <= 'zthen 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) <= 'Zthen 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)) <= 'zthen text[i] := Chr(Ord(text[i])+3) else text[i] := Chr(Ord(text[i])-25);
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#16

Re: Buchstaben weiterzählen

  Alt 15. Sep 2004, 19:51

klar, strinreplace

also einfach dies:

Delphi-Quellcode:
  begin
  StringReplace(Text,'ä','ae');
  StringReplace(Text,'ö','oe');
  StringReplace(Text,'ü','ue');
  end;
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:23 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