Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Oktalzahl zu Dezimalzahl (https://www.delphipraxis.net/18387-oktalzahl-zu-dezimalzahl.html)

fkerber 21. Mär 2004 17:29

Re: Oktalzahl zu Dezimalzahl
 
Hi!

UpperCase macht alles zu Großbuchstaben.
LowerCase macht alles zu Kleinbuchstaben.

Delphi-Quellcode:
showmessage(Uppercase('teSt'));  // = TEST
showmessage(Lowercase('teSt'));  // = test

Ciao fkerber

KermitFrosch 21. Mär 2004 17:40

Re: Oktalzahl zu Dezimalzahl
 
begin
for i := 1 to length(octal) do
dec := dec*sys + pos(upCase(octal),ch) - 1;

thx, aber wie wird dieses ch verwendet. Woher weiß das prog, wann es verwändet wird

fkerber 21. Mär 2004 17:42

Re: Oktalzahl zu Dezimalzahl
 
Hi!

Wie meinst du das?

ch ist ein String, aus dem mit Pos die benötigte Stelle gesucht wird, wenn ich das richtig interpretiere.


Ciao fkerber

KermitFrosch 21. Mär 2004 17:59

Re: Oktalzahl zu Dezimalzahl
 
woher weiß er denn die richtige posi?

fkerber 21. Mär 2004 18:38

Re: Oktalzahl zu Dezimalzahl
 
Hi!

Du rufts die Funktion Pos doch so auf, dass du ihr ein Zeichen übergibst, dass sie in dem konstanten String suchen soll.

Der String sieht ja so aus: 0123456789ABCDEF

Übergibst du jetzt das Zeichen A, dann gibt Pos 10 zurück (ich hoff mal, dass 10 stimmt, bin mir nicht sicher, ob der ab 0 zählt oder wie auch immer, aber fürs Prinzip wird es hoffentlich klar :oops: )


Ciao fkerber

Jens Schumann 21. Mär 2004 18:52

Re: Oktalzahl zu Dezimalzahl
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von KermitFrosch
Das prinzip ist mir schon klar

dezimal -->12344

4 · 1 = 4
4 · 8 = 32
3 · 64 = 192
2 · 512 = 1024
1 · 4096 = 4096
—————
5348

oktal --> 5348

Ist Euch eigentlich schon mal aufgefallen, dass die hier gezeigte Umrechnung einer Dezimalzahl in eine Octalzahl völlig falsch ist?
Das erste Indiz ist, dass in der vermeintlichen Lösung die Basis als Ziffer vorkommt.
Kann nicht sein.
Das zweite Indiz ist, dass die vermeintliche Lösung weniger Ziffer hat als die Dezimalzahl.
Kann nicht sein. Es können nur gleiche viele oder mehr Ziffern sein. Weil die Basis des
Octalensystems kleiner ist als die des Dezimalensystems.

Die richtige Lösung lautet: 12344(dezimal) ist 30070(octal)

Der Algorithmus für die Umrechnung einer Dezimalzahl in ein beliebiges Zahlensystem kann aus der Anlage abgeleitet werden.

KermitFrosch 24. Mär 2004 13:48

Re: Oktalzahl zu Dezimalzahl
 
ja, ok, dieses beispiel von mir war falsch... aber die schleife rechnet es richtig...
doch weiß ich immer noch nichts mit der besagten Zeile anzufangen

Nieswood 6. Apr 2006 09:58

Re: Oktalzahl zu Dezimalzahl
 
hallo erstmal,

habe diese diskussion brennend verfolgt, nur hänge ich einwenig ... würde gerne mal den kompletten quellcode sehen. denn er gibt mir zwar die ersten oktalzahlen richtig aus aber danach erhalte ich immer nur eine '-9' :wall: hatte das mit dem octal[i] nit ganz geschnitten ... danke schon mal im vorraus für die hilfe!

Phantom1 6. Apr 2006 10:20

Re: Oktalzahl zu Dezimalzahl
 
Ich hab ne function die jedes Zahlensystem ins andere Rechnen kann (warum sollte man auch für jede umrechnung eine function schreiben?):

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;
Beispiele:
Delphi-Quellcode:
ShowMessage(BaseToBase('101010', 2, 16)); // umrechnung von Binär in Hex
ShowMessage(BaseToBase('12345', 10, 8)); // umrechnung von Dezimal in Oct
mfg

Klaus01 6. Apr 2006 10:28

Re: Oktalzahl zu Dezimalzahl
 
will dann mal meine Version auch mal in den Ring werfen.

Delphi-Quellcode:

function dec2oct(zahl:Integer):String;
begin
  if zahl DIV 8 > 0 then
    begin
      result:=IntToStr(zahl MOD 8)+result;
      zahl := zahl DIV 8;
      result:=dec2oct(zahl)+result;
    end
  else
    result:=IntToStr(zahl)+result;
end;
edit: uups falsch herum


Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:32 Uhr.
Seite 2 von 3     12 3      

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