char 数组转化成string时候得奇怪问题(200分)

Q

qdlover

Unregistered / Unconfirmed
GUEST, unregistred user!
字符数组
ModalNumber : array[0..39] of char;
SerialNumber : array [0..19] of char;
ControlNum : array[0..7]of char;
转化成字符串变量
pSerialNumber:widestring;
pModalNumber:widestring;
pControlNum:widestring;

在程序里面用
pserialnumber=SerialNumber 没问题

可是写成asp组件就有问题了

总是显示乱码,因为他用的是olevariant类型的变量,这种变量难道需要特别的转化吗?

 

先转为string类型,再转为widestring看看
 
StringToOleStr
StringToOleStr allocates memory and copies string data from a native AnsiString into a format that can be passed to OLE functions.
 
还是不行
定义
type DRIVER_INFO_OK = record
ModalNumber : array[0..39] of char;
SerialNumber : array [0..19] of char;
ControlNum : array[0..7]of char;
DriveType : dword;
Cylinders : dword;
Heads : dword;
Sectors : dword;
end;
var
pSerialNumber:string;
pModalNumber:string;
pControlNum:string;
pHardDriveComputerID:int64;

程序赋值
pSerialNumber:=x.SerialNumber;
pModalNumber:=x.ModalNumber;
pControlNum:=x.ControlNum;
pHardDriveComputerID:=getHardDriveComputerID;

组件属性

function Tserver.Get_ControlNum: WideString;
begin
Get_ControlNum:=StringToOleStr(pControlNum);
end;

function Tserver.Get_HardDriveComputerID: WideString;
begin
Get_HardDriveComputerID:=inttostr(pHardDriveComputerID);
end;

function Tserver.Get_ModalNumber: WideString;
begin
Get_ModalNumber:=StringToOleStr(pModalNumber);
end;

function Tserver.Get_SerialNumber: WideString;
begin
Get_SerialNumber:=StringToOleStr(pSerialNumber);
end;

乱码亚

而且每次的乱码都不一样亚
本来应该是这个样子
3CW03R10
ST315320A
3.12
可是现在全是乱码,我不敢copy到这里面来,否则页面就乱套了
好像是字符串没有用0正常结束吧?
 
把String改成pchar试试。
 
改成pchar一样的乱码
SerialNumber:,?d螋? 耵t
 
顶部