str:='0012abcdefgh0010abcdes0009abcde'
判断第3、4两位,根据该值取数据长度,组成串,分别放到listbox上
如上面的在listbox上显示:
0012abcdefgh
0010abcdes
0009abcde
-----------------
上面第一行总长为12字符,第二行总长为10字符,第三行总长为9字符
判断第3、4两位,根据该值取数据长度,组成串,分别放到listbox上
如上面的在listbox上显示:
0012abcdefgh
0010abcdes
0009abcde
-----------------
上面第一行总长为12字符,第二行总长为10字符,第三行总长为9字符
begin
n := StrToInt(copy(str,3,2))
listbox.items.add(Copy(str,1,n))
str := copy(str,n+1,500)
if str = '' then break
end
var
Str:String;
i:Integer;
begin
Str:='0012abcdefgh0010abcdes0009abcde';
ListBox1.Items.Clear;
while true do
begin
i:=StrToInt(copy(Str,3,2));
ListBox1.Items.Add(copy(Str,1,i));
delete(str,1,i);
if Str='' then Break;
end;
end;
var i,j:integer;
begin
i:=0;
j:=0;
richedit1.Lines.Clear;
i:=strtoint(MidStr(Mystr,j+1+2,2));
richedit1.Lines.Add(leftstr(mystr,i));
j:=i;
i:=strtoint(MidStr(Mystr,j+1+2,2));
richedit1.Lines.Add(midstr(mystr,j+1,i));
j:=j+i;
i:=strtoint(MidStr(Mystr,j+1+2,2));
richedit1.Lines.Add(midstr(mystr,j+1,i));
//
end;
var
Str:String;
i:Integer;
begin
Str:='0012abcdefgh0010abcdes0009abcde';
ListBox1.Items.Clear;
repeat
i:=StrToInt(copy(Str,3,2));
ListBox1.Items.Add(copy(Str,1,i));
delete(str,1,i);
until Str='';
end;
//AStr:存放原字符串
//AList:存放结果
//正确返回 true
//错误返回 falsefunction str2list(AStr: string; AList: tstrings): boolean;//用来分隔字符串为LIST
function SplitString(const source, ch: string): tstrings;
var
temp : string;
i : integer;
begin
result := tstringlist.Create;
temp := source;
i := pos(ch, source);
while i <> 0 do
begin
result.Add(copy(temp, 0, i - 1));
delete(temp, 1, i);
i := pos(ch, temp);
end;
result.Add(temp);
end;var
tList : tstrings; //分隔临时结果
i : integer;
begin
result := false;
tList := tstringlist.Create;
try
tList := SplitString(AStr, '00');
for i := 0 to tList.Count - 1 do
if tList.Strings[i] <> '' then
begin
if StrToInt(copy(tlist.Strings[i], 0, 2)) > length(tlist.Strings[i])
then
aList.Add('00' + tList.Strings[i])//如果是0009,就会分成两位,如09必须多补一个‘0’
else
aList.Add('0' + tList.Strings[i]);//一般的都会是3位,如012
end;
finally
freeandnil(tList);
result := true;
end;
end;
其实这个也有些太烦了,你只要在'0012abcdefgh0010abcdes0009abcde'里找‘00’,然后加入到listbox里就行了
过程大概如下:
1.删除前两个'0',因为你查到的肯定是第一个,去掉就会找到下一个的位置
2.用leftstr取前面的的pos个字符串,前加'00'后写入listbox
3.用rightstr把余下的写到查找字符串里
3.循环到POS不到结束
如果你写不出来,给我再发短信,我给你写