AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bitabfrage aus Hexstring

Ein Thema von BTeam · begonnen am 31. Mai 2004 · letzter Beitrag vom 2. Jun 2004
Antwort Antwort
Benutzerbild von BTeam
BTeam

Registriert seit: 17. Sep 2003
Ort: Nordhausen
52 Beiträge
 
Delphi 7 Enterprise
 
#1

Bitabfrage aus Hexstring

  Alt 31. Mai 2004, 18:31
Hallo,
Ich habe da ein kleinen Problem. Ich versuche mal die Sache zu beschreiben.
Ich habe ein String das eine Hex Zahl ist So ein Hex String sieht dann z.B. so aus 01040. Dieser Hex String wird durch Setzen von Bits/Flags erzeugt.

Die Flags die sehen so aus
0001, 0002, 0004, 0008, 0010, 0020, usw

Nun muss ich feststellen ob in dem Hex String z.B. 0010 gesetzt wurde oder nicht.
Wie stelle ich das an ?

Thx schon mal für die Hilfe
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Bitabfrage aus Hexstring

  Alt 31. Mai 2004, 19:26
Moin!

Einfach ausmaskieren...

Code:
  If ( Wert And $0020 ) = $0020 Then
    // gesetzt
  Else
    // nicht gesetzt
MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von BTeam
BTeam

Registriert seit: 17. Sep 2003
Ort: Nordhausen
52 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Bitabfrage aus Hexstring

  Alt 31. Mai 2004, 21:49
hmm...ok ich habe es so gemacht

Code:
IF (StrToHex(Liste.Cells[5,Liste.RowCount-2]) AND $02000) = $02000 THEN
  Label10.Caption := 'Gesetzt'
ELSE
  Label10.Caption := 'Nicht Gesetzt';
Delphi meint dann immer nur "Inkompatible Typen: 'String' und 'Integer'"
?
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#4

Re: Bitabfrage aus Hexstring

  Alt 31. Mai 2004, 21:53
Delphi-Quellcode:
IF ((StrToHex(Liste.Cells[5,Liste.RowCount-2])) AND $02000) = $02000 THEN
  Label10.Caption := 'Gesetzt'
ELSE
  Label10.Caption := 'Nicht Gesetzt';
oder

Delphi-Quellcode:
IF (StrToHex(Liste.Cells[5,Liste.RowCount-2])) AND $02000 = $02000 THEN
  Label10.Caption := 'Gesetzt'
ELSE
  Label10.Caption := 'Nicht Gesetzt';
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Bitabfrage aus Hexstring

  Alt 31. Mai 2004, 22:12
Moin!

Man muss die Werte nicht in "hex" umrechnen - die hexadezimale Schreibweise ist... naja, nur eine Schreibweise. Daher:

Delphi-Quellcode:
IF ((StrToInt(Liste.Cells[5,Liste.RowCount-2])) AND $02000) = $02000 THEN
  Label10.Caption := 'Gesetzt'
ELSE
  Label10.Caption := 'Nicht Gesetzt';
Ach ja, nochwas: wenn in der Zelle wirklich nur 00A0 z.B. drinne steht als String, dann muss man es so machen, weil sonst erkennt StrToInt() den String nicht als Hexwert sondern als Wert in dezimaler Schreibweise...

Delphi-Quellcode:
IF ((StrToInt('$' + Liste.Cells[5,Liste.RowCount-2])) AND $02000) = $02000 THEN
  Label10.Caption := 'Gesetzt'
ELSE
  Label10.Caption := 'Nicht Gesetzt';
MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von BTeam
BTeam

Registriert seit: 17. Sep 2003
Ort: Nordhausen
52 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Bitabfrage aus Hexstring

  Alt 31. Mai 2004, 23:52
Prima so geht....ich danke euch.
  Mit Zitat antworten Zitat
Benutzerbild von BTeam
BTeam

Registriert seit: 17. Sep 2003
Ort: Nordhausen
52 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Bitabfrage aus Hexstring

  Alt 2. Jun 2004, 12:42
Noch eine Frage ^^
Wie kann ich in dem Hex String Flags/Bits setzte und entfernen?
thx
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Bitabfrage aus Hexstring

  Alt 2. Jun 2004, 14:27
Moin!

Eigentlich habe ich hier so gesehen, neue Frage, neuer Thread...

Grundsätzlich das Abfragen mit der logischen AND Verknüpfung hast du ja nun. Setzen von Bits mit einer OR Verknüpfung (WertNeu := WertAlt Or $0020) und löschen mit einer AND Verknüpfung von logisch invertierten Wert (WertNeu := WertAlt And (Not $0020)).

MfG
Muetze1
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:47 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