Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   shr und ^. Was heißt das? (https://www.delphipraxis.net/54132-shr-und-%5E-heisst-das.html)

Koller 28. Sep 2005 15:06


shr und ^. Was heißt das?
 
hab folgende procedure
Delphi-Quellcode:
procedure Decode(Source, Target: pointer; Count: longword);
var
   S: PDWORD;
   T: PByte;
   I: longword;
begin
   S := Source;
   T := Target;
   for I := 1 to Count do begin
      T^ := S^ and $ff;
      inc(T);
      T^ := (S^ shr 8) and $ff;
      inc(T);
      T^ := (S^ shr 16) and $ff;
      inc(T);
      T^ := (S^ shr 24) and $ff;
      inc(T);
      inc(S);
   end;
end;
Wozu sind die befehle shr und ^ da?

Ultimator 28. Sep 2005 15:09

Re: shr und ^. Was heißt das?
 
shr shiftet einen Wert nach rechts (Gegenstück wäre shl)
S^ in dem Beispiel dereferenziet einen Zeiger.
Also in dem Fall ist S ein Zeiger. Um der Variablen, auf den der Zeiger zeigt, ienen Wert zuzuweisen musst du S^ schreiben, wenn du nur "S := bla" schreiben würdest, würde der Zeiger auf den Speicher an Stelle "bla" zeigen ;)

Ich hoff ich hab das richtig erklärt^^

Kedariodakon 28. Sep 2005 15:10

Re: shr und ^. Was heißt das?
 
shr -> Delphi-Referenz durchsuchenLogische (bitweise) Operatoren...
^ -> Delphi-Referenz durchsuchenZeiger-Operatoren...

shr & shl = BitShiftopereationen
^ = Dereferenzierungssymbol

Bye

turboPASCAL 28. Sep 2005 15:12

Re: shr und ^. Was heißt das?
 
shr und shl Bezeichnet Bitweises verschieben.

1000 shr 1 ergibt 0100 (shr Bitweises Verschieben nach rechts)
0001 shl 1 ergibt 0010 (shl Bitweises Verschieben nach links)
0001 shl 2 ergibt 0100

S^ in dem Beispiel ist ein Zeiger. siehe Delphi-Referenz durchsuchenPointer

// jetzt sind schon zwei rote Kästen da, na ja...


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