Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Vergleich zweier Dualzahlen und umwandlung in eine Dezizahl (https://www.delphipraxis.net/17919-vergleich-zweier-dualzahlen-und-umwandlung-eine-dezizahl.html)

KingofWerlte 11. Mär 2004 15:20


Vergleich zweier Dualzahlen und umwandlung in eine Dezizahl
 
Also mein anliegen:
Bin grad dabei für meinen Netzwerklehrer ein Programm zu schreiben das nach eingabe der IP-Adresse und der Subnet-Mask die NetID ausgeben soll. Dies Funktioniert so:
Bsp.:
IP: 130.57.0.1
SM: 255.255.240.0
Das ganze in Dualzahlen:
IP: 10000010.00111001.00000000.00000001
SM: 11111111.11111111.11110000.00000000
So nun werden die zahlen verglichen nach dem sogenanten "Du-brauchst-2-Arme-um-2-Knöpfe-gleichzeitig-zu-drücken"Prinzip :mrgreen:
Da würde dann als NetID rauskommen:
10000010.00111001.00000000.00000000
in dezimal: 130.57.0.0
So was sollte das ganze jetzt? ganz einfach: Die zahlen in eine Dualzahl umwandeln klappt ja nur wie kann ich jetzt die Dualzahlen miteinander vergleichen? Ich hatte da an 2 Arrays und eine IF Abfrage gedacht?
Könnt ihr mir dabei helfen? würd mich freuen!

Bis denne :hi:

Christian Seehase 11. Mär 2004 16:15

Re: Vergleich zweier Dualzahlen und umwandlung in eine Deziz
 
Moin KingofWerlte,

dazu brauchst Du nichts umzuwandeln, da dual/binär und dezimal ja nur unterschiedliche Darstellungen sind.
Verknüpfe einfach die entsprechenden Bytes mit AND.

atreju2oo0 11. Mär 2004 16:17

Re: Vergleich zweier Dualzahlen und umwandlung in eine Deziz
 
Auf was willste die Dualzahlen den Vergleichen?
Nur ob sie gleich sind, oder auch die Differenz?

maximov 11. Mär 2004 16:44

Re: Vergleich zweier Dualzahlen und umwandlung in eine Deziz
 
Mir scheint, du hast den spass in strings konvertiert?

Um nochmal zu präzisieren was der seehase meinte:

Du brauchst keinen vergleich sondern nur einen operator. und zwar AND!
Konvertiere die IP und SM in zwei Cardinal-variablen und sagst dann einfach:
Delphi-Quellcode:
 result := IP AND SM;
hoffe das bringt dich weiter :-D

KingofWerlte 11. Mär 2004 17:06

Re: Vergleich zweier Dualzahlen und umwandlung in eine Deziz
 
Hmm also natürlich muss ich die zahlen umwandeln. Ich kann doch nicht die IP-Adresse und die Subnet-Mask in der Dezimalform vergleichen. Die müssen in Dualzahlen umgewandelt werden.
Zum vergleichen:
Das soll so gehn: Wenn die erste Zahl der IP-Adresse und die erste Zahl der SM-Adresse 1 sind dann soll die erste zahl der NetID auch eine 1 sein. Wenn sie aber unterschiedlich sind oder wenn sie beide 0 sind dann soll eine 0 in der NetID stehn.

Christian Seehase 11. Mär 2004 17:37

Re: Vergleich zweier Dualzahlen und umwandlung in eine Deziz
 
Moin KingofWerlte,

Zitat:

Zitat von KingofWerlte
Hmm also natürlich muss ich die zahlen umwandeln

nein, musst Du nicht.
Die einzige Umwandlung, die Du vornehmen musst, ist vom String in das Zahlenformat, also StrToInt.

Zitat:

Zitat von KingofWerlte
Ich kann doch nicht die IP-Adresse und die Subnet-Mask in der Dezimalform vergleichen.

Die Zahlen werden ja eh' intern in Form ihrer Binärdarstellung gespeichert, und hiermit arbeiten dann auch die logischen Operatoren.

KingofWerlte 11. Mär 2004 18:21

Re: Vergleich zweier Dualzahlen und umwandlung in eine Deziz
 
*am kopf pack und sich wunder* ja natürlich! Wie sagt man noch gleich: Man sieht den Wald vor lauter Bäumen nicht!
Die werden ja automatisch umgewandelt
Danke!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:05 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