Var
address:pointer;
neirong:string;
fangshi:string;
duixiang:string;
begin
    address:= pointer($0045b868);
    neirong:='说话内容';
    fangshi:='公聊';
    duixiang:='名字';
asm
    pushad
    mov ebx,$00dd7170
    push neirong
    push fangshi
    push duixiang
    push ebx
    
    Call address
    
    add esp,$10
    
    popad

解决方案 »

  1.   

    试试:{
    void *address;
    char *neirong; //如果是BCB建议改为String
    char *fangshi;
    char *duixiang;    address= (char *)0x0045b868;
        neirong="说话内容";
        fangshi="公聊";
        duixiang="名字";
    asm {
        pushad
        mov ebx,0x00dd7170
        push neirong
        push fangshi
        push duixiang
        push ebx
        
        Call address
        
        add esp,0x10
        
        popad  }
     
     }
     
      

  2.   

    最主要是这一段,这段看不明白
    asm
        pushad
        mov ebx,$00dd7170
        push neirong
        push fangshi
        push duixiang
        push ebx
        
        Call address
        
        add esp,$10
        
        popad
      

  3.   

    这是一段嵌入汇编:pushad                 //保护所有寄存器
    mov ebx,$00dd7170       //将地址00dd7170赋给ebx
    push neirong            //将neirong入栈
    push fangshi             //将neirong入栈
    push duixiang            //将neirong入栈
    push ebx                 //将ebx入栈Call address            //调用address(0045b868)add esp,$10              //恢复栈popad                     //恢复所有寄存器
      

  4.   


    这一段根本没有必要去看,因为是汇编,不管是delphi还是C++,直接拉过来用就行了。
    你的翻译主要是把string转为C++上的字符串而已,很基础的东西。
      

  5.   

    估计楼上的说了他也看不明白
    不懂ASM再怎么说也不明白
    思念完全不一样ASM说的是操作内存中的数据
    而估计楼主当前只能理解看到的
    将来也许有一天能看懂但这俩天还不行