
24.02.2010, 17:15
|
 |
Начинающий
|
|
Регистрация: 09.02.2010
Адрес: Россия / Ставрополь
Сообщения: 138
Репутация: 475
|
|
можно так (примитивно, делал лет 7 назад) (comma - разделитель, тоесть если надо по переносу строки, то разделитель будет #13)
Код:
function GetWords(comma,s: string): TStrings;
function GetComma(comm,j: string): string;
var
a,p: integer;
r,outstr: string;
begin
r := j;
if r[1] = comma then Delete(r,1,1);
p := Pos(comma,r);
for a:=1 to p-1 do
begin
outstr := outstr + r[a];
end;
Result := outstr;
end;
var
l: string;
a,f,b,z: integer;
begin
b := 0;
z := 0;
l := s + comma;
for f:=1 to Length(l) do
begin
if l[f] = comma then b := b + 1;
end;
while z < b do
begin
a := Pos(comma,l);
Result.Add(GetComma(comma,l));
Delete(l,1,a);
Inc(z);
end;
end;
а можно воспользоваться функцией WrapText (описание тут):
пример стопицот летней давности:
Код:
function WrapWords(s: string): string;
var
a: integer;
d: string;
begin
d := WrapText(s, #13#10, ['.',' ',#9,'-'], 1);
for a:=1 to Length(d) do
begin
if d[a] = ' ' then Delete(d,a,1);
end;
Result := d;
end;
|