AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Elegante Lösung gesucht: String aus Charset aufbauen
Thema durchsuchen
Ansicht
Themen-Optionen

Elegante Lösung gesucht: String aus Charset aufbauen

Ein Thema von ThE_-_BliZZarD · begonnen am 5. Okt 2009 · letzter Beitrag vom 7. Okt 2009
Antwort Antwort
ThE_-_BliZZarD

Registriert seit: 15. Sep 2006
Ort: Wiesbaden/Hessen
89 Beiträge
 
Delphi 2010 Professional
 
#1

Elegante Lösung gesucht: String aus Charset aufbauen

  Alt 5. Okt 2009, 22:07
Hallihallo,

irgendwie komme ich momentan auf keine elegenate Lösung, ich bitte um Geistesblitze für folgendes Problem:

Ich habe einen Integer (kann nur >= 0 sein), und aus diesem heraus will ich einen String aufbauen, und das aus einem gegebenen Charset.

Code:
// Pseudo code...
List <Char> Charset = { a, b, c, d, e, f};
int charCount = Charset.length();

function getNext(unsigned int nextID) {

   // hier irgendwie errechnen.. mit modulo etc pp..
   // rauskommen soll z.B.:
   // bei nextID = 0 -> "a"
   // bei nextID = 7 -> "ab"
   // hoffe das ist verständlich genug :gruebel:

}
Sorry das der Code pseudo ist, da ich die mathematische bzw. elegante Lösung suche, ist die Sprache der Lösung eigl. egal. Außer Brainfuck
MSVC2008 (C/C++ with QT), Delphi RAD 2010, Flash CS5 (FDT/Adobe), Java EE (Eclipse), PHP5
Antwortsprachen: Deutsch, Englisch, Französisch, Japanisch
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Elegante Lösung gesucht: String aus Charset aufbauen

  Alt 5. Okt 2009, 22:14
Interpretiere die ID einfach als Zahldarstellung deines Strings zur Basis (Mächtigkeit des Charsets). Dann ist das letzte Zeichen Chars[ID mod Len], das vorletzte ist Chars[(ID div Len) mod Len] und so weiter.
  Mit Zitat antworten Zitat
ThE_-_BliZZarD

Registriert seit: 15. Sep 2006
Ort: Wiesbaden/Hessen
89 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Elegante Lösung gesucht: String aus Charset aufbauen

  Alt 7. Okt 2009, 09:59
Vielen Dank schon mal an Dax

Das hat mich schon um einiges weiter gebracht, zusätzlich kann ich diesen Link empfehlen:
Umrechnung von Zahlensystemen

Jetzt habe ich allerdings ein kleines Problem beim Mapping des Charsets gegen die Zahl - die Null ist ein Problem.

Code:
0 => 0  => a
1 => 1  => b
2 => 2  => c
3 => 3  => d
4 => 4  => e
5 => 5  => f
6 => 10 => aa
7 => 11 => ab
8 => 12 => ac
Am obigen Beispiel sieht man bei "0 => 0 => a" in Zusammenhang mit "6 => 10 => aa", das 0 nicht einfach auf a und 1 auf b gemappt werden kann..

Als mögliche Lösung könnte man die Null einfach weglassen:

Code:
1  => 1  => a
2  => 2  => b
3  => 3  => c
4  => 4  => d
5  => 5  => e
6  => 6  => f
7  => 11 => aa
8  => 12 => ab
9  => 13 => ac
10 => 14 => ad
Das funktioniert zwar tadellos, lässt die Null aber als undefinied zurück

Bin für jeden Tipp dankbar
MSVC2008 (C/C++ with QT), Delphi RAD 2010, Flash CS5 (FDT/Adobe), Java EE (Eclipse), PHP5
Antwortsprachen: Deutsch, Englisch, Französisch, Japanisch
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Elegante Lösung gesucht: String aus Charset aufbauen

  Alt 7. Okt 2009, 11:00
Wie wär es denn mit
Code:
0 => 0  => a
1 => 1  => b
2 => 2  => c
3 => 3  => d
4 => 4  => e
5 => 5  => f
6 => 10 => ba
7 => 11 => bb
8 => 12 => bc
(So einfach etwas weglassen ist wohl nur in der politik erlaubt)

Gruß
K-H
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Elegante Lösung gesucht: String aus Charset aufbauen

  Alt 7. Okt 2009, 11:11
Wie wäre es, wenn du beim Umrechnen 1 addierst, dann beim Zugriff auf dein Charset aber wieder den jeweiligen Index um 1 verminderst?
Code:
0 => 0 => 0+1 = 1 => 0 => a
1 => 1 => 1+1 = 2 => 1 => b
2 => 2 => 2+1 = 3 => 2 => c
3 => 3 => 3+1 = 4 => 3 => d
4 => 4 => 4+1 = 5 => 4 => e
5 => 5 => 5+1 = 6 => 5 => f
6 => 10 => 10+1 = 11 => 00 => aa
7 => 11 => 11+1 = 12 => 01 => ab
8 => 12 => 12+1 = 13 => 02 => ac
Ist nur ein Workaround, dürfte aber das liefern, was du möchtest.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#6

Re: Elegante Lösung gesucht: String aus Charset aufbauen

  Alt 7. Okt 2009, 12:41
Schlechte Idee Die 0 repräsentiert ein neutrales Element (der Addition, also bei uns konzeptionsmässig Stringverkettung), deshalb sollte 0 den leeren String repräsentieren.
  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 21:31 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