Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Выборка файлов   Найти похожие ветки 

 
CuBiC   (2010-05-28 04:54) [0]

Здравствуйте, уважаемые программисты! У меня такая задача: имеется какая-либо папка, в ней находятся различные типы файлов... На форме находится ListBox и Button. По нажатии кнопки, в ListBox добавляются все имеющиеся файлы в папке в расширением .txt - при этом само расширение отображать не нужно. Помогите, пожалуйста. Заранее спасибо! :)


 
brother ©   (2010-05-28 05:15) [1]

где код добавления?


 
CuBiC   (2010-05-28 05:20) [2]

Дак в том то и дело, что его нет! Я и хочу узнать какой код необходим для этой операции..


 
CuBiC   (2010-05-28 05:20) [3]

Удалено модератором


 
brother ©   (2010-05-28 05:26) [4]

ищи в справке: FindFirst, FindNext, FindClose
когда будет код добавления - посмотрим шо не так...


 
CuBiC   (2010-05-28 05:29) [5]

А с самим кодом нельзя помочь что-ли?


 
brother ©   (2010-05-28 05:45) [6]

1. вообще можно, но не нужно, тк думать нужно тебе...
2. там код то почти весь из справки будет (кробе банального ListBox.Items.Add)
3. небольшая заморочка с "отрезкой" расширения файла...
выполни 1, 2 далее поговорим...


 
CuBiC   (2010-05-28 05:57) [7]

Я вероятно незря задал вопрос в разделе "Для новичков"?????


 
brother ©   (2010-05-28 05:59) [8]

понятно...


 
CuBiC   (2010-05-28 06:01) [9]

Ру с кодом можно помочь или нет?


 
CuBiC   (2010-05-28 06:01) [10]

Удалено модератором


 
Anatoly Podgoretsky ©   (2010-05-28 07:11) [11]

> CuBiC  (28.05.2010 05:29:05)  [5]

Он настолько простой, что приводить его обидно, тем более что Интернет
замусорен примерами.


 
Anatoly Podgoretsky ©   (2010-05-28 07:12) [12]

> CuBiC  (28.05.2010 05:57:07)  [7]

Вообще то зря, это вопрос не для новичков, для них он очень простой,
поскольку они умеют пользоваться поиском, справкой


 
CuBiC   (2010-05-28 07:13) [13]

Ну а примерчик можно?


 
Омлет ©   (2010-05-28 07:32) [14]

Мой психоаналитик говорит, что надо помогать людям.

procedure TForm1.Button1Click(Sender: TObject);
var
 SearchRec : TSearchRec;
 i: integer;
 fn: string;
 Dir: string;
begin
 Dir := "C:\Documents and Settings\fenik\My Documents\";
 if FindFirst(Dir + "*.txt", faAnyFile, SearchRec) = 0 then
 begin
   try
     repeat
       fn := ExtractFilename(SearchRec.Name);
       i := length(fn);
       repeat
         dec(i);
       until (fn[i] = ".") or (i < 2);
       ListBox1.Items.Add(copy(fn, 1, i-1));
     until FindNext(SearchRec) <> 0;
   finally
     FindClose(SearchRec);
   end;
 end;
end;


 
Leonid Troyanovsky ©   (2010-05-28 07:36) [15]


procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
begin
 with Control as TListBox, Canvas do
   TextOut(Rect.Left, Rect.Top, ChangeFileExt(Items[Index], ""));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 ListBox1.Perform(LB_DIR, 0, LParam(PChar("*.txt")));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 ListBox1.Style := lbOwnerDrawFixed;
end;

--
Regards, LVT.


 
CuBiC   (2010-05-28 07:43) [16]


> Мой психоаналитик говорит, что надо помогать людям.

Спасибо большое :) А как быть если в папке содержаться еще и подкатологи??


 
CuBiC   (2010-05-28 07:43) [17]


> Мой психоаналитик говорит, что надо помогать людям.

Спасибо большое :) А как быть если в папке содержаться еще и подкатологи??


 
wl ©   (2010-05-28 07:50) [18]

гугли по слову "рекурсия"


 
Омлет ©   (2010-05-28 08:01) [19]


procedure SearchTxtInDir(const dir: string; sl: TStrings);
var
 SearchRec : TSearchRec;
begin
 if FindFirst(Dir + "*.txt", faAnyFile, SearchRec) = 0 then
 begin
   try
     repeat
       sl.Add(ChangeFileExt(ExtractFilename(SearchRec.Name), ""));
     until FindNext(SearchRec) <> 0;
   finally
     FindClose(SearchRec);
   end;
 end;
end;

procedure SearchTxtInDirs(const dir: string; sl: TStrings);
var
 SearchRec : TSearchRec;
begin
 SearchTxtInDir(dir + SearchRec.Name, sl);
 if FindFirst(Dir + "*", faDirectory, SearchRec) = 0 then
 begin
   try
     repeat
       if (SearchRec.Name <> ".") and (SearchRec.Name <> "..") then
         SearchTxtInDirs(Dir + SearchRec.Name + "\", sl);
     until FindNext(SearchRec) <> 0;
   finally
     FindClose(SearchRec);
   end;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 SearchTxtInDirs("C:\Documents and Settings\fenik\My Documents\", ListBox1.Items);
end;


 
brother ©   (2010-05-28 08:04) [20]

пятница - щедрый день)


 
Омлет ©   (2010-05-28 08:05) [21]

Пардон,
SearchTxtInDir(dir + SearchRec.Name, sl);
надо заменить на
SearchTxtInDir(dir, sl);


 
CuBiC   (2010-05-28 08:07) [22]


> procedure SearchTxtInDir(const dir: string; sl: TStrings);
> var  SearchRec : TSearchRec;begin  if FindFirst(Dir + "*.
> txt", faAnyFile, SearchRec) = 0 then  begin    try      repeat
>        sl.Add(ChangeFileExt(ExtractFilename(SearchRec.Name),
>  ""));      until FindNext(SearchRec) <> 0;    finally  
>    FindClose(SearchRec);    end;  end;end;procedure SearchTxtInDirs(const
> dir: string; sl: TStrings);var  SearchRec : TSearchRec;begin
>  SearchTxtInDir(dir + SearchRec.Name, sl);  if FindFirst(Dir
> + "*", faDirectory, SearchRec) = 0 then  begin    try  
>    repeat        if (SearchRec.Name <> ".") and (SearchRec.
> Name <> "..") then          SearchTxtInDirs(Dir + SearchRec.
> Name + "\", sl);      until FindNext(SearchRec) <> 0;  
>  finally      FindClose(SearchRec);    end;  end;end;procedure
> TForm1.Button1Click(Sender: TObject);begin  SearchTxtInDirs("C:
> \Documents and Settings\fenik\My Documents\", ListBox1.Items);
> end;

что-то не могу скомпилировать... :(


 
wl ©   (2010-05-28 08:11) [23]


> \fenik\

а если у CuBiC"а имя пользователя в винде другое? не найдутся файлы :))


 
CuBiC   (2010-05-28 08:12) [24]

Омлет, спасибо огромное!!!!!!!! Это то, что мне было нужно!! :))


 
CuBiC   (2010-05-28 08:13) [25]

Омлет, а как двойным щелчком открыть какой-либо файл из этого списка?


 
Омлет ©   (2010-05-28 08:25) [26]

type
 TFileName = class
   fFullName: string;
   class function CreateInstance(fn: string): TFileName;
 end;

{ TFileName }

class function TFileName.CreateInstance(fn: string): TFileName;
begin
 Result := TFileName.Create;
 Result.fFullName := fn;
end;

procedure SearchTxtInDir(const dir: string; sl: TStrings);
var
 SearchRec : TSearchRec;
begin
 if FindFirst(Dir + "*.txt", faAnyFile, SearchRec) = 0 then
 begin
   try
     repeat
       sl.AddObject(ChangeFileExt(ExtractFilename(SearchRec.Name), ""),
         TFileName.CreateInstance(Dir + SearchRec.Name));
     until FindNext(SearchRec) <> 0;
   finally
     FindClose(SearchRec);
   end;
 end;
end;

procedure SearchTxtInDirs(const dir: string; sl: TStrings);
var
 SearchRec : TSearchRec;
begin
 SearchTxtInDir(dir, sl);
 if FindFirst(Dir + "*", faDirectory, SearchRec) = 0 then
 begin
   try
     repeat
       if (SearchRec.Name <> ".") and (SearchRec.Name <> "..") then
         SearchTxtInDirs(Dir + SearchRec.Name + "\", sl);
     until FindNext(SearchRec) <> 0;
   finally
     FindClose(SearchRec);
   end;
 end;
end;

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
 SearchTxtInDirs("C:\Documents and Settings\fenik\My Documents\", ListBox1.Items);
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
 Memo1.Lines.LoadFromFile(TFileName(ListBox1.Items.Objects[ListBox1.ItemIndex]).f FullName);
end;


 
Омлет ©   (2010-05-28 08:27) [27]

Пробел в конце - f FullName - надо убрать. Это форум вставил.


 
Омлет ©   (2010-05-28 08:32) [28]

А по поводу двойного щелчка - уж сам подумай.
Я только пример дал. И то не лучший )


 
CuBiC   (2010-05-28 08:33) [29]


> Пробел в конце - f FullName - надо убрать. Это форум вставил.

Дак это загружается в Мемо, а мне надо, чтоб по двойному щелчку, этот файл открывался в блокноте Windows..


 
wl ©   (2010-05-28 08:55) [30]

CreateProcess(0,"nodepad "+
ну и так далее, открой наконец справку, сколько можно клянчить


 
Плохиш ©   (2010-05-28 09:45) [31]

Вот и ещё одному сирому и убогому подали милостыню...


 
Игорь Шевченко ©   (2010-05-28 13:04) [32]

Плохиш ©   (28.05.10 09:45) [31]

Чего с них взять - Азия-с



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.049 c
15-1264125503
Дмитрий С
2010-01-22 04:58
2010.08.27
Оказывается я еще могу чему-то научиться.


2-1275776869
akosh12345
2010-06-06 02:27
2010.08.27
Динамическая память


2-1267350234
Pavia
2010-02-28 12:43
2010.08.27
Отоброзить TStringList на экране.


2-1270824697
aalleexxaa
2010-04-09 18:51
2010.08.27
записать все содержимое базы данных Access в массивы


15-1268602039
Ega23
2010-03-15 00:27
2010.08.27
А давайте задачку порешаем?