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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2009, 14:11   #1
Lehanidze
 
Регистрация: 09.07.2009
Сообщений: 8
По умолчанию помогите с програмкой

делаю одну програмку по практике, необходимо найти необходимые папки записать их в CheckListBox а затем удалить, в результате не получается записать путь найденных папок при нажатии на кнопку3 в CheckListBox, помогите кто может. вот програмка:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, FileCtrl, ComCtrls, ShellCtrls, CheckLst;

type
  TForm1 = class(TForm)
    Button1: TButton;
    CheckListBox1: TCheckListBox;
    Button2: TButton;
    Button3: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
   
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
var i:Integer; Str:String;
Function MyRemoveDir(sDir : String) : Boolean;
var
iIndex : Integer;
SearchRec : TSearchRec;
sFileName : String;
begin
Result := False;
sDir := sDir + '\*.*';
iIndex := FindFirst(sDir, faAnyFile, SearchRec);
while iIndex = 0 do begin
sFileName := ExtractFileDir(sDir)+'\'+SearchRec.Name;
if SearchRec.Attr = faDirectory then begin
if (SearchRec.Name <> '' ) and
(SearchRec.Name <> '.') and
(SearchRec.Name <> '..') then
MyRemoveDir(sFileName);
end else begin
if SearchRec.Attr <> faArchive then
FileSetAttr(sFileName, faArchive);
if NOT DeleteFile(sFileName) then
ShowMessage('Could NOT delete ' + sFileName);
end;
iIndex := FindNext(SearchRec);
end;
FindClose(SearchRec);
RemoveDir(ExtractFileDir(sDir));
Result := True;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
for i:=0 to CheckListBox1.Items.Count-1 do
if MyRemoveDir(CheckListBox1.Items[0]+' ')then
begin
if MyRemoveDir(CheckListBox1.Items[i]+' ') then ShowMessage('Äèðåêòîðèÿ óñïåøíî óäàëåíà')
else ShowMessage('Íå ïîëó÷àåòñÿ óäàëèòü äèðåêòîðèþ');
end; end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Str:='Âû âûáðàëè ';
for i:=0 to CheckListBox1.Items.Count-1 do 
if CheckListBox1.Checked[i] then 
Str:=Str+CheckListBox1.Items[i]+' '; 
Application.MessageBox(PChar(Str), 'Âíèìàíèå!!!');
end;
procedure TForm1.Button3Click(Sender: TObject);
var
iIndex: Integer;  Result: boolean;
SearchRec : TSearchRec;
sFileName,sDir : String;
begin
Result:= False;
sDir :=Edit1.text;
iIndex := FindFirst(sDir, faAnyFile, SearchRec);
while iIndex = 0 do
begin
sFileName := ExtractFileDir(sDir)+'\'+SearchRec.Name;
if SearchRec.Attr = faDirectory then begin
if (SearchRec.Name <> '' ) and
(SearchRec.Name <> '.') and
(SearchRec.Name <> '..') then
begin

 CheckListBox1.Items.Add(SearchRec.Name);
 end;
 end;end; end;


end.

Последний раз редактировалось Stilet; 23.07.2009 в 14:13.
Lehanidze вне форума Ответить с цитированием
Старый 23.07.2009, 14:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Все норм за исключением того что FindFirst(sDir+'*', faAnyFile, SearchRec);
Ну и конечно значение в sDir должно оканчиваться на '\'
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.07.2009, 16:07   #3
Lehanidze
 
Регистрация: 09.07.2009
Сообщений: 8
По умолчанию

спасибо сейчас попробую
Lehanidze вне форума Ответить с цитированием
Старый 23.07.2009, 16:19   #4
Lehanidze
 
Регистрация: 09.07.2009
Сообщений: 8
По умолчанию

Попробовал, почему то виснет и ничего не делает! Помогите плиз очень надо!!
Lehanidze вне форума Ответить с цитированием
Старый 23.07.2009, 18:24   #5
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Пишу файловый менеджер понадобилось вывести папки... В твоем случае будет так

sDir := sDir + '\*.*';
iIndex := FindFirst(sDir, faDirectory, SearchRec);

или же так

sDir := sDir + '\*';
iIndex := FindFirst(sDir, faDirectory, SearchRec);

Кусок кода из моего проекта... Выводит токо папки (все работает, подтачивай/добавляй под себя если нужно)

Код:
FindRes:=FindFirst(path,faAnyFile,SR);
While FindRes=0 do
  begin
   if ((SR.Name='.')or(SR.Name='..')) then
    begin
     FindRes:=FindNext(SR);
     Continue;
    end;
   if ((SR.Attr and faDirectory)=faDirectory) then
    begin
     StringGrid1.Cells[0,i]:=SR.Name;
     StringGrid1.Cells[1,i]:='<-Папка->';
     i:=i+1;
     StringGrid1.RowCount:=i;
    end;
   FindRes:=FindNext(SR);
  end;

Последний раз редактировалось zotox; 23.07.2009 в 18:27.
zotox вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с програмкой плиз Alex26RusLink Общие вопросы C/C++ 20 26.07.2009 16:36
Помогите, пожалуйста, с програмкой! BeaU Паскаль, Turbo Pascal, PascalABC.NET 2 03.06.2009 17:49
Помогите с програмкой sergiksergik Помощь студентам 6 10.04.2009 22:52
c++ помогите разобраться с програмкой hen Общие вопросы C/C++ 8 31.03.2009 20:16