Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.03.2010, 14:22
AllenWallker AllenWallker вне форума
Прохожий
 
Регистрация: 24.03.2010
Сообщения: 8
Репутация: 10
По умолчанию Подсчет кол-ва файлов в папке

Ребят кто нить подскажите как подсчитать кол-во текстовых файлов в папке и в следующих под папках. И как открыть их все для чтения?
Заранее благодарен!
Ответить с цитированием
  #2  
Старый 24.03.2010, 17:20
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,029
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

FindFirst/FindNext/FindClose.
Ну а открывать, зная имя, можно разными способами. Смотря для чего тебе.
Ответить с цитированием
  #3  
Старый 24.03.2010, 20:54
AllenWallker AllenWallker вне форума
Прохожий
 
Регистрация: 24.03.2010
Сообщения: 8
Репутация: 10
По умолчанию

открывать чтоб найти определенные слова.FindFirst/FindNext/FindClose -есть ли примеры их использования?
Ответить с цитированием
  #4  
Старый 24.03.2010, 23:32
Аватар для ryderx34
ryderx34 ryderx34 вне форума
Активный
 
Регистрация: 22.01.2010
Сообщения: 211
Версия Delphi: 7, 2010
Репутация: 1349
По умолчанию

Цитата:
Сообщение от AllenWallker
открывать чтоб найти определенные слова.FindFirst/FindNext/FindClose -есть ли примеры их использования?
Код:
var
 SearchRec:TSearchRec;
begin
  if FindFirst('C:\'+'*.jpg', faAnyFile, SearchRec)=0 then
    repeat
      ListBox1.Items.Add(SearchRec.Name);
    until FindNext(SearchRec) <> 0;
  FindClose(SearchRec);
end;
Ответить с цитированием
  #5  
Старый 25.03.2010, 13:49
AllenWallker AllenWallker вне форума
Прохожий
 
Регистрация: 24.03.2010
Сообщения: 8
Репутация: 10
По умолчанию

а как все эти файлы открыть для чтения и сделать один большой массив или для каждого найденного собственный?
Ответить с цитированием
  #6  
Старый 27.03.2010, 21:19
AllenWallker AllenWallker вне форума
Прохожий
 
Регистрация: 24.03.2010
Сообщения: 8
Репутация: 10
По умолчанию

помогите пожалуйста очень нужно!!
Ответить с цитированием
  #7  
Старый 27.03.2010, 22:52
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

На кой вам их все одновременно держать открытыми? А если их будет 1000 штук? Вы бы объяснили сверхзадачу, может все намного проще надо делать.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #8  
Старый 28.03.2010, 13:37
AllenWallker AllenWallker вне форума
Прохожий
 
Регистрация: 24.03.2010
Сообщения: 8
Репутация: 10
По умолчанию

нужно сделать анализатор языка Python надо проследить какая функция используется или нет, какие переменные используются ,какой модуль был подключен и используется ли он...
вот в общем задача.
как я понял мне надо найти все файлы с расширение *.py открыть их скинуть содержимое их куда нить и начать находить переменные модули и функции.
Если ошибаюсь подправьте и подскажите!
Заранее Спасибо!
Ответить с цитированием
  #9  
Старый 28.03.2010, 16:34
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Можно клнечно действительно сделать один громадный текстовик содержащий весь программный код, в плане скорости доступа, выигрыш будет, но удобно ли это будет использовать - большой вопрос.
Но хозяин барин. Вот код который загоняет все содержимое встречающихся файлов с расширение *.py в TStringList:
Код:
unit Unit44;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm44 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    Listing: TStringList;
    procedure FolderScan(Folder: String);
  end;

var
  Form44: TForm44;

implementation

{$R *.dfm}

procedure TForm44.FolderScan(Folder: String);
Var FileInfo: TSearchRec;
    S: TStringList;
begin
 if FindFirst(Folder + '*.*', faAnyFile, FileInfo) = 0
 then try
       repeat
        if (FileInfo.Name = '.') or (FileInfo.Name = '..') then Continue;
        if (FileInfo.Attr and faDirectory <> 0)
        then begin
             FolderScan(Folder+FileInfo.Name+'\');
             Continue;
             end;
        if ExtractFileExt(FileInfo.Name) = '.py'
        then begin
             S := TStringList.Create;
             S.LoadFromFile(Folder+FileInfo.Name);
             Listing.AddStrings(S);
             S.Free;
             end;
       until FindNext(FileInfo) <> 0;
      finally
       SysUtils.FindClose(FileInfo);
      end;
end;

procedure TForm44.FormCreate(Sender: TObject);
begin
 Listing := TStringList.Create;
 FolderScan('E:\DBase\MARAFON\');
end;

end.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #10  
Старый 28.03.2010, 19:46
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,029
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

По моему, надо подходить к этому вопросу с другой стороны. Тебе нужен парсер питона, который будет строить соотв. дерево синтаксического разбора.
Ответить с цитированием
  #11  
Старый 28.03.2010, 20:49
AllenWallker AllenWallker вне форума
Прохожий
 
Регистрация: 24.03.2010
Сообщения: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
По моему, надо подходить к этому вопросу с другой стороны. Тебе нужен парсер питона, который будет строить соотв. дерево синтаксического разбора.
а поточнее можно ли обьяснить как это будет происходить?
Ответить с цитированием
  #12  
Старый 28.03.2010, 20:51
AllenWallker AllenWallker вне форума
Прохожий
 
Регистрация: 24.03.2010
Сообщения: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Можно клнечно действительно сделать один громадный текстовик содержащий весь программный код, в плане скорости доступа, выигрыш будет, но удобно ли это будет использовать - большой вопрос.
Но хозяин барин. Вот код который загоняет все содержимое встречающихся файлов с расширение *.py в TStringList:
Код:
unit Unit44;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm44 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    Listing: TStringList;
    procedure FolderScan(Folder: String);
  end;

var
  Form44: TForm44;

implementation

{$R *.dfm}

procedure TForm44.FolderScan(Folder: String);
Var FileInfo: TSearchRec;
    S: TStringList;
begin
 if FindFirst(Folder + '*.*', faAnyFile, FileInfo) = 0
 then try
       repeat
        if (FileInfo.Name = '.') or (FileInfo.Name = '..') then Continue;
        if (FileInfo.Attr and faDirectory <> 0)
        then begin
             FolderScan(Folder+FileInfo.Name+'\');
             Continue;
             end;
        if ExtractFileExt(FileInfo.Name) = '.py'
        then begin
             S := TStringList.Create;
             S.LoadFromFile(Folder+FileInfo.Name);
             Listing.AddStrings(S);
             S.Free;
             end;
       until FindNext(FileInfo) <> 0;
      finally
       SysUtils.FindClose(FileInfo);
      end;
end;

procedure TForm44.FormCreate(Sender: TObject);
begin
 Listing := TStringList.Create;
 FolderScan('E:\DBase\MARAFON\');
end;

end.

спасибо большое)
Ответить с цитированием
  #13  
Старый 30.03.2010, 19:38
AllenWallker AllenWallker вне форума
Прохожий
 
Регистрация: 24.03.2010
Сообщения: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
По моему, надо подходить к этому вопросу с другой стороны. Тебе нужен парсер питона, который будет строить соотв. дерево синтаксического разбора.
может поможешь мне очень надо!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:55.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter