您好我正在处理字符串拆分合并,如下所示:
Button1.click...etc.
var
s:String;
ars:array[1..10] of String;
i:integer;
begin
ars[1]:='0';
ars[2]:='012';
ars[3]:='23';
ars[4]:='458';
ars[5]:='022'; // These values are example of.
ars[6]:='001';
ars[7]:='0125';
ars[8]:='250';
ars[9]:='859';
ars[10]:='9';
for i:=1 to 10 do
begin
s:=s+ars[i];
end;
//Finally I get string like this example: '01123641054257867420..etc..'
end;
如何将最终字符串拆分回来?我不知道ars数组值的长度。正如你看到它的一些4字节,3字节,2字节..我合并所有它然后我想再拆分它..我怎么能这样做?有什么想法或算法吗?我在谷歌搜索但我什么都没有..谢谢..
@Jens Borrisholt我的代码是:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{ TMyStrings }
{$R *.dfm}
type TMyStrings = class(TStringList)
protected
function GetTextStr: string; override;
end;
function TMyStrings.GetTextStr: string;
var
Element: String;
begin
Result := '';
for Element in Self do
Result := Result + Element;
end;
end.
问题出在哪里?
答案 0 :(得分:3)
没有内置功能,因为您丢弃信息(每个字符串的长度)。所以信息必须存储在某个地方。
您可以使用TStringList后代:
<强>接口强>
TMyStrings = class(TStringList)
protected
function GetTextStr: string; override;
end;
<强>实施强>
{ TMyStrings }
function TMyStrings.GetTextStr: string;
var
Element: String;
begin
Result := '';
for Element in Self do
Result := Result + Element;
end;
以及如何使用它:
procedure TForm5.FormCreate(Sender: TObject);
var
MyStrings : TMyStrings;
begin
MyStrings := TMyStrings.Create;
MyStrings.Add('0');
MyStrings.Add('012');
MyStrings.Add('23');
MyStrings.Add('458');
MyStrings.Add('022'); // These values are example of.
MyStrings.Add('001');
MyStrings.Add('0125');
MyStrings.Add('250');
MyStrings.Add('859');
MyStrings.Add('9');
Caption := MyStrings.Text;
FreeAndNil(MyStrings);
end;
有了这个,您可以将列表作为连接字符串获取,并且您仍然可以获得有关每个字符串的原始信息。