Autor Beitrag
ademus
Hält's aus hier
Beiträge: 11

WIN XP
Delphi 2005
BeitragVerfasst: Sa 14.05.05 10:55 
Hallo,

kann mir bitte jemand sagen, wie ich einen bitweisen Vergleich durchführe, um zwei ausdrücke miteinander zu vergleichen. Zum Beispiel:

ausblenden Delphi-Quelltext
1:
2:
3:
Ausdruck1 := '1000'
Ausdruck2 := '1010'
Ergebnis := Ausdruck1 OR Ausdruck2

Was bei diesem beispiel als Ergebnis 1010 sein muss.

Wenn ich den Vergleich mit zwei Strings durchführe erhalte ich als Ergebnis 1018
Was mache ich da falsch??

Gruß ademus

Moderiert von user profile iconAXMD: Delphi-Tags hinzugefügt.
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Sa 14.05.05 11:07 
Du machst hier OR mit Strings - das geht eigentlich gar nicht, aber naja; ich nehme an, Delphi interpretiert hier die Charakter-Werte.
Zu deinem Problem: mach doch einfach: Ergebnis := 8 or 10 und rechne das ,was du rausbekommst in Binärdarstellung um.

AXMD
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Sa 14.05.05 11:13 
Wie meinst du das mit 1018? Als String oder als was gibt er die Zahl zurück?
ademus Threadstarter
Hält's aus hier
Beiträge: 11

WIN XP
Delphi 2005
BeitragVerfasst: Sa 14.05.05 11:18 
bekomme 1018 als string zurück. Hatte gehofft, es gibt einen weg, die beiden Ausdrücke direkt miteinander zu vergleichen, ohne die Umrechnungen vorzunehmen...
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Sa 14.05.05 11:23 
Wenn es ein String ist, kannst du es auch so machen. (Habe es nchit ausprobiert und ist nur für gleichlange Strings, wenn du es auch für unterschiedliche haben willst musst du den Quelltext entsprechend ändern)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
Ausdruck1:='1000';
Ausdruck2:='1010';
Ergebnis:='';
for i:=length(Ausdruck1) downto 1 do
 begin
  if ((Ausdruck1[i])='1') or ((Ausdruck2[i])='1') then
   begin
    Ergbnis:='1'+Ergebnis;
   end
  else
   begin
    Ergbnis:='0'+Ergebnis;
   end;
 end;


Ich glaube aber die Umwandlung in Bit und dann wieder zurück ist schneller :wink: .
ademus Threadstarter
Hält's aus hier
Beiträge: 11

WIN XP
Delphi 2005
BeitragVerfasst: Sa 14.05.05 11:27 
danke sehr.
habe es jetzt auch hinbekommen, indem ich die strings in int umgewandelt habe, verglichen und dann wieder zurückgewandelt.