Hallo Leute,
nach langer Zeit beschäftige ich mich wieder mit PB und stehe gleich vor einem Problem.
Nur so zum Spaß, wollte ich eine Schleife bilden, welche auch Buchstaben enthält.
Es sollen also die Zahlen nicht nur von 0-9, sondern von 0-Z gehen.
Einstellig habe ich das nun hinbekommen, aber ab der zweiten Stelle weiß ich nicht mehr weiter.
Beispiel:
Der Zähler fängt an und als Ausgabe habe ich:
0
1
2
..
Z
Jetzt müsste die zweite Stelle wie folgt erscheinen:
01
02
..
0Z
Dann geht es weiter mit:
11
12
..
1Z
Dann:
21
22
..
2Z
Und immer so weiter. Aber irgendwie fehlt mir hier ein Ansatz, das zu Lösen.
Wer kann mir da weiterhelfen?
Danke
Thomas
Zähler mit Zahlen und Buchstaben
Re: Zähler mit Zahlen und Buchstaben
zB mit ConvertNumber()
Damit kanst du einfach aus dem 10er System ins 36 System (10+26) gehen:
EDIT:
Wenns nur von 10er nach 36er System bleiben soll, geht vereinfacht auch das:
Code: Alles auswählen
Procedure.s ConvertNumber(NumberIn$, BaseIn, BaseOut)
Protected Value, Result, n, Modulo, NumberOut$, *Char.Character
If BaseIn < 2 Or BaseOut < 2 Or BaseIn > 36 Or BaseOut > 36
ProcedureReturn ""
EndIf
NumberIn$ = UCase(Trim(NumberIn$))
*Char.Character = @NumberIn$
n = Len(NumberIn$)-1
While *Char\c
If *Char\c > 64
Value = *Char\c-55
Else
Value = *Char\c-48
EndIf
Result + Value*Pow(BaseIn,n)
*Char+1 : n-1
Wend
Repeat
Modulo = Result % BaseOut
If Modulo > 9
NumberOut$ = Chr(55+Modulo) + NumberOut$
Else
NumberOut$ = Str(Modulo) + NumberOut$
EndIf
Result / BaseOut
Until Not Result
ProcedureReturn NumberOut$
EndProcedure
Code: Alles auswählen
Debug ConvertNumber("20", 10, 36)
Debug ConvertNumber("200", 10, 36)
Debug ConvertNumber("2000", 10, 36)
Code: Alles auswählen
For n = 1 To 1000
Debug ConvertNumber(Str(n), 10, 36)
Next
Wenns nur von 10er nach 36er System bleiben soll, geht vereinfacht auch das:
Code: Alles auswählen
Procedure.s ConvertTo36(Number)
Protected Modulo, NumberOut$
Repeat
Modulo = Number % 36
If Modulo > 9
NumberOut$ = Chr(55+Modulo) + NumberOut$
Else
NumberOut$ = Str(Modulo) + NumberOut$
EndIf
Number / 36
Until Not Number
ProcedureReturn NumberOut$
EndProcedure
For n = 1 To 1000
Debug ConvertTo36(n)
Next
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Zähler mit Zahlen und Buchstaben
Oh super, das funktioniert. Danke für die schnelle Hilfe.
Da fragt man nach einem Denkanstoß und bekommt gleich eine komplette Lösung.
Gemerkt habe ich aber, das selbst wenn ich die Variabel "n" als double oder quad verwende,
irgendwann Schluss mit Zählen ist.
Aber egal, Hauptsache ich habe verstanden wie es funktioniert.
Da fragt man nach einem Denkanstoß und bekommt gleich eine komplette Lösung.
Gemerkt habe ich aber, das selbst wenn ich die Variabel "n" als double oder quad verwende,
irgendwann Schluss mit Zählen ist.
Aber egal, Hauptsache ich habe verstanden wie es funktioniert.
Re: Zähler mit Zahlen und Buchstaben
Nimm 2 Zähler. Immer wenn der erste voll ist, erhöhst du den 2ten und fügst den mit RSet() an.
Re: Zähler mit Zahlen und Buchstaben
Danke auch hier.
An einen weiteren, oder noch mehr Zähler, hatte ich auch gedacht.
Das mit dem RSet() werde ich morgen mal Testen.
An einen weiteren, oder noch mehr Zähler, hatte ich auch gedacht.
Das mit dem RSet() werde ich morgen mal Testen.