![]() |
Char To Numeric
Guden zusammen,
Habe grad ein kleines Problem bei der umwandlung von Buchstaben zu Zahlen. Undzwar möchte ich das zb. ein A in 1 oder ein AA in 27 umgewandelt wird. Folgende funktion habe ich, die auch wunderbar mit einstelligen Buchstaben [A-Z] funktioniert, sich jedoch bei AA oder AB weigert einfach den entpsrechenden Index zu addieren.
Delphi-Quellcode:
Warum z.T. :wiejetzt: Addiert er nicht den Aktuellen Index??
function CharToNumeric(char: String): integer;
var numeric: integer; i: integer; begin numeric := 0; for i := 1 to Length(char) do begin numeric := numeric + (Ord(char[1]) - 64); end; Result := numeric; end; LG Toby |
Re: Char To Numeric
vllt musst du (Ord(char[1])-64) mit (Ord(char[i])-64) ersetzen
|
Re: Char To Numeric
Die Multiplikation mit der entsprechenden 26er-Potenz darfst du natürlich auch nicht vergessen.
|
- erledigt - Re: Char To Numeric
Zitat:
EDIT:
Delphi-Quellcode:
function CharToNumeric(char: String): integer;
var numeric, faktor: integer; i: integer; begin numeric := 0; for i := 1 to Length(char) do begin faktor := (i * 26) - 26; numeric := numeric + (Ord(char[i]) - 64) + faktor; end; Result := numeric; end; Gibt auch selbst bei AA -> 2 aus, sollte aber 27 sein. Warum!? |
Re: Char To Numeric
Hallo Tobias,
versuche es einmal mit folgendem Code:
Delphi-Quellcode:
Falls du den Code nicht nachvollziehen kannst, findest du vielleicht in der Wikipedia die nötigen Informationen zu
function CharToNumeric(char: String): integer;
var numeric: integer; i: integer; begin numeric := 0; for i := 1 to Length(char) do begin numeric := 26 * numeric + (Ord(char[i]) - 64); end; Result := numeric; end; ![]() Noch einige Hinweise: vermeide nach Möglichkeit die Neudefinition vordefinierter Bezeichner (hier: char), das stiftet nur Verwirrung. Die lokale Variable numeric benötigst du nicht, du kannst direkt mit dem Rückgabewert Result arbeiten. Weiterhin solltest du berücksichtigen, daß man deiner Funktion etwas anderes als Großbuchstaben übergeben kann. Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 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