Thema: Delphi 2x Cardinal => 1x int64

Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: 2x Cardinal => 1x int64

  Alt 8. Jun 2009, 07:50
Hi,

Noch eine kleine Aufklärung warum deine function nicht funktioniert:

Result:=high shl 32; der Ausdruck wird von rechts nach links ausgewertet. high ist ein Cardinal. Wenn du einen 32-Bit Integer 32 Stellen nach links (oder rechts) verschiebst, dann bleibt 0 übrig..

00000000000000000000000000000000 11111111111111111111111111111111

shl 32

11111111111111111111111111111111 00000000000000000000000000000000

Der Linke Teil, also der Cardinal wird dann in einen Int64 konvertiert (implizit):

00000000000000000000000000000000 00000000000000000000000000000000

Und das mit low "verodert" ergibt eben low

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat