![]() |
Buchstaben hochzählen
Hallo,
irgendwie hänge ich gerade. Ich suche nach einer Funktion, die mir die Buchstaben "hochzählt"; also erst "A", dann "B" etc. Wenn "Z" ereicht ist, soll es mit "AA" weitergehen (so ungefähr wie in Excel). "A"+1 geht ja nicht. Gibt es da andere Möglichkeiten? |
Re: Buchstaben hochzählen
Moin Catbytes,
was hältst Du von ord('A')+1 ? |
Re: Buchstaben hochzählen
da im ASCII-Code die Buchstaben sinnvollerweise alle hintereinander angeordnet sind, könntest Du damit was anfangen.
"A" liegt bei dezimal 65 und "Z" bei dezimal 90. Du kannst Dir also eine Schleife bauen, die nacheinander die ASCII-Zeichen von 65 - 90 ausgibt. Ein klein wenig Hirnschmalz und Delphi-Hilfe und DelphiPraxis-Suche könnte Dir weiterhelfen... |
Re: Buchstaben hochzählen
Zitat:
Grüße Faux |
Re: Buchstaben hochzählen
Hallo Catbytes,
ich erinnere mich noch an diesen thread: ![]() Grüße vom marabu |
Re: Buchstaben hochzählen
ich hätte es auch über die ASCII Werte gemacht
|
Re: Buchstaben hochzählen
Wird vielleicht so was gesucht (?):
Delphi-Quellcode:
//NumberToLiteralNumber
function NumToLitNum(n:Int64):string; //n=0-a,1-b,25-z,26-aa,27-ab,... const cLiteralCount=26; function GetLiteral(z:Integer):string; begin result:=Chr(65+z); end; var i:Integer; begin result:=''; While n>=cLiteralCount do begin i:=n div cLiteralCount; result:=GetLiteral(n-(i*cLiteralCount))+result; n:=i-1; end; result:=GetLiteral(n)+result; end; |
Re: Buchstaben hochzählen
Herzlich willkommen in der Delphi-PRAXiS, s03.
Dein Code funktioniert gut, allerdings würde ich ihn so implementieren:
Delphi-Quellcode:
Mehr als 64K Spalten erwarte ich nicht.
// return Excel column name for zero based column index
function IndexToName(n: Word): String; begin Result := ''; repeat Result := Chr(Ord('A') + n mod 26 - Ord(Result <> '')) + Result; n := n div 26; until n = 0; end; Freundliche Grüße vom marabu |
Re: Buchstaben hochzählen
Hallo
Ja, sieht interessant aus :-). Zwar verstehe ich was da passiert, befürchte aber, dass ich selber zu solchen Kunststückchen nicht fähig bin (außer ich trimme darauf). Was int64 betrieft, habe ich mich nicht ganz auf den Excel konzentriert. Vielleicht möchte jemand einfach eine 18 (oder 19) stellige IntZahl zu einem Buchstabensalat umwandeln. Für Excel würde in 98% der Fälle byte ausreichen. Na ja, wie dem auch sei :-). Danke für den schlanken Code :-). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 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