转换问题:十万火急.....(50分)

  • 主题发起人 主题发起人 sijishui
  • 开始时间 开始时间
S

sijishui

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾:
如何把String型转化为char型,怎样把汉字转化成char型数组存储起来???
 
用 pchar() ;
 
参考一下:
string是Delphi特有的类型(相对C),不用#0作为结尾。
PChar类似于C中的Char *以#0作为结尾。
当string中包含#0时,如果用Pchar(AString)转换,并且访问转换后的结果就会造成丢失。
如果不想丢失,就要用System.Move()(具体参看帮助)
需要注意的是,Move之后如果当作Pchar来访问,还是会丢失,因为Pchar是以#0作为结尾的,
切记,切记!
procedure TForm1.Button2Click(Sender: TObject);
var
p:pchar;
const
source : string='0123456789'+#0#0+'abc';
// 共 15 bytes
begin
getmem(p,50);
// strpcopy(p,source);
//这句不要了!!!
StrMove(p,PChar(source),Length(source));
//OK!此处不能用Move,因为string类型有特殊的存储
try
ShowMessage(p[12]);
// 應該顯示 'a' 結果沒有 --> 錯誤
ShowMessage(source[13]);
// 顯示 'a' --> 正確
finally
FreeMem(P);
end;
end;
 
以下是所定义的结构:
type TCUSTOMER_INFO_STRUCT = packed record
cKeyID: array[0..MAXLEN_EXTEN] of CHAR;
//用户唯一标识
cAddress: array[0..MAX_ADDRESS_LENGTH] of CHAR;
//地址
cName: array[0..MAX_PEOPLE_NAME_LENGTH] of CHAR;
//用户姓名
cLanguage: array[0..MAX_LANGUAGE_LENGTH] of CHAR;
//语言
usWorkNo: USHORT;
//工号
end;
PCUSTOMER_INFO_STRUCT = ^TCUSTOMER_INFO_STRUCT;
我用edit录入数值,那么如何从edit中把录入的内容赋给纪录
输入时,中英文和汉字可以混用,自动区分,并录入到纪录中。怎么做????
急盼回复!!!!
 
我找的一些资料:
var s:widestring;
a:string;
begin
a:='我们爱大富翁';
s:=a;
label1.Caption:=copy(s,2,1);
label2.Caption:=copy(a,2,1);
end;

用WideString
i:integer;
SW:WideString;
begin
Text:=YourText;
if Length(Text)<=0 then
abort;
SW:=Text;
Text:='';
for i:=1 to Length(SW)-1do
begin
Text:=Text+SW+Chr(13)+Chr(10);
end;
Text:=Text+SW[Length(SW)];
end;


 
打了很长一段,可是提交不成功,全没了!可惜
 
大哥,继续啊,您不是提交成功了吗?!!!
 
好吧!我就在做一次劳动吧!这个论坛也该改改了,浪费我的劳动!
PChar等同于C中的char *,它可以是字符串也可以是缓冲区,也就是地址指针!
String是Delphi的字符串类型,你可以把它看成是对象,它的分配和释放是由Delphi控制的
他有个引用计数,类似于COM,当引用这个字符串的变量全部释放(超出作用域或只向了其他位置)
,也就是引用计数为0 时Delphi释放缓冲区。
你可以使用VarPChar:=PChar(Var_String),将一个字符串赋给PChar,但是你必须确保在String
变量的缓冲区没有被释放前使用Var_PChar!否则你需要用下面的方式:
Move(Var_String[1],Var_PChar,Length(Var_String));
如果你把Var_PChar当作字符串使用,你还需要确保以#0结束,如:
Var_PChar[Length(Var_String)] := #0;
 
终于提交成功了!哎
 
如果你只是在Delphi中使用的话上面的结构变量你可以这么定义:
Name : string[25];
 
后退
顶部