Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Kleiner Zahlenkonvertierer (https://www.delphipraxis.net/106008-kleiner-zahlenkonvertierer.html)

rawsoul 11. Jan 2008 19:05

Re: Kleiner Zahlenkonvertierer
 
Nettes Programm, hat allerdings für mich keinen Nutzen.

Wieso nicht noch weitere abstrakte Zahlensystem einbauen?

Mal was ganz altes aus dem Infounterricht:
Delphi-Quellcode:
function xtoy(dez,base:integer):string;
const
  num:array [0..35] of char = ('0','1','2','3','4','5','6','7','8','9',
                               'A','B','C','D','E','F','G','H','I','J',
                               'K','L','M','N','O','P','Q','R','S','T',
                               'U','V','W','X','Y','Z');
begin
  result:='';
  if (base>36) or (base<2) then
  begin
    result:='Keine gültige Basis!';
    exit;
  end;
  repeat
    result:=num[dez mod base]+result;
    dez:=dez div base;
  until dez=0;
end;
Diese Funktion arbeitet vom Binärsystem bis zum System der Basis 36 :lol:

//Edit: Whoopsies, hätte vielleicht vorher mal nachdenken sollen. Diese Funktion rechnet nur Zahlen aus dem Dezimalsystem in andere um, sonst nichts. 'schuldige :wall:

Phantom1 12. Jan 2008 08:25

Re: Kleiner Zahlenkonvertierer
 
Zitat:

Zitat von rawsoul
Diese Funktion arbeitet vom Binärsystem bis zum System der Basis 36 :lol:

//Edit: Whoopsies, hätte vielleicht vorher mal nachdenken sollen. Diese Funktion rechnet nur Zahlen aus dem Dezimalsystem in andere um, sonst nichts. 'schuldige :wall:

Wenn man alles in einer einzigen function haben will, müsste es in etwa so hier aussehen:
Delphi-Quellcode:
function BaseToBase(Value: string; StartBase, EndBase: byte): string;
const Digits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var i: Integer; dez, j: Int64;
begin
  Result:='';
  if (StartBase<2) or (StartBase>36) or
     (EndBase<2) or (EndBase>36) then Exit;
  for i:=1 to Length(Value) do begin
    j:=Pos(Value[i], Digits);
    if (j>StartBase) or (j=0) then Exit;
  end;
  j:=1;
  dez:=0;
  for i:=Length(Value) downto 1 do begin
    dez:=dez + (Pos(Value[i], Digits)-1) * j;
    j:=j*StartBase;
  end;
  repeat
    Result:=Digits[dez mod EndBase+1] + Result;
    dez:=dez div EndBase;
  until dez=0;
end;
Damit kann man von 2er bis zum 36er System alles umrechnen lassen.

rawsoul 12. Jan 2008 14:12

Re: Kleiner Zahlenkonvertierer
 
[ot]Danke, die werd ich mal durch meine alte in der Codeschnipsel.pas ersetzen :P[/ot]


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:12 Uhr.
Seite 3 von 3     123   

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