Перебор Файлов В Папке И Последующий Поиск

Тема в разделе "Pascal and Delphi", создана пользователем rob777, 7 дек 2011.

Статус темы:
Закрыта.
  1. rob777

    rob777 Гость

    Здравствуйте!
    Нужно написать программу, которая будет открывать по очереди каждый файл(файлы имеют разные названия) в определенной папке и искать в ней слова(например:после name до f выписать слово). Файлы все в формате txt.
    Вот я попробовал кое-что написать, но заступорился: Код на Паскаль

    program go;
    Uses DOS;
    var
    S: SearchRec;
    begin
    FindFirst('C:\marcom\proba\*.txt',AnyFile,S);{открываем файлы по очереди}
    while DosError = 0 do
    with S do
    Reset(s); {открываем файл}
    While not eof(f1) do {читаем файл до конца}
    {как здесь организовать поиск слова, который находится от <title> до</title>}
    {дальше переходим к другому файлу}
    FindNext(S)

    end.

    Заранее спасибо
     
  2. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    Reset не открывает файл а перематывает его для чтения. открывают файл Assign или AssignFile
    если вы хотите обрабатывать информацию внутри прочитайте ее сначала например методом Read или ReadFile
    и не забудте закрыть файл после обработки.

    Вобщем смотрите хелп.
     
  3. rob777

    rob777 Гость

    Сейчас попробую доработать
     
  4. rob777

    rob777 Гость

    Вот я попытался доработать, но одна проблема все-таки осталась. у меня не получается сделать чтобы он перебирал файлы в папке, а только вводить вручную, можете помочь пожалуйста?

    <!--shcode--><pre><code class='pascal'>uses crt;
    const
    n=123;
    var
    ch:char;
    s:string[n];
    i:integer;
    f:text;

    Procedure findText;
    begin
    reset(f);
    repeat
    s:='';
    for i:=1 to (n-1) do
    begin
    read(f,ch);
    s:=ch;
    end;
    repeat
    read(f,ch);
    s[n]:=ch;
    for i:=1 to n do begin
    s:=s+s;
    end;
    if s='<div class="labeled fl_l"><a href="/search?c[name]=0&c[section]=people&c[politic]=9" onclick="return nav.go(this, event);">' then
    begin
    write(' ');
    break;
    end;
    for i:=2 to n do
    begin
    s[i-1]:=s;
    end;
    until eof(f);
    BEGIN
    repeat
    if eof(f)=true then begin
    break;
    end;
    read(f,ch);
    if ch='<' then
    begin
    writeln;
    readln(f);
    break;
    end;
    write(ch);
    until eof(f);
    END;
    until eof(f);
    close(f);
    end;

    Begin
    clrscr;
    assign(f,'C:\12.txt');
    findText;
    assign(f,'C:\22.txt');
    findText;
    assign(f,'C:\33.txt');
    findText;
    assign(f,'C:\44.txt');
    findText;
    assign(f,'C:\55.txt');
    findText;
    readkey;
    end.[/CODE]
     
  5. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    да замени assign(f,...); на связывание файловой переменной f через assign с именем найденного файла.
    Т.е. в первоначальном примере убери "Reset(s); {открываем файл}" и добавь связывание файловой переменной с именем файла (с SR.Name, возможно, еще и путь надо добавить, не помню) и потом уже вызывай findText
     
  6. rob777

    rob777 Гость

    Не понял, а как добавить связывание с переменной? Я пробовал через FinfFirst, но вот все никак.
     
  7. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    примерно так:
    Код (Delphi):
    var
    S: SearchRec;
    f:text;
    begin
    FindFirst('C:\marcom\proba\*.txt',AnyFile,S);
    while DosError = 0 do
    begin
    assign(f, 'C:\marcom\proba\' + s.Name); {связываем с найденным файлом}
    findText;
    FindNext(S)
    end;
    end.
     
  8. rob777

    rob777 Гость

    У меня возникла такая проблема. Чтобы работать с функцией FindFirst надо подключить модуль WinDos, когда я ввожу его в pascal abc он пишет, что модуль не найден. Моя программа в TP7 отказывается работать, пишет, что file not found и показывает на строку reset(f), что делать не знаю...
     
  9. rob777

    rob777 Гость

    А вот так можно? Я посмотрел, dos на abc - utils, но при запуске пишет неизвестный идентификатор FileFirst. Почему?

    Код (Delphi):
    uses crt,utils;
    const
    n=123;
    var
    ch:char;
    s:string[n];
    i:integer;
    f:text;
    DirInfo : SearchRec;
    FileMask : String;
    FilePath : String;
    FileName : String;

    Procedure findText;
    begin
    reset(f);
    repeat
    s:='';
    for i:=1 to (n-1) do
    begin
    read(f,ch);
    s[i]:=ch;
    end;
    repeat
    read(f,ch);
    s[n]:=ch;
    for i:=1 to n do begin
    s:=s+s[i];
    end;
    if s='<div class="labeled fl_l"><a href="/search?c[name]=0&c[section]=people&c[politic]=9" onclick="return nav.go(this, event);">' then
    begin
    write(' ');
    break;
    end;
    for i:=2 to n do
    begin
    s[i-1]:=s[i];
    end;
    until eof(f);
    BEGIN
    repeat
    if eof(f)=true then begin
    break;
    end;
    read(f,ch);
    if ch='<' then
    begin
    writeln;
    readln(f);
    break;
    end;
    write(ch);
    until eof(f);
    END;
    until eof(f);
    close(f);
    end;

    Begin
    clrscr;

    FilePath:='C:\Users\marcom\proba\';
    FileMask:='*.txt';
    FindFirst(FilePath+FileMask, Archive, DirInfo);
    While DosError = 0 Do
    Begin
    FileName:=FilePath+DirInfo.Name;
    assign(f,FileName);
    findText;
    FindNext(DirInfo);
    End;
    WriteLn('Press any key...');
    readkey;
    end.
     
Загрузка...
Похожие Темы - Перебор Файлов Папке
  1. iivvnn
    Ответов:
    4
    Просмотров:
    1.860
  2. 123456789igor
    Ответов:
    1
    Просмотров:
    1.571
  3. sima12
    Ответов:
    4
    Просмотров:
    1.775
  4. Altaya
    Ответов:
    10
    Просмотров:
    2.812
  5. MMN
    Ответов:
    28
    Просмотров:
    7.635
Статус темы:
Закрыта.

Поделиться этой страницей