Das mit dem PChar geht nicht anders, die MessageBox-Funktion der Win-
API kommt nicht mit Delphi-Strings klar, daher... Du kannst ja stattdessen Application.MessageDlg nehmen.
Und das mit dem Assembler kam mir am einfachsten vor zur Umwandlung little endian <--> big endian.
Delphi 3 compiliert es problemlos, keine Ahnung, was D7 für Probleme hat (kennt es bswap nicht?)