Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Работа с техтом


Автор: Serg1977 18.11.2005, 06:53
Уважаемые господа, всемогущие програамисты!
Помогите плиз чайнику...
Есть текстовый файл, в нем содержиться текст,
так вот этот текст надо разбить.... Как это сделать, и если есть может у кого-нибудь программа, позволяющая это делать, вышлите плиз....

Тескст такого рода......

ст.Отрадная Отрадненского р-на Краснодарского края Россия
ЧЕРНОВЦЫ ЧЕРНОВИЦКОЙ ОБЛАСТИ УКРАИНА
С.СТАРЫЙ ОСТРОПОЛЬ СТАРОКОНСТАНТИНОВСКОГО Р-НА ХМЕЛЬНИЦКОЙ ОБЛАСТИ УКРАИНА
СЕРОВ СВЕРДЛОВСКОЙ ОБЛАСТИ
НЕФТЕКАМСК БАШКОРТОСТАН
ДЕР.ЧЕКАН-ТАМАК ШАРАНСКОГО Р-НА БАШКОРТОСТАН
ДЕР.ИЛЕБЕР САБИНСКОГО Р-НА ТАТАРСТАН
ОТРАДНЫЙ САМАРСКОЙ ОБЛАСТИ
С.Б-КУСКОВО ТОМСКОГО Р-НА ТОМСКОЙ ОБЛАСТИ

Первый столбец это населенный пункт
второй столбец - район
третий столбец - оласть или край
четвертый столбей - страна

Если это возможно, то помогите плиз, очень надо... smile

Автор: mvdr 18.11.2005, 07:16
разбить каждую строку на слова (по пробелам), потом смотреть, если слово "р-на" или что то типа такого - то слово перед ним пишем в соотв-ий столбец.

Автор: Негодяй 18.11.2005, 07:31
Цитата(Serg1977 @ 18.11.2005, 06:53)
Тескст такого рода......

ст.Отрадная Отрадненского р-на Краснодарского края Россия
ЧЕРНОВЦЫ ЧЕРНОВИЦКОЙ ОБЛАСТИ УКРАИНА
С.СТАРЫЙ ОСТРОПОЛЬ СТАРОКОНСТАНТИНОВСКОГО Р-НА ХМЕЛЬНИЦКОЙ ОБЛАСТИ УКРАИНА
СЕРОВ СВЕРДЛОВСКОЙ ОБЛАСТИ
НЕФТЕКАМСК БАШКОРТОСТАН
ДЕР.ЧЕКАН-ТАМАК ШАРАНСКОГО Р-НА БАШКОРТОСТАН
ДЕР.ИЛЕБЕР САБИНСКОГО Р-НА ТАТАРСТАН
ОТРАДНЫЙ САМАРСКОЙ ОБЛАСТИ
С.Б-КУСКОВО ТОМСКОГО Р-НА ТОМСКОЙ ОБЛАСТИ

Код

var f:textfile;
      s:string;
begin
assignfile(f,'<здесь пишеться путь к файлу и имя файла *.txt>');//переменная f связывается 
// c файлом
reset(f); //файл открывается для чтения или записи
while not eof(f) do //пока не доберёмся до последнеей строки делать
begin
readln(f,s);//читаем текущею строку
pos('район',s); //ищем слова 'район' в текущей строке
....          //здесь или выводим куданибудь эти строки или сохраняем в другом файле

end;
closefile(f);
end;

Автор: Serg1977 18.11.2005, 08:22
Не работает, говорит что неизвестная переменная....(в Паскале)....
Можно весь код полностью с сохранением....
Пожалуйста.....

Автор: Alexeis 18.11.2005, 13:06
В паскале будет так
Код

var f:text;
      s:string;
begin
assign(f,'<здесь пишеться путь к файлу и имя файла *.txt>');//переменная f связывается 
// c файлом
reset(f); //файл открывается для чтения или записи
while not eof(f) do //пока не доберёмся до последнеей строки делать
begin
readln(f,s);//читаем текущею строку
pos('район',s); //ищем слова 'район' в текущей строке
....          //здесь или выводим куданибудь эти строки или сохраняем в другом файле

end;
close(f);
end;

Автор: Негодяй 19.11.2005, 17:19
Цитата(Serg1977 @ 18.11.2005, 08:22)
Не работает, говорит что неизвестная переменная....(в Паскале)....
Можно весь код полностью с сохранением....
Пожалуйста.....

Ещё один файл нужно открыть в коде для записи. Он открывается также как и в приведённом алгоритме smile только вместо reset можно использовать rewrite.

и здесь:
Цитата(alexeis1 @ 18.11.2005, 13:06)
while not eof(f) do //пока не доберёмся до последнеей строки делать
begin
readln(f,s);//читаем текущею строку
pos('район',s); //ищем слова 'район' в текущей строке
....          //здесь или выводим куданибудь эти строки или сохраняем в другом файл

так надо:
Код

//разбить слова до пробелов и искать в них нужные слова
//а чтобы разбить слова до пробелов, придумай свой метод!
//и далее:
if pos('р-н')>0 then
s1:=copy(s,pos('р-н'),' ');//или что-то в этом роде
smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)