![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с файлами [D7]
Overclocker © (2010-10-04 14:07:00)Задача такая: существуют различные файлы (в основном *.doc) в каком либо каталоге, имена файлов - дата (обозваны датами когда были созданы), необходимо скопировать или переместить файлы в папки(созданные по датам, т.е. соответствующий файл в соответствующую папку, соответветственной датой). Пути от куда и куда желательно указывать самомоу.. помогите хотябы начать или исходники если есть, примеры, сайты где это есть, нужно очень сильно!!!
Andy BitOff (2010-10-04 22:32:00) [1]> Overclocker © (04.10.10 18:39) [27]
> то есть как это сделать?
Вызвать функцию ForceDirectory (так помоему) с соответствующим параметром. Читай справку.
Anatoly Podgoretsky (2010-10-04 19:35:00) [2]> Плохиш (04.10.2010 19:31:29) [29]
Обучение работе с FindFirst особо бессмыслено, столько пытались и все в
пустую. Пусть лучше учится работать с поиском.
Плохиш (2010-10-04 19:31:00) [3]обучение программированию на форуме - бессмысленная потеря времени.
Overclocker (2010-10-04 18:58:00) [4]а допустим вручную пути прописывать откуда и куда копировать .. как это реализовать????
Overclocker (2010-10-04 18:39:00) [5]
> Andy BitOff © (04.10.10 18:13) [25]
> А, да, перед копированием ForceDirectory выполнить
то есть как это сделать?
Overclocker (2010-10-04 18:25:00) [6]все разобрался спасибо всем:)
Andy BitOff (2010-10-04 18:13:00) [7]А, да, перед копированием ForceDirectory выполнить
stas (2010-10-04 18:11:00) [8]Overclocker © (04.10.10 17:41) [19]
Здрасте! а в [16] что ?
Andy BitOff (2010-10-04 18:10:00) [9]> Overclocker © (04.10.10 16:49) [13]
> через какую переменную или объект указывать путь для создания
> папки , и при копировании файла в эту папку как написать?
> какой тип переменной должен быть...?
> stas © (04.10.10 17:08) [16]
> ST1,ST2:STring;
> FD,FD1 : TWin32FindData;
> CopyFile ( Pchar(ST1+'\'+FD.cFileName),Pchar(ST2+'\'+FD.cFileName) ,false);
Dennis I. Komarov (2010-10-04 18:10:00) [10]Какой код? В [8] Юрий Сергеевич уже разжевал все...
Overclocker (2010-10-04 18:07:00) [11]дайте плиз код :) !!!!!!
Плохиш (2010-10-04 17:45:00) [12]
> Overclocker © (04.10.10 17:41) [19]
Ты не правильно попрашайничаешь. Надо так:
КОД ДАВАЙ!!!!!!!!!!
Overclocker (2010-10-04 17:41:00) [13]
> stas © (04.10.10 17:31) [18]
исходники есть?
stas (2010-10-04 17:31:00) [14]Плохиш © (04.10.10 17:24) [17]
Прочел хорошо, но я непонял чего непонятно, как со строкой работать или что?
Плохиш (2010-10-04 17:24:00) [15]
> stas © (04.10.10 17:08) [16]
Ты [13] хорошо прочитал?
stas (2010-10-04 17:08:00) [16]Непонял в чем проблема с путями... вот пример копирования всего из папки+проверка на актуальность, вместе с подчиненными папками.
Procedure UpdateFiles(PathSource,PathDest: string);
var
FD,FD1 : TWin32FindData;
FH,FH1 : THandle;
TempSize: TULargeInteger;
SR:TsearchRec;
ST1,ST2:STring;
begin
If (PathSource='') or (PathDest='') then exit;
if PathSource[length(PathSource)]<>'\' Then PathSource:=PathSource+'\';
if PathDest[length(PathDest)]<>'\' Then PathDest:=PathDest+'\';
ST1:=PathSource;
ST2:=PathDest;
// showMessage (ST1);
if not(DirectoryExists(PathSource)) then exit;
if not(DirectoryExists(PathDest)) then MkDir(PathDest);
FH := FindFirstFile( PChar( PathSource + '*.*' ), FD );
repeat
if (FH<>INVALID_HANDLE_VALUE) and (FD.cFileName <> string('.')) and
(FD.cFileName<>string('..')) then
begin
if (FILE_ATTRIBUTE_DIRECTORY and FD.dwFileAttributes) <> 0 then
begin
if not DirectoryExists (ST2+FD.cFileName) then mkDir (ST2+FD.cFileName);
UpdateFiles(ST1 + FD.cFileName + '\',ST2+FD.cFileName+'\')
end
else
begin
FindFirstFile (Pchar(ST2+FD.cFileName),FD1);
if (ExtractFileExt(FD.cFileName)='.udl') then
begin
FileSetAttr(Pchar(ST2+'\'+FD.cFileName), faArchive);
// if FileExists (ST2+'\'+FD.cFileName) then DeleteFile (ST2+'\'+FD.cFileName);
CopyFile ( Pchar(ST1+'\'+FD.cFileName),Pchar(ST2+'\'+FD.cFileName),false);
end else
if (not FileExists (ST2+FD1.cFileName)) {or ((fd1.ftLastWriteTime.dwHighDateTime*High(DWord)+Fd1.ftLastWriteTime.dwLowDateTime)<>(fd.ftLastWriteTime.dwHighDateTime*High(DWor d)+Fd.ftLastWriteTime.dwLowDateTime))} or (fd1.ftLastWriteTime.dwHighDateTime<>Fd.ftLastWriteTime.dwHighDateTime) then
begin
// Form1.Label3.Caption:='Копирую файл: '+FD.cFileName;
// if ((paramstr(1)='/s') or (paramstr(1)='/S')) or (FD.cFileName<>'soft.udl') then
if FileExists (ST2+'\'+FD.cFileName) then DeleteFile (ST2+'\'+FD.cFileName);
CopyFile ( Pchar(ST1+'\'+FD.cFileName),Pchar(ST2+'\'+FD.cFileName),false);
// CopyFolder (ST1+'\'+FD.cFileName,ST2+'\'+FD.cFileName,FH1);
end;
end;
end;
until FindNextFile(FH,FD) = false;
FindClose (SR);
end;
Anatoly Podgoretsky (2010-10-04 17:03:00) [17]> Юрий Зотов (04.10.2010 16:09:10) [10]
Тогда еще 5 минут скидываем.
Плохиш (2010-10-04 17:02:00) [18]Надо прочитать в любой книжке по используемому средству разработки самый первый раздел, там описываются типы переменных, работу с переменными и операции с ними же.
Overclocker (2010-10-04 16:49:00) [19]
> 1. Юзер указывает каталог с файлами.2. Через FindFirst и
> пр. создаем список имен файлов (TStringList).3. Идем по
> этому списку в цикле и для каждого файла:3.1. Зная его имя,
> формируем имя каталога, в который его надо положить.3.2.
> Если такого каталога нет, то создаем его.3.3. Копируем
> файл.
я понял алгоритм и понял что куда только один вопрос остается не понятен:
через какую переменную или объект указывать путь для создания папки , и при копировании файла в эту папку как написать? какой тип переменной должен быть...?
Плохиш (2010-10-04 16:42:00) [20]Стоит заняться поисками студента, за небольшую сумму напишет.