怎么将IC卡中的数据 分别以16进制 和ASCI码的形式显示在FORM中?(100分)

  • 主题发起人 主题发起人 fossil
  • 开始时间 开始时间
F

fossil

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么将IC卡中的数据 分别以16进制形式显示在FORM中?
怎么将IC卡中的数据 分别以ASCI码的形式显示在FORM中?
 
您问的也算奇特了,读出来就显示呗,按什么码显示您说了算呀?
 
ASC码简单,用CHR函数就可以了.
16进制好象没有现成的函数.

function IntegerToHex(Value: Integer): string;
begin
Result:='';
while Value>0 do
begin
case Value mod 16 of
0..9: Result:=IntToStr(Value mod 16)+Result;
10..15: Result:=Chr(Ord('A')+Value mod 16-10)+Result
end;
Value:=Value div 16
end;
Result:='$'+Result
end;
 
LeeChange,
那不是整型的,比如我读出来的是 PBYTE,怎么装成FF 这样的16进制,每个字节?
DragonPC_???,
你说的倒是轻松啊,我可不是读出来就显示呢,要不我读它干吗,怎么转?
 
procedure TDeviceMonitor.WriteLn(const Data; Count: Integer);
var
P : PByteArray;
B : Byte;
C : Char;
S : String;
I : Integer;
J : Integer;
begin
P := @Data;
for I := 0 to (Count+15) div 16 -1 do
begin
S := Format(' %0.8X ', [I*$10]);
for J := 0 to $F do //每行以十六进制数显示16个字节
begin
if I*$10+J < Count then
begin
B := P^[I*$10+J];
if J = 7 then //第8个字符后显示一个分隔符
S := S + IntToHex(B, 2) + '-'
else
S := S + IntToHex(B, 2) + ' ';
end
else
S := S + ' '; //没有数据时以空格填充
end;

for J := 0 to $F do //显示16个字节对应的字符
begin
C := ' ';
if I*$10+J < Count then C := Chr(P^[I*$10+J]);
if (C < ' ') or (C > '~') then C := '.'; //不可见字符以"."显示

S := S + C;
end;

Memo.Lines.Add(S);
end;
end;
 
嘿嘿!小问题么!
 
有空别说风凉话
TSEUG:如果可能的话!在QQ上给我解释,留言就可以
 
tseug你快来看啊!!
WriteLn(const Data; Count: Integer); 中CONST DATA 这是什么啊
如果我接受到一个 dd :array [0..2017] of char
那chuange传给CONST DATA 的是dd[0]?????
 
chuange传给const data的是dd.
 
LeeChange
别走,我着急啊
那如果是 dd : PCHAR呢
DATA应该是什么???
 
关注,收藏
 
如果
dd: PChar;
并且dd已分配空间,
那么应该用
dd^
 
多人接受答案了。
 
后退
顶部