Falls du nicht den unsafe-Code-Umweg, den Christian vorschlägt, gehen willst, könnte folgendes funktionieren. Ich hoffe, Delphi untersützt sowas, ansonsten nutze direkt den C#-Code (falls er denn funktioniert)
Code:
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Explicit)]
struct DoubleInt64Union
{
[FieldOffset(0)]
public readonly double Double;
[FieldOffset(0)]
public readonly long Int64;
public DoubleInt64Union(double d)
{
this.Double = d;
}
// Zum Vergleich, das BitConverter-Teil
public static unsafe long DoubleToInt64Bits(double value)
{
return *((long*)&value); // <- das hast du in Delphi auch getan
}
}
Das ist im Prinzip das selbe wie variante Records in Delphi, und du kannst wie gehabt das Int64-Feld mit deinem $(0|8)0* vergleichen.