AGB  ·  Datenschutz  ·  Impressum  







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

Zählen mit dem Alphabet

Ein Thema von trifid · begonnen am 9. Feb 2006 · letzter Beitrag vom 9. Feb 2006
Antwort Antwort
Benutzerbild von trifid
trifid

Registriert seit: 12. Sep 2003
297 Beiträge
 
#1

Zählen mit dem Alphabet

  Alt 9. Feb 2006, 19:19
Habe folgende Funktion

Delphi-Quellcode:
   function ErhoeheBuchstabe (sNummer : String) : String;
   begin
      if Length (sNummer) = 1 then
      begin
         if sNummer = 'Zthen
         begin
            sNummer := 'AA';
         end else begin
            sNummer := Chr(Ord(sNummer[1]) + 1);
         end;
      end;
      if Length (sNummer) = 2 then
      begin
         if sNummer[2] = 'Zthen
         begin
            if sNummer[1] = 'Zthen
            begin
               sNummer := 'AAA';
            end else begin
               sNummer := Chr(Ord(sNummer[1]) + 1) + 'A';
            end;
         end else begin
            sNummer[2] := Chr(Ord(sNummer[2]) + 1);
         end;
      end;
      ErhoeheBuchstabe := sNummer;
   end;
die über "Buchstaben" hochzählen soll.

aus A wird B
aus S wird T
aus Z wird AA
aus AS wird AT
aus AZ wird BA
aus YT wird YU
aus ZZ wird AAA

Geht das allgemeiner und elleganter ?
  Mit Zitat antworten Zitat
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Zählen mit dem Alphabet

  Alt 9. Feb 2006, 19:53
Ja, und zwar durch eine Rekursion
Delphi-Quellcode:
function ErhoeheBuchstabe(const Str: String): String;
var
  Index: Integer;
  Temp: String;
begin
  Temp := UpperCase(Str);
  Index := Length(Temp);
  if(Succ(Ord(Temp[Index])) <= Ord('Z')) then
  begin
    Temp[Index] := Chr(Succ(Ord(Temp[Index])));
    Result := Temp;
  end else
    if(Index > 1) then
      Result := ErhoeheBuchstabe(Copy(Temp, 1, Index-1)) + 'A'
    else
      Result := 'AA';
end;
Oliver Hanappi
  Mit Zitat antworten Zitat
Benutzerbild von trifid
trifid

Registriert seit: 12. Sep 2003
297 Beiträge
 
#3

Re: Zählen mit dem Alphabet

  Alt 9. Feb 2006, 20:02
@idontwantaname
Danke.
Wenn man's weiss - ist es einfach
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: Zählen mit dem Alphabet

  Alt 9. Feb 2006, 22:24
Hallo,

hier noch eine Lösung ohne Rekursion:
Delphi-Quellcode:
function ErhoeheBuchstabe(const Str: String): String;
var
  L, Index: Integer;
  C: Integer;
begin
  Result := UpperCase(Str);
  L := Length(Result);
  Index := L;

  while Index > 0 do
  begin
    if Result[Index] < 'Zthen
    begin
      Inc(Result[Index]);
      for C := Index + 1 to L do
        Result[C] := 'A';
      Exit;
    end else
      if Index = 1 then
      begin
        Result := DupeString('A', L + 1);
        Exit;
      end;
    Dec(Index);
  end;
  Result := 'A';
end;
Benötigt die Unit StrUtils.

Ist ca. 1/3 schneller, da nicht jedesmal zusätzliche Strings benötigt werden. Startet bei leerem String einfach mit A.

Gruß
xaromz
  Mit Zitat antworten Zitat
Antwort Antwort


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