есть ли во фрипаскале такая функция как в PHP которая разивает строку в массив по подстроке. Например есть строка a^b^c^d ее нужно разбить в массив по символу ^
Соответственно элементами массива будут a, b, c, d
Модератор: Модераторы
type
TStringArr = array of string;
function explode(Delim: Char; const S: string): TStringArr;
var i, k, Len, Count: Integer;
begin
Len := Length(S);
Count := 0;
k := 1;
for i := 1 to Len do
begin
if S[i] = Delim then
begin
Inc(Count);
SetLength(Result, Count);
SetString(Result[Count-1], PChar(@S[k]), i-k);
k := i + 1;
end; // if
end; // for i
Inc(Count);
SetLength(Result, Count);
SetString(Result[Count-1], PChar(@S[k]), Len-k+1);
end;
function explode(Delim: Char; const S: string): TStringArr;
var i, k, Len, Count: Integer;
begin
Len := Length(S);
Count := 0;
for i := 1 to Len do
if S[i] = Delim then Inc(Count);
SetLength(Result, Count + 1);
Count := 0;
k := 1;
for i := 1 to Len do
begin
if S[i] = Delim then
begin
Inc(Count);
SetString(Result[Count-1], PChar(@S[k]), i-k);
k := i + 1;
end;
end; // for i
Inc(Count);
SetString(Result[Count-1], PChar(@S[k]), Len-k+1);
end;
procedure test_explode(const S: string);
var
arr: TStringArr;
i, Len: Integer;
begin
writeln(S);
arr := explode2('\', S);
Len := Length(arr);
for i := 0 to Len-1 do
begin
writeln(arr[i]);
end; // for i
end;
Nesmit писал(а):Например, не нашел GradToDeg. А хотелось бы
Nesmit писал(а):Потому что нет такой функции, хоть и примитивная.
Вернуться в Free Pascal Compiler
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14