当前位置:主页>销售管理软件> 列表

求救,字符串分割存放问题,好奇怪亚! 找下载管家婆财务软件

销售管理软件版1楼: 我在做将s:=string;按‘空格’分割提取字符串,将一个字符串分割成多个子字符串,并存入strarr:=array[1..8] of string;中,编译正常,
结果出现错误,错误如下:
s字符串={(228.0 222.0 229.0 000 54.3 2.23 19.0 00100011 }
分割后出现的错误strarr[1]:=228.0
strarr[2]:=222.0
strarr[3]:=229.0
strarr[4]:=000
strarr[5]:=54.3
strarr[6]:=2.23
strarr[7]:=''''
strarr[8]:=''''////后面两个数据为空???为什么????
代码如下,请高手详细指点,急,在线等!!!!!!
if (pos(''('',s)<>0) then//先去掉括号
begin
j:= 1;
sp1 := pos(''('',s);
s :='' ''+ copy(s,sp1+1,length(s)-sp1)+'' '';

repeat //按空格分割
S1:='''';
sp1:=pos('' '',s);
s:=copy(s,sp1+1,length(s)-sp1);
SP1:=0;
for i:=1 to length(s) do


begin
if copy(s,i,1)<>'' '' then
begin
s:=copy(s,i,length(s)-i);
break;
end
ELSE showmessage(''error'');
end;

sp1:=pos('' '',s);
s3:= s3+inttostr(sp1)+''#'';
s1:= copy(s,1,sp1-1);
s := copy(s,sp1,length(s)-sp1);
s2 :=s2+s1+''#'';
strarr[j] := s1;
inc(j);
until length(s)=16;
showmessage(S3);
edit1.text := strarr[1]+''V'';
edit4.text := strarr[3];
edit7.text := strarr[5];
edit13.text := strarr[4];
edit16.text := strarr[7];//+'' ''+Floattostr(9/5*strtofloat(strarr[7])+32)+''F'';
END;
end;

2楼: 建议使用TStrings
S : TStrings
S := TStringList.Create;
.


.
. 如东莞进销存软件

3楼: 同意用iamy的方法,一般分割字符我也用这种方法

4楼: 能说具体点吗?最好有代码,谢谢

5楼: StringList是Delphi中非常实用的字符串列表类:)

procedure TForm1.Button1Click(Sender: TObject);
var
SL:TStringList;
mstr:String;
i:Integer;
begin
mstr:=''(228.0 222.0 229.0 000 54.3 2.23 19.0 00100011'';
for i:=Length(mstr) downto 1 do
if not (mstr[i] in [''0''..''9'',''.'','' '']) then
Delete(mstr,i,1);
SL:=TStringList.Create;
SL.Delimiter:='' ''; //指定空格为分隔符
SL.DelimitedText:=mstr;
if SL.Count>0 then
ShowMessage(SL[0]+#9+SL[SL.Count-1]); //分解出来的第一个和最后一个串
ShowMessage(SL.Text);
SL.Free;
end;

6楼: function StrCleft(AStr: String; AChar: Char; ALeft: Boolean = true): String;
// 以指定字符分离字符串
// AStr 源字符串
// AChar 分隔字符
// ALeft true:取分隔字符左侧; false:取右侧
// 如果字符串找不到分隔符,则取左边时为全部,取右边时为空值。

procedure StrToStrs(AStr: String; AChar: Char; var AStrs: TStrings);
// 将一字符串以指定字符分离成字符串集
// AStr 源字符串
// AChar 分隔字符
// AStrs 字符串集

function StrCleft(AStr: String; AChar: Char; ALeft: Boolean = true): String;
var
m: Integer;
begin
m := pos(AChar, AStr);
if m > 0 then
begin
if ALeft then
Result := copy(AStr, 1, m - 1)
else
Result := copy(AStr, m + 1, Length(AStr));
end
else begin
if ALeft then
Result := AStr
else
Result := '''';
end;
end;

procedure StrToStrs(AStr: String; AChar: Char; var AStrs: TStrings);
var
strL, strR: string;
begin
strR := AStr;
AStrs.Clear;
while strR <> '''' do
begin
strL := StrCleft(strR, AChar, true);
AStrs.Append(strL);
strR := StrCleft(strR, AChar, false);
end;
end;

销售管理软件版7楼: Delphi自带了函数:ExtractStrings

8楼: 用CommaText


var
Ls:TStrings;
begin
Ls.CommmaText:= ''1,2.03,4'';//用逗号分隔
end;

9楼: 这样就行了
lsBox1.Items.Delimiter:= '' '';
lsBox1.Items.DelimitedText:= ''AB ccc xxx'';
已测试可用,不管几个空格,TStrings的函数自动给分分离好

10楼: 注释:谁有TSTRING,tstringlist,的详细资料,麻烦贴出来,谢谢,小弟我刚学半个多月,望大家帮助

11楼: 凑个热闹

procedure TForm1.Button1Click(Sender: TObject);

var
strarr:array[1..8] of string;
S:string;
i:integer;
begin
s:=''{(228.0 222.0 229.0 000 54.3 2.23 19.0 00100011 }'';
delete (s,1,pos(''('',s));
delete (s,pos(''}'',s),1);
for i:=1 to 8 do
begin
strarr[i]:=copy(s,1,pos('' '',s)-1);
delete(s,1,pos('' '',s));
showmessage(strarr[i]);
end;


end;

12楼: hao 如下载管家婆财务软件