Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с текстовым файлом

15K
12 ноября 2006 года
vania
21 / / 23.10.2006
Есть ли в Delphi команда, которая распознает отдельные слова в текстовом файле?

Пусть b: array[1..const] of string;
Нужно каждому b присвоить значение слова от 1 до n, из текстового файла.

Например, b[1]:=есть, b[2]:=ли, b[3]:= в и т.д., если файл состоит из первой строчки, приведенной здесь:
//Есть ли в Delphi команда, которая распознает отдельные слова в текстовом файле?//

b нужно присваивать значения только слов, а не знаков, таких как пробел, запятая и т.д.
497
12 ноября 2006 года
IL84
267 / / 24.04.2003
Команды нет, но есть пакет Fundamentals с функцией StrSplitChar, которая вернет массив строк.
5.1K
12 ноября 2006 года
saturn61
108 / / 25.10.2006
Да, команды нет, но для выделения слов из строчки можно использовать copy и detete. Вот те код может прокатит.

Код:
....................................................................
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; //Записываем в массив последнее слово
................................................................................

Рабочая тема :cool: для одной строки, если строк много просто всё это засунь в массив, ну там разберешься. :D
547
13 ноября 2006 года
Hydra
488 / / 20.06.2006
Глянь сойства TStringList CommaText, DelimitedText
И еще поиск по форуму по этим словам - подобная тема поднималась.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог