Delphi-PRAXiS
Seite 1 von 3  1 23      

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)

KermitFrosch 17. Mär 2004 19:42


Oktalzahl zu Dezimalzahl
 
Hallo erst mal... Ich wollte mal fragen, wie ich Oktalzahlen in Dezimalzahlen umwandeln kann.
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

aber wie ist dies programmiertechnisch zu meistern?

Bitte nicht auf den anderen Forumeintrag "Oct zu Integer" verweisen, dass hilf mir nicht weiter

thx schon mal

der FRosch

Skiron 17. Mär 2004 20:03

Re: Oktalzahl zu Dezimalzahl
 
Zitat:

Zitat von Illuminator-23-5
Delphi-Quellcode:
function xToDec(Nb: string; sys: byte): integer;
const
  ch = '0123456789ABCDEF'
var
  i: integer;
begin
  result := 0;
  if sys in [2..16] then begin
    for i := 1 to length(Nb) do
      result := result*sys + pos(upCase(Nb[i]), ch) - 1;
  end;
end;

wenn du unter sys nun 8 mitgibst, und unter Nb die nummer (oder IntToStr(Nummer), falls es ein integer ist), und schon dürfts klappen!

KermitFrosch 17. Mär 2004 20:40

Re: Oktalzahl zu Dezimalzahl
 
thx, dass ist ja sehr gut... doch jez erblicke ich meinen fehler nicht...

Delphi-Quellcode:
procedure TForm1.btnoctalClick(Sender: TObject);
function xToDec(octal: string; sys: byte): integer;
var
i: integer;
const
  ch = '0123456789ABCDEF';
begin
  octal:=(edtoctal.Text);
  sys:=8;
  result := 0;
  if sys in [2..16] then
   begin
    for i := 1 to length(octal) do
      result := result*sys + pos(upCase(octal),ch) - 1;
  end;
end;
end;
bei der rot markierten stelle, gibt er n fehler aus mit inkom. typen, aba warum?

Skiron 17. Mär 2004 20:47

Re: Oktalzahl zu Dezimalzahl
 
probiers mal so:
Delphi-Quellcode:
procedure TForm1.btnoctalClick(Sender: TObject);
var
  i: integer;
  octal: string;
  sys: byte;
  dec: integer;
const
  ch = '0123456789ABCDEF';
begin
  octal:=(edtoctal.Text);
  sys:=8;
  dev := 0;
  if sys in [2..16] then
   begin
    for i := 1 to length(octal) do
      dec := dec*sys + pos(upCase(octal),ch) - 1;
  end;
  edtdecimal.Text := IntToStr(dec); //oder wie halt das edit heißt
end;

KermitFrosch 17. Mär 2004 21:03

Re: Oktalzahl zu Dezimalzahl
 
hmm, er sagt mir immer noch bei

dec := dec*sys + pos(upCase(octal),ch) - 1;

[Fehler] Unit1.pas(316): Inkompatible Typen: 'Char' und 'String'
[Fataler Fehler] Project1.dpr(6): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden

Sharky 18. Mär 2004 06:20

Re: Oktalzahl zu Dezimalzahl
 
Hai Frosch,

upCase erwartet als Parameter ein CHAR deine Variable octal ist aber vom Typ String.
Für einen String musst du UpperCase verwenden.

KermitFrosch 18. Mär 2004 12:25

Re: Oktalzahl zu Dezimalzahl
 
Hey, ja jez funzt es... aba die richtige zahl kommt nich raus... gibt man zb als octalzahl
173 an, sollte bei dezimal 123 stehen... tut es aba nicht. da steht jez: -73

Skiron 18. Mär 2004 12:36

Re: Oktalzahl zu Dezimalzahl
 
probiers mit
Delphi-Quellcode:
  octal[i]

KermitFrosch 18. Mär 2004 16:45

Re: Oktalzahl zu Dezimalzahl
 
JAAA :hello: das iss es!!! Thx, endlich... :-D :-D :-D

KermitFrosch 21. Mär 2004 17:22

Re: Oktalzahl zu Dezimalzahl
 
kann mir jemand sagen, was dieses uppercase bedeutet? Und wie die zeichen abgerufen werden, also wie die schleife sie verwändet? also ch


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

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