Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Загрузка файла из списка ComboBox [D7]


Страницы:   1 2

Кос ©   (2012-03-02 10:05:00) 

procedure TForm1.FormCreate(Sender: TObject);
var
 SR: TSearchRec;
 FindRes: Integer;
begin
 ComboBox1.Clear;
 FindRes := FindFirst('C:\1\*.*', faAnyFile, SR);
 while FindRes = 0 do
 begin
   ComboBox1.Items.Add(SR.Name);
   FindRes := FindNext(SR);
 end;
 FindClose(SR);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 List : TStringList;
 i,j : integer;
 S : String;
begin
 List := TStringList.Create;
 S:=ComboBox1.Items[5];
 List.LoadFromFile(S);
 StringGrid1.RowCount := List.Count;
 for i:=0 to StringGrid1.RowCount-1 do
   with StringGrid1.Rows[i] do
   begin
     Delimiter:=' ';  
     DelimitedText:=List[i];
 end;
end;


Собственно в выпадающем списке имена файлов находящихся в папке 1 диска С. Кстати как их отсортировать по дате и выбросить из списка ComboBox ( . и ..), которые при поиске записываются в Items ComboBox'a ? Далее хочу при выборе файла из списка загружать его в StringGrid, если ручками прописать конкретный файл, то код работает. Не получается реализовать с изменяющимся файлом S.


CRLF   (2012-03-02 13:09:00) [21]


> AV ©   (02.03.12 12:40) [11]
1. Параметризуешь -- так уж параметризуй по-людски... А то учишь новичка половину запараметризовать, а вторую половину в глобальные переменные распихать :-(
2. В TSearchRec.FindData лежат дата-время создания, модицикации и последнего доступа. Игнорировать эту уже найденную информацию и гонять в цикле FileAge и FileExist крайне глупо.


Anatoly Podgoretsky   (2012-03-02 12:46:00) [22]


> А сортировку как по дате применить не подскажите ?

У Кнута целый, толстый том посвящен сортировке, а ты хочешь в несколько строк.


AV   (2012-03-02 12:40:00) [23]

или аля как-то так, т.к. дата уже есть - это же не просто строки, это файлы

 procedure AddIt(s: string);
 begin
   if FileExist() и прочая лабудень then
   for i:= ComboBox1.Items.Count - 1 downto 0 do
   begin
     if FileAge(s) > FileAge(ComboBox1.Items[i]) then
     begin
       ComboBox1.Items.Insert(i, s);  Exit;
     end;
   end;
   ComboBox1.Items.Add(s);


CRLF   (2012-03-02 12:05:00) [24]

как вариант: создай список, который будет хранить даты, при нахождении очередного файла определяй, на какую позицию нужно вставить файл, чтобы список оставался отсортированным, вставляй дату файла в этот список, а имя файла в то, что у тебя фигурирует как List.


CRLF   (2012-03-02 12:03:00) [25]

во-первых, почитай про try finally end.
во-вторых, с сортировкой по дате так "в лоб" не получится. нужно хранить пары "дата-имя", сортировать по дате, а затем в список запихивать имена файлов.


Кос   (2012-03-02 11:51:00) [26]

А сортировку как по дате применить не подскажите ?


procedure TForm1.FormCreate(Sender: TObject);
var
 List:Tstringlist;
 SR: TSearchRec;
 FindRes: Integer;
begin
 List:=Tstringlist.Create;
 ComboBox1.Clear;
 FindRes := FindFirst('C:\контрольные файлы\*.*', faAnyFile, SR);
 while FindRes = 0 do
 begin
   if (SR.Name <> '.') and (SR.Name <> '..') then
   ComboBox1.Items.Add(SR.Name);
   FindRes := FindNext(SR);
 end;
 FindClose(SR);
 List.Sort;
 ComboBox1.Items:=List.Text;
 List.Free;

вот накидал на скорую руку


CRLF   (2012-03-02 11:46:00) [27]

можешь сохранять с путями, можешь сначала установить текущий каталог, затем загружать так, как ты сейчас загружаешь


Кос   (2012-03-02 11:45:00) [28]

List.LoadFromFile('C:\1\'+S);
Вопрос снят, спасибо


Кос   (2012-03-02 11:36:00) [29]

А как тогда реализовать ?


AV   (2012-03-02 11:00:00) [30]

если не указанj полное имя, файл ищется в папке по умолчанию(каталогу где находится проект) и папках по путям в %Path%


Кос   (2012-03-02 10:46:00) [31]

S:=ComboBox1.Text;
List.LoadFromFile(S);

Почему, обращение при этом идёт к каталогу где находится проект. Соответственно закрывается ошибкой файл не найден.


CRLF   (2012-03-02 10:39:00) [32]


> если ручками прописать конкретный файл, то код работает.
>  Не получается реализовать с изменяющимся файлом S
С путями что-то напутал 100%


AV   (2012-03-02 10:21:00) [33]


> выбросить из списка ComboBox ( . и ..)

это директории
faAnyFile xor faDirectory


> как их отсортировать по дате

любым способом сортировки


> хочу при выборе файла из списка загружать его в StringGrid

S:=ComboBox1.Text;
List.LoadFromFile(S);


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо