Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zahlenkonvertierung (Was passiert bei dieser Schleife?) (https://www.delphipraxis.net/18628-zahlenkonvertierung-passiert-bei-dieser-schleife.html)

KermitFrosch 22. Mär 2004 14:41


Zahlenkonvertierung (Was passiert bei dieser Schleife?)
 
Delphi-Quellcode:
dezimalzahl := Dezimalzahl*2 + pos(UpperCase(dual[i]),zeichen) - 1;
kann mir jemand ganz genau erklären, was hier passiert?

Urba 22. Mär 2004 14:47

Re: was passiert hier genau
 
Hallo,

Vor dieser Zeile steht wohl irgendwo
Code:
dezimalZahl := 2; //oder was anderes
Dieser Wert wird nun benutzt und verdoppelt .

Wenn du mir nun noch sagst was dual für ein Array ist und was zeichen sein soll, dann kann dir auch geholfen werden.

Urba

himitsu 22. Mär 2004 15:05

Re: was passiert hier genau
 
Ich würder mal vermuten

Delphi-Quellcode:
zeichen := '01';
und dual ist einfach ein String der eine Dualzahl (Binär) enthält.


Ich vermute mal, das es ein Teil aus der dieser einen Zahlentypumwandlung ist.

... zu Dezimal: (so in etwa sah das doch aus)
Delphi-Quellcode:
zeichen := '0123456789ABCDEF';

T := 2; {2 bis 16  -  2 = Binär / 16 = Hexadezimal}
dual := '010101010';


dezimalzahl := 0;
for i := 1 to length(dual) do
  dezimalzahl := Dezimalzahl * T + pos(UpperCase(dual[i]), zeichen) - 1;

KermitFrosch 22. Mär 2004 16:18

Re: was passiert hier genau
 
Oh, sorry

Delphi-Quellcode:
var
  i,Dezimalzahl : LongInt;
  sys:byte;
  dual:String;
const zeichen = '0123456789ABCDEF';
 begin
  dual:=(edtdual.Text);
  sys:=2;
  Dezimalzahl := 0;
  if sys in [2..16] then
   begin
    for i := 1 to length(dual) do
      dezimalzahl := Dezimalzahl*sys + pos(UpperCase(dual[i]),zeichen) - 1;
  end;
  edtdezimal.Text := IntToStr(Dezimalzahl);

KermitFrosch 22. Mär 2004 18:03

Re: was passiert hier genau
 
also, der quellcode da über mir :warn: ist der ganze... und ejz würde ich gerne wissen, was hier
Delphi-Quellcode:
 dezimalzahl := Dezimalzahl*sys + pos(UpperCase(dual[i]),zeichen) - 1;
passiert

thx

der frosch :dance:

fkerber 22. Mär 2004 18:08

Re: was passiert hier genau
 
Hi!

Bitte nicht nach so kurzer Zeit pushen.
Wenn jemand ne Antwort weiß, dann wird er sich melden.

Ciao fkerber

himitsu 22. Mär 2004 18:22

Re: was passiert hier genau
 
Was ist denn daran so schwer zu verstehn?


Dezimalzahl*sys << schiebt einfach die Vorangegangenen Werte eine Stelle weite nach oben

pos(UpperCase(dual[i]),zeichen) - 1 << rechnet das Zeichen in eine Zahl um
'0' = 0
'1' = 1
...
'9' = 9
'A' = 10
'B' = 11
...
'F' = 15


Der Rest ist einfachste Mathematik - wie man Binär-, Oktal-, Hexadezimalwerte berechnet solltest du ja wissen :warn:


PS: Gute Antworten können auch mal 1-2... Tage dauern.

KermitFrosch 22. Mär 2004 18:50

Re: was passiert hier genau
 
Vielen vielen dank!!!

Und entschuldigt bitte meine Eile :oops: , aber ich brauche diese Infos umbedingt für morgen.

also noch mal thx :o

der frosch

sakura 22. Mär 2004 19:23

Re: was passiert hier genau
 
:warn: Aber ändere bitte umgehend die Überschrift in etwas Aussagekräftiges!

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 Uhr.

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