使用Pchar类型的问题:
pchar类型变量之间怎么赋值阿?
也即是说使用了strpos(str1,str2)函数之后,会返回一个pchar指针。Returns a pointer to the first occurrence of STR2 in STR1.
然后我想要从返回的这个指针的位置开始再向后面搜索同样的str2。那么我应该怎么做阿?
pchar类型变量之间怎么赋值阿?
也即是说使用了strpos(str1,str2)函数之后,会返回一个pchar指针。Returns a pointer to the first occurrence of STR2 in STR1.
然后我想要从返回的这个指针的位置开始再向后面搜索同样的str2。那么我应该怎么做阿?
解决方案 »
- 关于IntraWeb在IIS中发布的问题
- 刚刚学delphi 高手指点下ImageEN的几个问题
- 为什么创建的Form 被show出来后窗体无响应,而showmodal却可以?
- 菜鸟弱弱的问一个关于ValueListEditor的问题,请各位大虾们多多帮忙哈^^^^^^^!!!
- 如何取消默认的输入法
- DELPHI中sql语句的书写!
- 为什么会不相符合???(关于取硬盘空间和剩余空间的问题),大侠救命啊!
- 如何关闭一个MDI子窗体
- 在DBGridEh1中是不是不能显示图象字段和备注字段?
- 请教FORMAT的用法
- 看着我的可用分从昨晚的405分到现在的415,我才敢安心回去睡觉,我是不会散分的,呵呵
- 200分求一种在DBGrid中实现复杂的题头的表格做法,最好使用ClientDataset,或者推荐其他控件的做法也可以。具体可以看这篇文章http://
Inc(str3); // +1
str3 := StrPos(str3, str2); // 再向后搜索
str3 := StrPos(str1, str2);
while str3 <> nil do begin
ShowMessage(str3);
Inc(str3);
str3 := StrPos(str3, str2);
end;
而且还说是"非法存取"。
procedure TForm1.FormCreate(Sender: TObject);
var
str1,str2,str3:pchar;
begin
str2:= pchar('www.csdn.com');
str1:= pchar('.');str3 := StrPos(str1, str2);
while str3 <> nil do begin
ShowMessage(str3);
Inc(str3);
str3 := StrPos(str3, str2);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
str1,str2,str3:pchar;
begin
str2:= 'www.csdn.com'; // 直接指向字符串,不要用pchar(...)
str1:= '.';str3 := StrPos(str2, str1);
while str3 <> nil do begin
ShowMessage(str3);
Inc(str3);
str3 := StrPos(str3, str1);
end;
while str3 <> nil do begin
ShowMessage(str3);
Inc(str3);
str3 := StrPos(str3, str2);??
end;
你试一试在Inc(str3)之后,看一看str3的值,即str3^是什么?
呵呵,知道错误了吧。
那么该如何取得用'.'分割开的第N个字符串呢?
返回结果也是pchar类型时的情况。我的想法是当知道了第N-1个'.'的位置,然后又知道了第N个点的位置,
那么就可以截取中间的字符串出来拉。但是具体应该怎么写法呢。如果是在delphi环境中就很简单了,但是在可以被其他程序共享的DLL中
我确实是被指针搞到昏掉了。刚学delphi,就碰上这种任务,惨呐!!!
procedure(const buff :PChar,const bufflen:Word)
多加一个bufflen参数,供函数内部做验证用.
var
str1,str2,str3,str4,str:pchar;
i, n: Integer;
begin
str2:= 'www.csdn.com';
str1:= '.';i := 0;
n := 2; // 查找第n个
str4 := str2;
str3 := StrPos(str2, str1);
str := nil;
while str3 <> nil do begin
Inc(i);
if i = n then begin
str := AllocMem(Integer(str3)-Integer(str4)+1);
StrLCopy(str, str4, Integer(str3)-Integer(str4));
Break;
end;
Inc(str3);
str4 := str3;
str3 := StrPos(str3, str1);
end;
if str = nil then begin
str := AllocMem(StrLen(str4)+1);
StrCopy(str, str4);
end;
ShowMessage(str);
FreeMem(str);
end;
期限就要到了,终于找到了方向。
sysu的例子让我知道了应该怎么使用pchar。
其他的函数也可以开始进行编写了。