![]() |
Hexadezimal < > 8 bits
Hallo :)
ich bin zwar immer noch an meiner GUI dran, muss jedoch nebenbei auch an der Funktion arbeiten. Ich habe 8 Bits in eine Hexadezimalzahl umgewandelt und umgekehrt, es funktioniert, aber es gefällt mir überhaupt nicht. Würdet ihr euch mal kurz meine 2 Funktionen angucken und mir helfen sie zu verbessern? :) Die checkbox ist hierbei als bit zu sehen. die hexadezimal ist immer 2-stellig. Zitat:
Zitat:
Danke |
AW: Hexadezimal < > 8 bits
Hilft Dir mein
![]() |
AW: Hexadezimal < > 8 bits
Bin mir nicht sicher, werde deinen Link genauer angucken müssen.
Also ich brauche 8 Bits aus verschiedenen Funktionen, die ich dann zusammen setze. oder andersrum. Kann ich in Lazarus 8 Bits zu einem byte umwandeln? Und dafür müsste ich die Hexadezimal erstmal in byte umwandeln :/ Danke schonmal |
AW: Hexadezimal < > 8 bits
8 Bits SIND ein Byte, da gibt es nichts umzuwandeln ;). Ich kann mir aber denken, was Du meinst.
|
AW: Hexadezimal < > 8 bits
:D Also ich brauche 8 Boolean statt ein B01010101 Wert am Ende.
|
AW: Hexadezimal < > 8 bits
Und wenn man bedenkt, dass man einen Boolean auch als 0 für false und 1 für true sehen kann, was fällt Dir dann an Deiner "Binärzahl" auf?
|
AW: Hexadezimal < > 8 bits
Ja xD 8bit - 1 byte - 0,5 word.
Wollte nur sicher gehen, dass es mir wichtig ist 8 getrennte bits in einen byte zusammen zu führen für deinen link. Und das auch in der Richtigen Reihenfolge. Du siehst an meiner Lösung, dass ich es selbst nicht elegant lösen konnte :/ |
AW: Hexadezimal < > 8 bits
Erstmal zu
Delphi-Quellcode:
.
if Bit7.checked = true then
Diese Konstanten sollte man immer nur für Zuweisungen, aber niemals für Vergleicher verwenden, denn wie bereits bemerkt, besteht ein Delphi-Boolean intern aus einem Byte, wo es 1 Mal das False und 255 Mal ein True Nicht-False gibt. und bei einem LongBool hast du den Spaß sogar mit 4.294.967.295 Mal dem "True".
Delphi-Quellcode:
i := i + 1;
Wenn man "Binär" rechnen will, dann natürlich mit binären Operatoren ala OR und AND und nicht mit arithmetischen Operatoren ala ADD (+), denn
Delphi-Quellcode:
arbeitet immer richtig, aber ein
B := B or $01; // oder 1
Delphi-Quellcode:
macht Probleme, wenn dieses Bit bereits gesetzt ist.
B := B + $01; // oder 1
Aber dafür hast'e ja nun das Tutorial.
Delphi-Quellcode:
var B: Boolean;
B := Boolean(3); // die Variable könnte mal ausversehn mit einem "unschönen" True aus irgendeiner Funktion raus kommen. if B = True then ShowMessage('Falsch: True'); if B = False then ShowMessage('Falsch: False'); if B then ShowMessage('Richtig: True'); if not B then ShowMessage('Richtig: False'); PS: TCheckListBox und eine For-Schleife über alle Bits/CheckBoxen. |
AW: Hexadezimal < > 8 bits
Das macht natürlich Sinn. Hupps. Unabhängig von der Bit Verarbeitung, da muss ich mich erst mal reindenken. Kann ich in lazarus “relativ“ einfach ein byte in eine 2stellige hexadezimal Zahl umwandeln?
IntToHex( x,y ) war ja perfekt, direkt y für 2 Stellen nutzen |
AW: Hexadezimal < > 8 bits
Das sollte in Lazarus wie im Delphi funktionieren .... uralte APIs, das hatte Lazarus/FreePascal zu Beginn fast alles 1:1 übernommen.
Es gibt noch BinToHex (aber Achtung, da ist die Bytefolge anders) und Format kann auch Hexadezimal. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz