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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2010, 07:45   #1
hrusha2006
 
Регистрация: 13.09.2010
Сообщений: 7
Вопрос

Здравсвуйте,уважаемые форумчане, прошу вас помоч в реализации поиска файлов средствами делфи по следующей задаче: организовать поиск в казанной директории файлов, названия которых без расширения содержат только буквы a,b,c.


вот мои наброски:


Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    Edit1: TEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function Num(c:string):Boolean;
begin
 num:=false;
 If (c = 'a') or (c = 'b') or (c = 'c') then
  num:=true;
 {If (c = 'bca') or (c = 'BCA') then
  num:=true;
 If (c = 'cab') or (c = 'CAB') then
  num:=true;}
end;

Function  ExtractInteger(S:String):boolean;
 var
 i:Integer;
 k:Integer;
 s1:String;
 s2:String;
begin
 ExtractInteger:=false;
 for i:=0 to Length(S) do
 begin
  If Num(S[i]) then
  begin
    ExtractInteger:=true;
  end;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 SR:TSearchRec;
 FindRes:Integer;
 Dir:String;
begin
 Dir:=Edit1.Text;
 ListBox1.Clear;
 FindRes:=FindFirst(Dir+'*.*',faAnyFile,SR);
 while FindRes=0 do
 begin
  if ((SR.Attr and faDirectory)=faDirectory)and((SR.Name='.')or(SR.Name='..')) then
  begin
   FindRes:=FindNext(SR);
   Continue;
  end;
  if ((SR.Attr and faDirectory)=faDirectory) then
  begin
   FindRes:=FindNext(SR);
   Continue;
  end;

  begin
   if ExtractInteger(SR.Name) then
    ListBox1.Items.Add(SR.Name);
   FindRes:=FindNext(SR);
   Continue;
  end;
  FindRes:=FindNext(SR);
 end;
end;

end.




трудность заключается в том,чтобы дать необходимую маску для поиска. маска по трем буквам задается в функции num.

буду очень благодарен.

оговорочка: поиск необходимо осуществлять во всех вложенных директориях.

Последний раз редактировалось Stilet; 04.10.2010 в 12:44.
hrusha2006 вне форума Ответить с цитированием
Старый 04.10.2010, 08:28   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы совсем не хотите учиться..
возьмите код, который я давал Вам в теме - Задача по организации поиска фалов

только функцию проверки полученного s поменяйте. и всё.
сейчас пример напишу.

Цитата:
оговорочка: поиск необходимо осуществлять во всех вложенных директориях.
тогда Вам надо переделать функцию на рекурсивную. На форуме было множество примеров.

вот функция проверки
Код:
function isOnlyABC(s : string) : boolean;
const Letters = ['A', 'B', 'C'];
var i : integer;
begin
   isOnlyABC := false;
   i:=1;
   while i<=Length(s) do begin
     if not (s[i]  in Letters) then Exit;
     Inc(i)
   end;
   isOnlyABC := true;
end;

использовать так:

  while FindRes = 0 do
  begin
    if Not (((SR.Attr and faDirectory) = faDirectory) and
      ((SR.Name = '.') or (SR.Name = '..'))) then
    begin
       s := Uppercase(ChangeFileExt(SR.Name, ''));
       if isOnlyABC(s) then
                   ListBox1.Items.Add(SR.Name);
       end;

    end;
    FindRes := FindNext(SR);
  end;
пример с рекурсией поищите на форуме.

Последний раз редактировалось Stilet; 04.10.2010 в 12:48.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск файлов liljon Win Api 8 06.08.2010 22:10
Как средствами делфи получить данные из dxdiag CraZZy RabbIt Общие вопросы Delphi 4 25.02.2009 10:28
Просмотр DVD средствами делфи JamS007 Мультимедиа в Delphi 4 29.11.2008 16:31
Шифратор файлов на ДЕЛФИ. sting Помощь студентам 4 17.11.2008 17:18