两条Vc语句,转换成Delphi怎么写?谢谢~~~
CString m_key;
m_key = "FFFFFFFFFFFF";
m_key.GetBuffer(12)

解决方案 »

  1.   

    mfc 的 CString 跟 vcl 的 AnsiString 各自实现不一样,不能直译。
    CString::GEtBUffer 是在CString对象内部再分配一段指定大小的buff返回,常用来将 CString 跟 char* 转换。
    你就说你想干嘛吧。
      

  2.   

    直接  
    PChar('FFFFFFFFFFFF');
      

  3.   

    DLL 带的函数 int  a_hex(char *a,unsigned char *hex,unsigned char len); 
    vc例子是这样调用的
    CString m_key;
    m_key = "FFFFFFFFFFFF";
    unsigned char key[7];
    memset(key,0,7);
    a_hex(m_key.GetBuffer(12),key,12);
    m_key.ReleaseBuffer();
    我想知道delphi是怎么调用,就是参数如何传递。
      

  4.   

    delphi 调用,第一二个参数传递指针,第三个传递byte类型
    var
        str: string;
        len: byte;
        key1: array of char;
        key2: array of char;
    begin
        str := 'FFFFFFFFFFFF';
        setlength(key1, 12);
        move(str[1], key1[0], 12);
        setlength(key2, 7);
        key2 := #0;     //功能等于memset(key,0,7);
        len := 12;
        a_hex(@key1[0], @key2[0], len);
    end;
      

  5.   

    具体要看函数是干嘛用的,如何用的,如果第一个参数只是带数据进去,第一个参数可以直接传@str[1]   就不需要key1了
      

  6.   


    var m_key:string;
    key:array[0..7] of ansichar;
    begin
        fillchar(key,7,0);
       m_key = "FFFFFFFFFFFF";
       a_hex(pcahr(m_key),@key,12); 
     
      

  7.   


    var
    m_key:PChar ;
    s:string;
    begin
    s = "FFFFFFFFFFFF";
     GetMem(m_key,12);
    StrPCopy(m_key,Copy(s,1,12));
    FreeMem(m_key);
    end;
      

  8.   


    如果是仅仅拿来使用可以简单直接译,如果是作函数形参等需要规定内存长度的,可用delphi定义array [0..1024] of char
    使用StrPCopy进行字符串装载。