最初の質問のように、数値を 10 進法から別の数値 (基数 2 から 9) に変換するプログラムを作成する必要があります。
しかし、今回は再帰関数を使用して作成する必要があります。だから私は一緒に来ました:
function cambiarBase(n,b: integer): string;
Begin
if n < b then
cambiarBase := inttostr(n)
else
cambiarBase := inttostr(n mod b) + cambiarBase(n div b, b);
End;
'n' は 10 進数、'b' は基数の 2 つの整数変数を取り、変換された数値を含む文字列を返します。ボタンの手順で、TMemoに番号を表示します
memo1.Lines.Add(cambiarBase(n,b));
私が抱えている問題は次のとおりです。関数を使用すると、数字が逆の順序で表示されます(たとえば、9進数の301は364ですが、463と表示されます)。しかし、if ステートメントの後に ReverseString 関数を使用すると、数値が別の順序で表示されます (この例では、数値は 634 になります)。
しかし、memo1.Lines.Add (関数の外側) で ReverseString 関数を適用すると、正しい変換が表示されます。
私が欲しいのは、関数自体によって正しい桁の順序を返す方法を知ることです。
プログラムはエラーなしでコンパイルします。
繰り返しますが、読んでくれてありがとう。
LeoAM