带分隔符的字符串读取 Pchar 问题

wzgdyn 2008-09-26 06:51:11
一个Pchar类型的字符串outdata='姓名|性别|年龄|职务|电话|地址'
每个数据之间是用“|”隔开的,怎样截取出每个数据分别赋值给其他变量??
stra:=姓名;
strb:=性别;
strc:=年龄;
strd:=职务;
stre:=电话;
strf:=地址;
...全文
140 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
五维思考 2008-09-27
  • 打赏
  • 举报
回复
来晚了,还有分接吗?
DreamMan81 2008-09-27
  • 打赏
  • 举报
回复
对呀,不固定可以先循环计算出含'|'的个数在用上面的方法不就得了
xiaoxingchi 2008-09-27
  • 打赏
  • 举报
回复
////////////////////////////////////////////////////////////////
//分割字符串
////////////////////////////////////////////////////////////////
procedure CutStr();
var
ASource: PChar;
AStr: String;
ACount,i: Integer;
AStrings: TStringList;
begin
//ASource := '姓名|性别|年龄|职务|电话|地址';

AStrings := TStringList.Create;
try
ACount := ExtractStrings(['|'], [' '], ASource, AStrings);
for i := 1 to ACount do
begin
showmessage(AStrings.Strings[i-1]);
end;
finally
AStrings.Free;
end;
end;
喝口水 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wzgdyn 的回复:]
hys_427
我用的是Delphi5,这样定义一个Tstringlist,没有Delimiter这个属性,编译就是不能通过
错误提示:
undeclared indentifier 'Delimiter'
[/Quote]

下面这种方面也可以实现
procedure TForm1.Button1Click(Sender: TObject);
var
str:string;
list:TStringlist;
i:integer;
begin
str:= '姓名|性别|年龄|职务|电话|地址';
list:=TStringlist.Create;
i:=pos('|',str);
while i>0 do
begin
list.Add(copy(str,1,i-1));
delete(str,1,i);
i:=pos('|',str);
end;
list.Add(str);
memo1.Lines.Text:=list.Text;
{
stra:=List[0];
strb:=List[1];
strc:=List[2];
strd:=List[3];
stre:=List[4];
strf:=List[5]; }
list.free;
end;
lihuasoft 2008-09-27
  • 打赏
  • 举报
回复
Delphi5试一下这样可以不:



procedure TForm1.Button1Click(Sender: TObject);
var
SS : TStringList;
OutData: string;
I: integer;
begin
outdata := '姓名|性别|年龄|职务|电话|地址';
SS := TStringList.Create;
SS.Text := StringReplace(OutData, '|', #10, [rfReplaceAll]);
for I := 0 to SS.Count-1 do
Showmessage(SS[I]);
end;
阿三 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 tody_guo 的回复:]
List.DelimitedText:= 后面的文本内容不固定怎么处理啊?也就是说“|”这个数量不是很固定的,请问怎么处理啊?
[/Quote]
不固定可以用循环取出
for i:=0 to stringlist1.count-1 do
...........
gwhdaxia 2008-09-27
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
outdata : Pchar ;
list :TStringlist ;
str : String;
begin
outdata:='姓名|性别|年龄|职务|电话|地址' ;
str := stringreplace(outdata,'|',#13,[rfReplaceAll]);
list :=TStringlist.Create ;
list.Text := str ;
 stra:=List[0];
strb:=List[1];
strc:=List[2];
strd:=List[3];
stre:=List[4];
strf:=List[5];
list.Free;
end;
喝口水 2008-09-27
  • 打赏
  • 举报
回复
你Delphi版本的问题,现在很少人用d5了,我的delphi6可以通过
wzgdyn 2008-09-27
  • 打赏
  • 举报
回复
hys_427
我用的是Delphi5,这样定义一个Tstringlist,没有Delimiter这个属性,编译就是不能通过
错误提示:
undeclared indentifier 'Delimiter'
喝口水 2008-09-27
  • 打赏
  • 举报
回复
不管有多少个分隔符,都可以用上面的方法处理
Tody Guo 2008-09-27
  • 打赏
  • 举报
回复
List.DelimitedText:= 后面的文本内容不固定怎么处理啊?也就是说“|”这个数量不是很固定的,请问怎么处理啊?
喝口水 2008-09-27
  • 打赏
  • 举报
回复
什么单元都不用引用
procedure TForm1.Button3Click(Sender: TObject);
var
List: TStringList;
begin
List:= TStringList.Create;
List.Delimiter:= '|';
List.DelimitedText:= '姓名|性别|年龄|职务|电话|地址';
stra:=List[0];
strb:=List[1];
strc:=List[2];
strd:=List[3];
stre:=List[4];
strf:=List[5];
list.free;
end;
wzgdyn 2008-09-26
  • 打赏
  • 举报
回复
用List.Delimiter 需要引用什么单元啊?
编译通不过啊????
阿三 2008-09-26
  • 打赏
  • 举报
回复
这个问题问了好多次了,呵呵
czx33859066 2008-09-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hys_427 的回复:]
var
List: TStringList;
...
List := TStringList.Create;
List.Delimiter := '|';
List.DelimitedText := '姓名|性别|年龄|职务|电话|地址';
 stra:=List[0];
strb:=List[1];
strc:=List[2];
strd:=List[3];
stre:=List[4];
strf:=List[5];
list.free;
[/Quote]
up
喝口水 2008-09-26
  • 打赏
  • 举报
回复
var
List: TStringList;
...
List := TStringList.Create;
List.Delimiter := '|';
List.DelimitedText := '姓名|性别|年龄|职务|电话|地址';
 stra:=List[0];
strb:=List[1];
strc:=List[2];
strd:=List[3];
stre:=List[4];
strf:=List[5];
list.free;
kernelj 2008-09-26
  • 打赏
  • 举报
回复
var
List: TStringList;
...
List := TStringList.Create;
List.Delimiter := '|';
List.DelimitedText := '姓名|性别|年龄|职务|电话|地址';
...
List[0],List[1]等就是你要的。

16,742

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧