根据你的程序,我看不出使用PChar(字符串指针)的必要,把定义为PChar的几个变量定义为String就不会出错了。
解决方案 »
- 对象名server_db无效错误
- 谁有《Delphi7程序设计与开发技术大全》源代码的section1和section2
- delphi2009打开delphi7的文件(未编译)后还能再用delphi7代开吗?
- 如何用钩子记录中文输入?
- 请各位讨论一下,现在用什么技术做三层?
- 两个SQL语句,可是我就是想不起来!请教,在线等!
- 急急急。。。。请问,COM组件返回字符串时,用什么类型。在线等待
- 如果我有两个显示器,怎么把一个窗体指定显示到第二个显示器上?
- 各位请帮我诊断我写的触发器
- 自定义的tstrings类的变量的text属性怎么不能直接赋值
- 关于delphi键盘的问题
- 送分:怎样汉化delphi的第三方控件
getmem(Str_Name,20);
如果不初始化就惠非法访问.
但到了
while str_Name[icount]<>#0 do
begin
str_LastName[jcount]:=str_Name[icount];时,icount会变成一个很大的数,自然产生了非法操作,好像与字符串类型没有什么关系
我就是搞不清楚icount怎么会突然变成一个很大的数???
var
str_Name,str_LastName,str_FirstName: string;
icount:integer;
jcount:integer;
text:string;
begin
//////一个字符串。第一个空格前为FirstName,后为LastName.
Str_Name:= 'Solid Yang';
//str_FirstName := '';
//str_FirstName := ''; icount:= 1;
jcount:= 1;
while (str_Name[icount]<>' ') and (str_name[icount]<> #0) do
begin
str_FirstName := str_FirstName + str_Name[icount];
inc(icount);
end;
str_FirstName[icount]:=#0;
inc(icount);
while str_Name[icount]<>#0 do
begin
str_LastName := str_LastName + str_Name[icount];
icount:=icount+1;
jcount:=jcount+1;
end;
str_Lastname[jcount]:= #0;
text:=format('FirstName= %s,LastName= %s ',[str_FirstName, str_LastName]);
showmessage(text);
end;
现在字符串中找到空格,然后见字符串分为2部分.
我觉得没有必要想你那么写,这样写就可以了
var
str_Name,str_LastName,str_FirstName: string;
iSpacePos:integer;
text:string;
begin
//////一个字符串。第一个空格前为FirstName,后为LastName.
Str_Name:= 'Solid Yang';
iSpacePos:=Pos(Str_Name,' ');
if iSpace>0 then//找到
begin
str_FirstName :=Copy(str_Name,0,Pos);
str_LastName := Copy(str_Name,Pos,Length(str_Name)-Pos);
end;
text:='FirstName='+str_FirstName+' LastName='+str_LastName;
showmessage(text);
end;
应该尽量使用VCL提供的函数啊
pS: PChar;
begin
GetMem(pS, MAX_PATH);
//
FreeMem(pS, MAX_PATH);
end;