|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
ох уж этот поиск файлов
у меня есть 2 ЛистБокса. в один загружаются имена файлов с расширением segd? в другой с расширением sgy. затем в процессе выполнения программы необходиом обращение к файлам из первого листбокса и из второго. но тут происходит ошибка. и компилятор пишет, что файла не существует. файла не существует потому что путь к файлу берется из листбокса в который грузили последним а имя файла из другого листбокса. вопрос почему так получается. можно ли как-то исправить чтобы имена всех файлов были правильными?
Код:
procedure ListsgyFilesInDirectory(Dir: string; Strings: TStrings); var // dir - например C:\sgy\ rSearchRec: TSearchRec; begin if ((Dir = '') or (not Assigned(Strings))) then Exit; Dir := IncludeTrailingPathDelimiter(Dir); if FindFirst(Dir + '*.sgy', faAnyFile, rSearchRec) = 0 then try repeat if ((rSearchRec.Name <> '.') and (rSearchRec.Name <> '..')) then if (rSearchRec.Attr and faDirectory) <> 0 then ListSgyFilesInDirectory(Dir + rSearchRec.Name, Strings) else Strings.Add(rSearchRec.Name); until FindNext(rSearchRec) <> 0; finally FindClose(rSearchRec); end; end; procedure ListSegdFilesInDirectory(Dir1: string; Strings: TStrings); var // dir - например C:\segd\ rSearchRec: TSearchRec; begin if ((Dir1 = '') or (not Assigned(Strings))) then Exit; Dir1 := IncludeTrailingPathDelimiter(Dir1); if FindFirst(Dir1 + '*.segd', faAnyFile, rSearchRec) = 0 then try repeat if ((rSearchRec.Name <> '.') and (rSearchRec.Name <> '..')) then if (rSearchRec.Attr and faDirectory) <> 0 then ListSegdFilesInDirectory(Dir1 + rSearchRec.Name, Strings) else Strings.Add(rSearchRec.Name); until FindNext(rSearchRec) <> 0; finally FindClose(rSearchRec); end; end; procedure TForm1.vssClick(Sender: TObject); begin if open2.Execute then begin ListsgyFilesInDirectory(ExtractFilePath(open2.FileName),lst2.Items) ; end; end; procedure TForm1.segdClick(Sender: TObject); begin if open1.Execute then begin ListSegdFilesInDirectory(ExtractFilePath(open1.FileName),lst1.Items) ; end; end; а если последним загружали sgy, то при обращении в segd имя будет - c:\sgy\name.segd вот такой парадокс. почему? |
#2
|
||||
|
||||
А вам не кажется что в Strings неплохо бы добавить не только имена файлов, но и пути к ним?
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
ну да. тогда вроде бы нормально. но когда имена без путей - выглядит красивей. если бы был один листбокс все было бы нормально. кто-нибудь может объяснить почему?
и можно ли как нибудь сделать так чтобы в листбоксах были бы только имена а полные пути для разных листбоксах были бы правильными? |
#4
|
|||
|
|||
Ну так к тексту обработки добавьте X:\путь.
Result: 'X:\путь' + Listbox1.Items[i]; ???? |