Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi erklärt mir bitte ein programm (https://www.delphipraxis.net/103626-erklaert-mir-bitte-ein-programm.html)

a3rosol 18. Nov 2007 18:10


erklärt mir bitte ein programm
 
hallo leute!
ich hab irgendwo im wieten web ein delphi code gefunden der eine bin in dec umwandelt

Delphi-Quellcode:
unction BinToDec(s:string):int64;
var p:int64;
    i:integer;
begin
 p:=0;
 for i:=1 to length(s) do
   p:=p*2+ord(s[i])-ord('0');//s[i] must be '0' or '1'
 result:=p;
end;
bis zu dem for i:=1 to length(s) do versteh ich ja alles (was ja nix ist) aber dann versteh ich gar nix mehr
ich hab rausgefundne:
The Ord function returns an integer value for any ordinal type Arg.
It is principally used to convert characters or enumerations into their numeric equivalents.
aber ich versteh da nur bahnhof... :wiejetzt:
bitte helft mir...

lbccaleb 18. Nov 2007 18:14

Re: erklärt mir bitte ein programm
 
er geht die kompletten buchstaben des textes durch (das ist die for schleife) und gibt dann jeweils die zahl wieder (das sit das ord)

mfg

a3rosol 18. Nov 2007 18:16

Re: erklärt mir bitte ein programm
 
Zitat:

Zitat von lbccaleb
er geht die kompletten buchstaben des textes durch (das ist die for schleife) und gibt dann jeweils die zahl wieder (das sit das ord)

mfg

was für eine zahl?

Apollonius 18. Nov 2007 18:16

Re: erklärt mir bitte ein programm
 
Herzlich willkommen in der DP, a3rosol! :dp:
Das ist auch nicht ganz einfach. Wenn du ord auf ein einzelnes Zeichen anwendest, erhältst du die entsprechende Nummer im ASCII-Code. Da die Ziffern im ASCII-Code alle hintereinander sind, gibt Ord('5')-Ord('0') z.B. 5 zurück.
Damit sollte dir eigentlich die Entschlüsselung des Textes gelingen.

a3rosol 18. Nov 2007 18:29

Re: erklärt mir bitte ein programm
 
tut mir leid aber ich versteh immer noch nix...
leigt wahrscheinlich daran dass ich zu doof bin...
gibt es eine einfachere möglichkeit das problem zu lösen?

lbccaleb 18. Nov 2007 18:39

Re: erklärt mir bitte ein programm
 
ich glaube du hast weisst immmer noch nicht was ord macht ne, dann schau dir mal die seite hier :

delphi kryptologie (event nach ord suchen, wenn du nicht alles lesen willst!!! ;-)

mfg

Progman 18. Nov 2007 18:40

Re: erklärt mir bitte ein programm
 
Für dich ganz langsam:
Binäre Zahlen werden so dargesetellt:

Wertigkeit: 4 2 1

Ziffer 0: 0 0 0
Ziffer 1: 0 0 1
Ziffer 2: 0 1 0
Ziffer 3: 0 1 1
Ziffer 4: 1 0 0
Ziffer 5: 1 0 1
Ziffer 6: 1 1 0
Ziffer 7: 1 1 1

Vielleicht kannst du nun den Code nachvollziehen?

DeddyH 18. Nov 2007 18:40

Re: erklärt mir bitte ein programm
 
Das Zeichen '0' hat im ASCII-Code den Wert 48, '1' den Wert 49 (wenn ich nicht irre, habe nicht nachgesehen). Durch Subtraktion kann also nur 0 oder 1 (als Zahl) dabei herauskommen. Was die Funktion tut, ist, einen String, der nur aus '0' und '1' besteht, binär wieder in eine Zahl zu wandeln. Schauen wir uns das mal mit der Beispielzahl 5 an (binär 101):

Der String lautet also '101', p ist initial 0.

Erster Durchlauf:
Delphi-Quellcode:
P := P*2 + (49 - 48)
Zahl ist nun 1 (=> 0*2 + 1)
Zweiter Durchlauf:
Delphi-Quellcode:
P := P*2 + (48 - 48)
Zahl ist nun 2 (=> 1*2 + 0)
Dritter Durchlauf:
Delphi-Quellcode:
P := P*2 + (49 - 48)
Zahl ist nun 5 (=> 2*2 + 1)

Da der String nur 3 Zeichen hatte, sind wir nun fertig. Weiteres zur binären Logik findest Du hier.

a3rosol 18. Nov 2007 18:55

Re: erklärt mir bitte ein programm
 
ah^^ danke du netter mensch aus schweina :-D nun hab ichs kapiert

DeddyH 18. Nov 2007 19:08

Re: erklärt mir bitte ein programm
 
Wenn der Autor das etwas anders formuliert hätte, wäre es einfacher zu verstehen gewesen:
Delphi-Quellcode:
p:=p*2+ord(s[i])-ord('0');
geändert in
Delphi-Quellcode:
p := p shl 1 or (ord(s[i])-ord('0'));
So wird es IMHO deutlicher ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 Uhr.
Seite 1 von 2  1 2      

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