有一个函数
writeData(data:pchar,len:word)这个函数实现这样的功能:把data中len字节长的数据写到ic卡中。
这个函数原形是c语言的。我如何实现把word类型的数据的地址,转换成char类型的地址。这样一个word型的数据,它的地址转换成char型后,长度也是2字节。在函数内部读取两字节,把数据读出来了。如果直接把word的数据轮换成char的,长度最大可能是5位。
在C中可以实现。但在delphi中如何实现。
writeData(data:pchar,len:word)这个函数实现这样的功能:把data中len字节长的数据写到ic卡中。
这个函数原形是c语言的。我如何实现把word类型的数据的地址,转换成char类型的地址。这样一个word型的数据,它的地址转换成char型后,长度也是2字节。在函数内部读取两字节,把数据读出来了。如果直接把word的数据轮换成char的,长度最大可能是5位。
在C中可以实现。但在delphi中如何实现。
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
多谢lxpbuaa(桂枝香在故国晚秋) 指正。
w:Word;WriteData(PChar(@w),2);
直接传字符串没有没有问题。
var
W,W1: Word; //它占用2字节,因此P最后应为3位(包含结尾的一个#0)
P: PChar;
begin
W := 65;
//写入:
GetMem(P, SizeOf(W)+1);
Move(W, P[0], 2);
ShowMessage(P); //读出
Move(P[0], W1, 2);
ShowMessage(IntToStr(W1));
FreeMem(P);
end;————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
var
W,W1: Word; //它占用2字节,因此P最后应为3位(包含结尾的一个#0)
P: PChar;
begin
W := 65;
//写入:
GetMem(P, SizeOf(W)+1);
Move(W, P[0], 2);
ShowMessage(P);
//调用writeData:
writeData(P, 2); //读出
Move(P[0], W1, 2);
ShowMessage(IntToStr(W1));
FreeMem(P);
end;————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
w:Word;w:=$1234; //在内存中的排列为 34H,12H,转换为 PChar 后次序未变
// 而你的函数可能需要这样的数据 12H, 34H
// 则先将 w 交换一下字节位置w:=((w and $00FF) shl 8) or ((w and $FF00) shr 8);
WriteData(PChar(@w),2);