KendrikLambard
Интересующийся
- Регистрация
- 18 Окт 2020
- Сообщения
- 35
- Реакции
- 0
Здрасте, имеется строка
kernel yutty data1 data2 iop aosp 2.005 1
Как бы эту строку разбить после пробелов использую сейчас такую функцию:
function SplitText(const AText: String; const ADelimiter: string): TStringList;
var
sl: TStringList;
P, P1: PChar;
S: String;
begin
sl := TStringList.Create;
with sl do
begin
Clear;
BeginUpdate;
try
P := PChar(AText);
P1 := P;
while P^ <> #0 do
begin
if P^ = ADelimiter then
begin
SetString(S, P1, P - P1);
Add(S);
P1 := CharNext(P);
end;
P := CharNext(P);
end;
if P1^ <> #0 then
begin
SetString(S, P1, P - P1);
Add(S);
end;
finally
EndUpdate;
Result := sl;
end;
end;
end;
Но проблема в том что пробелы в данной строке разной длинны как не делаю всё равно либо там либо там не разделяется, сделал бы несколько раз вроде не проблемно, но не возможно заранее узнать какой длинны будут пробелы в строке ?
s:=splittext(s,' ');
s:=splittext(s,#13 );
Так же с char тоже не приносит желаемого результата
s:=splittext(s,char(9));
s:=splittext(s,char(32));
И ещё абсолютно не хотелось бы делать с циклом (for i:=)
kernel yutty data1 data2 iop aosp 2.005 1
Как бы эту строку разбить после пробелов использую сейчас такую функцию:
function SplitText(const AText: String; const ADelimiter: string): TStringList;
var
sl: TStringList;
P, P1: PChar;
S: String;
begin
sl := TStringList.Create;
with sl do
begin
Clear;
BeginUpdate;
try
P := PChar(AText);
P1 := P;
while P^ <> #0 do
begin
if P^ = ADelimiter then
begin
SetString(S, P1, P - P1);
Add(S);
P1 := CharNext(P);
end;
P := CharNext(P);
end;
if P1^ <> #0 then
begin
SetString(S, P1, P - P1);
Add(S);
end;
finally
EndUpdate;
Result := sl;
end;
end;
end;
Но проблема в том что пробелы в данной строке разной длинны как не делаю всё равно либо там либо там не разделяется, сделал бы несколько раз вроде не проблемно, но не возможно заранее узнать какой длинны будут пробелы в строке ?
s:=splittext(s,' ');
s:=splittext(s,#13 );
Так же с char тоже не приносит желаемого результата
s:=splittext(s,char(9));
s:=splittext(s,char(32));
И ещё абсолютно не хотелось бы делать с циклом (for i:=)