字符串形式为:/*/*/*/,如何才能取得中间的*哪?*表示字符串 取得*之后,赋值给不同的变量。这样的语句该如何写哪? 谢了,:)
解决方案 »
- DBGRIDEH中某列中存在多行相同,只显示第一行信息,其他相同的不显示
- Delphi +ADO+ACCESS 在我把原来在SQL SERVER调试通过的程序改到ACCESS,提交数据时报错:“缺少更新或刷新的健列信息”,救我!!!
- spcomm在98系统下怎么读取的数据不完整?
- 关于VB不懂的代码(如何转换成DELPHI中代码),求解
- 打开Delphi的帮助,提示“为此Windows版本不支持的语言的创建”(急)
- 何谓 系统接口定义??
- 什么是三层数据库!!
- 升了一个三角,散分
- 疑难问题ActiveForm上包含一个panel1编译成Activeform1.ocx在别的程序引用此控件后如何获得panel1.caption的值
- 请问如何用程序向TChart 增加一个BarSeries,有没有例子程序
- 动态彩色菜单(带图标)制作的问题?
- 哪位用纯C作过串口通讯的模块
var
i : Integer;
s : string;
begin
with TStringList.Create do
begin
s := '/33/"321 424"/24234234/';
Delimiter :='/';
DelimitedText := Copy(s,2,Length(s)-2);
for i:=0 to Count-1 do
begin
if Strings[i]<>'' then
ShowMessage(Strings[i]);
end;
end;
end;
var
i : Integer;
s : string;
begin
with TStringList.Create do
begin
s := '/33/"321 424"/24234234/';
Delimiter :='/';
DelimitedText := Copy(s,2,Length(s)-2);
for i:=0 to Count-1 do
begin
if Strings[i]<>'' then
ShowMessage(Strings[i]);
end;
free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s,sTemp : string;
i : Integer;
begin
sTemp := '';
s := '/33/321 424/2423'#10'4234/';
for i:=2 to Length(s) do
begin
if s[i]='/' then
begin
ShowMessage(sTemp);
sTemp :='';
end
else
sTemp := sTemp+s[i];
end;
end;
设s0:='/abcd/efghij/klmop';1.去掉s0的第1个'/':
s1:=copy(s0,2,length(s)-1);
则s1='abcd/efghij/klmop';2.查出s0第2个'/'的位置, 也就是s1中第1个'/'的位置:
p:=pos('/',s1);
则 p=5;3.求s1中/后面的子串:
s2:=copy(s1,p,length(s1)-p);
则s2='efghij/klmop';4.查出s0第3个'/'的位置, 也就是s2中'/'的位置:
p:=pos('/',s2);
则p=7;5.求s3:=copy(s2,1,p-1);
则s3就是结果efghij了.
Function FillAStringList(Str : String; SL : TStrings):Boolean
Var
ret : Integer;
tmp_str : String;
Begin
ret := Pos('/',Str);
While ret > 0 do
Begin
if ret = 1 then
str := Copy(str,ret+1,MaxInt);
else
Begin
tmp_str := Copy(str,1,ret-1);
SL.add(tmp_str);
end
ret := Pos('/',Str);
end;
Result := True;
end;//没测试
字符串中是不带换行的。
因为我是用MEMO插入的数据,不可能不带有换行,而且,必须有换行的
//返回substr在sousestr中第index次出现的位置
function PosEx(subStr:string;SouseStr:string;Index:integer):integer;
var
i:integer;
iPos:integer;
AStr:string;
begin
AStr := SouseStr;
result := 0;
for i := 1 to Index do
begin
iPos := Pos(subStr,AStr);
if iPos = 0 then exit;
if i = Index then
begin
result := length(SouseStr) - length(AStr) + iPos;
exit;
end;
System.Delete(AStr,1,iPos + length(subStr) - 1);
end;
end;