Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.78
vladislav147
5 / 4 / 1
Регистрация: 08.06.2012
Сообщений: 111
#1

ListBox и файлы - Delphi

28.06.2012, 06:26. Просмотров 3531. Ответов 40
Метки нет (Все метки)

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

Добавлено через 4 часа 6 минут
Честно нужен ответ .... Спасиб...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2012, 06:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ListBox и файлы (Delphi):

Файлы из ListBox - Delphi
Добрый день. Подскажите каким образом можно реализовать задачу: Необходимо выбрать файл или файлы, они показываются в listbox. Далее...

Файлы по порядку, listbox - Delphi
У меня есть строки, я хочу чтобы к каждой строке был txt, а потом в эти строки из ListBox по очереди записывались слова, как это...

ListBox и файлы в папке ( Plugins ) - Delphi
Вопрос: какой код, или тема ... нужно чтоб в ListBOx были файлы такие которые в папке 'plugins\'... и когда меняешь их (Фалы в папке под...

В ListBox вводится последовательность строк. Вывести их в ListBox в обратном порядке - Delphi
Помогите пожалуйста решить задачу :) очень надеюсь на ответ... В ListBox вводится последовательность строк. Вывести их в ListBox в...

Использование listbox и checked listbox - Delphi
Создать оконное приложение. В правую часть окна поместить listbox, а в левую - checked listbox с именами строк A, B, C, D, E, F, G и H. При...

Написать программу, преобразующую XML-файлы в DDF-файлы - Delphi
Нужно написать программу, преобразующую XMLфайлы в DDFфайлы... Посоветуйте с чего начать? Есть ли готовый код..

40
Одиночка
3927 / 1852 / 88
Регистрация: 16.03.2012
Сообщений: 3,869
28.06.2012, 21:16 #16
Там уже стояло.
1
Одиночка
3927 / 1852 / 88
Регистрация: 16.03.2012
Сообщений: 3,869
28.07.2012, 02:32 #17
Немного нужно код подкорректировать, а то работает некорректно:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled:=False;
 
  If WaitForSingleObject(ChangeHandle,0)=WAIT_OBJECT_0 Then
  //Если есть изменения в директории
  Begin
    FindFileInFolder(FDirectory,'*.*'); //Изменяем ListBox
    //Фактически - запуск нового слежения
    FindNextChangeNotification(ChangeHandle);
  End;
  Timer1.Enabled:=True; //Запускаем таймер для слежения
end;
Если сделать так как было - обновление происходит постоянно, даже если ничего не изменялось.
0
Glin
14 / 14 / 2
Регистрация: 26.05.2014
Сообщений: 107
17.06.2014, 09:18 #18
А как дописать функцию, чтобы копировались новые найденные файлы в другую директорию
0
Одиночка
3927 / 1852 / 88
Регистрация: 16.03.2012
Сообщений: 3,869
17.06.2014, 22:00 #19
Glin, Вот немного доработал под твой вопрос:
Должно копировать в директорию, которую запишешь в коде, все новые файлы.
1
Вложения
Тип файла: rar Folder Monitiring And Copy New.rar (2.5 Кб, 24 просмотров)
Glin
14 / 14 / 2
Регистрация: 26.05.2014
Сообщений: 107
19.06.2014, 07:14 #20
Может что-то не так делаю, прописываю директорию 'd:\1\', но копирование не происходит
0
Одиночка
3927 / 1852 / 88
Регистрация: 16.03.2012
Сообщений: 3,869
19.06.2014, 07:33 #21
А директорию за которой следить (строка 74) прописал? А директория в которую копировать (строка 62).

Добавлено через 13 минут
Немного схалтурил я. Эту процедурку немного измени:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
Procedure TForm1.FindFileInFolderPred(path, ext: string;Copy:Boolean);
Begin
  If Copy Then
  Begin
    sl:=TStringList.Create;
    sl.Assign(ListBox1.Items);
  End;
  ListBox1.Items.Clear;
  FindFileInFolder(FDirectory,'*.*',Copy);
  If Copy Then
  sl.Free;
End;
Проверил. Всё копирует теперь.
1
Glin
14 / 14 / 2
Регистрация: 26.05.2014
Сообщений: 107
19.06.2014, 09:48 #22
Спасибо, теперь работает
0
Glin
14 / 14 / 2
Регистрация: 26.05.2014
Сообщений: 107
20.06.2014, 13:55 #23
Во время использование программы, столкнулся с тем что не сохраняется иеархия папок, своими усилиями не к чем хорошему не привело, подскажите в какую часть кода нужно обратить своё внимание?

и ещё, программа копирует новые файлы, но не копирует те файлы которые уже были в папке и не были в другой, где можно это дописать или переписать в какой процедуре?
0
Одиночка
3927 / 1852 / 88
Регистрация: 16.03.2012
Сообщений: 3,869
21.06.2014, 03:56 #24
Во время использование программы, столкнулся с тем что не сохраняется иеархия папок
Пожалуйста поподробнее, что имеешь в виду?

Добавлено через 10 часов 3 минуты
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Procedure TForm1.FindFileInFolder(path, ext: string;Copy:Boolean);
Var
  SR : TSearchRec;
  NewPath : String;
begin
  NewPath:=path;
  Delete(NewPath,1,Length(FDirectory));
  NewPath:='c:\1\'+NewPath;
  If FindFirst(path+ext,faAnyFile,SR)=0 Then
  Repeat
    If (Sr.name='.') Or (Sr.name='..') Then Continue;
 
    If Copy Then
//    If sl.IndexOf(path+Sr.name)=-1 Then //Проверяем, есть ли такая строка в списке
    If Not FileExists(NewPath+Sr.name) Then //Проверяем, существует ли конечный файл
    //Если нет (новый файл) - копируем
    CopyFile(PChar(path+Sr.name),PChar(NewPath+Sr.name),False);
 
    ListBox1.Items.Add(path+Sr.name);
    If ((Sr.Attr And faDirectory)<>0) Then
    FindFileInFolder(path+Sr.name+'\', ext,Copy);
    Application.ProcessMessages;
  Until FindNext(SR)<>0;
  FindClose(SR);
end;
Но это исходя из того, что исходные файлы не будут удаляться и не будут переименовываться при копировании. В этом случае можно вообще удалить всё что связано с сохранением списка в StringList (sl). И кроме того, все обращения к FindFileInFolderPred заменить на FindFileInFolder. А саму процедуру FindFileInFolderPred можно вообще убрать. Ведь проверяется только существует ли конечный файл с таким именем (с учётом подпапок).
А судя из другой твоей темы, предполагаю, что ты переносишь файлы добавляя к именам дату, время и удаляя исходные. В этом случае нужно поступать по другому.
0
Glin
14 / 14 / 2
Регистрация: 26.05.2014
Сообщений: 107
23.06.2014, 06:58 #25
Я имею ввиду если в исходной папке появилась папка а в ней файл, то копируеться только файл, а не котолог.
И не собираюсь удалять исходный файл при копировании.
Суть вот в чём идёт слежение за папкой в которой установлена программа и при добавлении нового файла, файл копируеться на другой компьютер где то же есть эта программа. И поэтому новый файл должен копировать именно в туже директорию где появился исходный, а не в корень.
Пример как охота (D:\Forecast\Import\gho.dll ---> \\192.168.65.11\с$\Forecast\Import\gho.dll )
а сейчас копирует в \\192.168.65.11\с$\Forecast\gho.dll
0
Одиночка
23.06.2014, 07:01
  #26

Не по теме:

Да я уже понял. И сделал так как ты сейчас написал (смотри мой предыдущий пост). Проверяй.

0
Glin
14 / 14 / 2
Регистрация: 26.05.2014
Сообщений: 107
23.06.2014, 10:11 #27
Копирует, но при первом запуске программа не копирует файлы которых нет в другой папке, только когда появился новый файл тогда копирует уже файлы которых нет + новый файл.
Смотреть надо в Repeat? или это уже своиство таймера играет роль?
0
Одиночка
3927 / 1852 / 88
Регистрация: 16.03.2012
Сообщений: 3,869
23.06.2014, 18:08 #28
Я там в событии формы FormCreate делал специально, чтобы она при загрузке не копировала. А потом уже при изменении в директории реагировала. Там в обращении поставь True вместо False.
Delphi
1
  FindFileInFolderPred(FDirectory,'*.*',True);
Или просто закомментируй строку
Delphi
1
If Copy Then
в процедуре FindFileInFolder.
1
Glin
14 / 14 / 2
Регистрация: 26.05.2014
Сообщений: 107
24.06.2014, 07:08 #29
Спасибо, вопросов больше не имею
0
Glin
14 / 14 / 2
Регистрация: 26.05.2014
Сообщений: 107
25.06.2014, 10:49 #30
Хотя возник один вопрос, написал процедуру для создания лога, но при вызове не выдаёт список скопированных файлов, что делаю не так?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TForm1.Log(Text:string);
var
N: TextFile;
FileName:String;
dt:string;
begin
FileName:= ExtractFilePath(Application.ExeName)+'Lod.txt';
AssignFile(N,FileName);
if FileExists(FileName) then
Append(N)
else
Rewrite(N);
dt:=DatetoStr(Date);
dt:=dt+' / '+TimetoStr(Time);
WriteLn(N, dt, ' : ', text);
CloseFile(N);
end;
0
25.06.2014, 10:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2014, 10:49
Привет! Вот еще темы с ответами:

ListBox - Delphi
Мне нужно узнать присуствует хотябы 1 элемент в листбоксе(ListBox). Думаю это довольно просто, помогите пожалуйста)

ListBox - Delphi
Помогите решить. Есть 2 ListBox в каждом 2 значения. Нужно что бы по умолчанию уже было выбрано первое значение и сделать так что бы при...

ListBox - Delphi
задача такая: в listbox занесены 4 строки: •строка1 •строка2 •строка3 •строка4 Нужно при нажатии на кнопку, вывести в memo1...

Listbox - Delphi
Всем доброго времени суток.у меня такая проблема.Я кинул на форму листбокс,ниже создал 2 мемо поля,в первом вводится номер объекта,а во...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru