Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2015, 23:13   #1
Artemelka
 
Регистрация: 25.12.2015
Сообщений: 3
По умолчанию Работа с файлом (Delphi)

Я новичок в delphi. А мне задали задачу, связанную с файлами. Очень прошу помочь.
Вот сама задача:
Требуется ввести искомое слово, одно из тех которое есть в файле, а затем определить номер строки, в которой это слово встречается и порядковый номер слова в этой строке. Эту информацию вывести на экран.
В исходном текстовом файле написан стишок из 4 строчек на английском.
Вот, что мне удалось сделать:
Код:
var f:text;
str:string; 
s:string;
i,j:byte;
row, pos1:integer;
Arr : array of array[0..1] of Integer;
begin
assign(f,'file1.txt');
reset(f);
write('Введите слово для поиска: ');
readln(s); 
while not eof(f) do
begin
readln(f,str);
if pos(S,str)>0 then
writeln(str); 
end;
close(f);
end.
Но здесь просто выводится строка с заданным словом, а мне нужны просто "координаты" этого слова.
Artemelka вне форума Ответить с цитированием
Старый 28.12.2015, 08:53   #2
Artemelka
 
Регистрация: 25.12.2015
Сообщений: 3
По умолчанию

Удалось определить номер строки, в которой это слово находится, а вот с его порядковым номером в строке все еще проблема
помогите пожалуйста!
Код:
var f:text;
str:string; 
s,k:string;
y,n,p,j,i:byte;
begin
assign(f,'file1.txt');
reset(f);
write('Введите слово для поиска: ');
readln(s);
y:=0;
n:=0;
while not eof(f) do
begin
readln(f,str);
if pos(S,str)>0 then break;
inc(y);
end;
close(f);
writeln('nomer stroki: ',y+1);
writeln('Posicia v strike: ', pos(s,str));
end.
Artemelka вне форума Ответить с цитированием
Старый 28.12.2015, 09:52   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

TStringList использовать можно?
Цитата:
а вот с его порядковым номером в строке все еще проблема
Для этого весьма желательно писать отдельную функцию.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 28.12.2015, 09:58   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Требуется ввести искомое слово, одно из тех которое есть в файле, а затем определить номер строки, в которой это слово встречается и порядковый номер слова в этой строке.
Раз Делфи, то и привыкай делать по-делфийски:
Код:
var q,w:TStrngList;i,j:integer;
begin
 w:=TStringList.Create;q:=TStringList.Create;
 w.LoadFromFile('file1.txt'); 
 for i:=0 to Count-1 do with q do begin
  DelimitedText:=q[i];
  j:=IndexOf(<искомое слово>);
  if j<>-1 then ShowMessage(Format('Слово найдено в строке %d под номером %d',[i,j]));
 end;
 w.free; q.free; 
end;
Это набросок. Изучи его работу а не копипасти. Копипасте не поможет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.12.2015, 21:39   #5
Artemelka
 
Регистрация: 25.12.2015
Сообщений: 3
По умолчанию

я, к сожалению, этого еще не проходил
не знаю таких команд
меня вероятно учат близко к паскалю
Artemelka вне форума Ответить с цитированием
Старый 30.12.2015, 12:21   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

А ты борись с системой - учи сам, не опираясь только на то что учат.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 30.12.2015, 12:35   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Для начала, всё же, советую определиться, что есть слово.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 30.12.2015, 12:37   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не знаю таких команд
Тогда примерно так:
Код:
var i,iCol,iRow:integer; s:String;
...
assign(f,'file.txt'); reset(f);
iRow:=1;
while not eof(f) do begin
 readln(f,s);
 iCol:=1; i:=1;
 i:=Pos(' ',s);
 while (Length(s)>0) and (i<>0) do begin
  if copy(s,1,i-1)=<Искомое слово> then 
     writeln('Найдено в ',iRow,' строке ',iCol,' колонке');
  delete(s,1,i); 
  inc(iCol);
  i:=Pos(' ',s);
 end;
end;
close(f);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с текстовым файлом [Delphi] Dakzy Помощь студентам 0 15.11.2015 20:47
Работа с текстовым файлом в Delphi Potemkin_42 Помощь студентам 10 11.01.2011 12:39
работа с файлом в Delphi TaYgA Помощь студентам 11 29.10.2009 18:27
Работа с файлом в (Delphi/pascal) Mashul'ka Помощь студентам 5 14.05.2009 16:54