![]() |
Zählen mit dem Alphabet
Habe folgende Funktion
Delphi-Quellcode:
die über "Buchstaben" hochzählen soll.
function ErhoeheBuchstabe (sNummer : String) : String;
begin if Length (sNummer) = 1 then begin if sNummer = 'Z' then begin sNummer := 'AA'; end else begin sNummer := Chr(Ord(sNummer[1]) + 1); end; end; if Length (sNummer) = 2 then begin if sNummer[2] = 'Z' then begin if sNummer[1] = 'Z' then 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; 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 ? |
Re: Zählen mit dem Alphabet
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; |
Re: Zählen mit dem Alphabet
@idontwantaname
Danke. Wenn man's weiss - ist es einfach |
Re: Zählen mit dem Alphabet
Hallo,
hier noch eine Lösung ohne Rekursion:
Delphi-Quellcode:
Benötigt die Unit StrUtils.
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] < 'Z' then 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; Ist ca. 1/3 schneller, da nicht jedesmal zusätzliche Strings benötigt werden. Startet bei leerem String einfach mit A. Gruß xaromz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 Uhr. |
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