shl的操作数为integer,32位,所以Year shl 48 =Year shl 16

解决方案 »

  1.   

    使用汇编指令SHLD,我不记得Delphi中的shl了.
    反正Delphi可以嵌入汇编
      

  2.   

    楼上兄弟可能说是这个吧
    function AdjustLineBreaks(Dest, Source: PChar): Integer; assembler;
    asm
      

  3.   

    非常感谢,您指出了问题,但如何解决呢?我原来看过一下汇编语言的教材,觉得
    用汇编是可以容易地解决的,但如果能用Delphi的方法解决我还是尽量避免嵌入汇编,受您启发我注意到Shl操作的返回类型是Integer,是得不到Int64的,而且我
    用强制类型转换也不行:    MyRecord:=Int64(Year shl 48)+(Month shl 44)+(Day shl 39)+(Hour shl 34)+(Minute shl 28)+(Second shl 18)+
    (ob1 shl 8)+(ob2 shl 1)+ob3;另外我对操作数的类型如何影响结果还不了解,能否详细地解释?如果能教会我这个问题,我可以把我的程序发过去。我的程序目前实现了简单文本编辑和二进制文件编辑功能。其中二进制文件编辑功能也是学习网上得到的原程序后实现的,添加的代码不过几十行。