....................................................................
const
n=100;//Количество слов
zn:array [1..3] of Char = (' ', ',' , '.'); //Какие знаки не нужны
kol = 3;// Количество таких знаков
var
b:array [1..n] of string;//Массив слов
st:string = 'Est gin na marse, moget net.';//Пусть это строка из файла
s:string;//Строка, с которой будем работать
p,i:integer;
...............................................................................
// Функция определяет позицию первого какого-нибудь знака из массива zn
function pos_zn(ss:string):integer;
var
min,j,pp:integer;
begin
min:=length(ss);
result:=0;
for j:=1 to kol do begin
pp:=pos(zn[j],ss);
if (pp<=min)and(pp<>0) then begin
min:=pp;
result:=pp;
writeln(result);
end;
end;
end;
..............................................................................
begin
..............................................................................
s:=st;
i:=0;//Число найденых слов
while pos_zn(s)<>0 do begin //Если знак из массива найден , то....
p:=pos_zn(s);//Получаем номер позиции этого знака
if p<>1 then begin
inc(i); //Увеличиваем число слов
b:=copy(s,1,p-1); //Записываем слово в массив
end;
delete(s , 1 , p ); //Вырезаем слово из строчки
end;
b[i+1]:=s; //Записываем в массив последнее слово
................................................................................
Работа с текстовым файлом
Пусть b: array[1..const] of string;
Нужно каждому b присвоить значение слова от 1 до n, из текстового файла.
Например, b[1]:=есть, b[2]:=ли, b[3]:= в и т.д., если файл состоит из первой строчки, приведенной здесь:
//Есть ли в Delphi команда, которая распознает отдельные слова в текстовом файле?//
b нужно присваивать значения только слов, а не знаков, таких как пробел, запятая и т.д.
Команды нет, но есть пакет Fundamentals с функцией StrSplitChar, которая вернет массив строк.
Код:
Рабочая тема :cool: для одной строки, если строк много просто всё это засунь в массив, ну там разберешься. :D
И еще поиск по форуму по этим словам - подобная тема поднималась.