Форум: "Начинающим";
Текущий архив: 2010.12.26;
Скачать: [xml.tar.bz2];
ВнизРабота с файлами Найти похожие ветки
← →
Overclocker © (2010-10-04 14:07) [0]Задача такая: существуют различные файлы (в основном *.doc) в каком либо каталоге, имена файлов - дата (обозваны датами когда были созданы), необходимо скопировать или переместить файлы в папки(созданные по датам, т.е. соответствующий файл в соответствующую папку, соответветственной датой). Пути от куда и куда желательно указывать самомоу.. помогите хотябы начать или исходники если есть, примеры, сайты где это есть, нужно очень сильно!!!
← →
MBo © (2010-10-04 14:10) [1]>помогите хотябы начать
начни с функций FindFirst и FindNext
← →
Overclocker © (2010-10-04 14:27) [2]да с ней я то разобрался только вот вопрос там путь указывать нада в самом коде а нада хотябы пути указывать в том же Edit-е))
← →
{RASkov} © (2010-10-04 14:33) [3]> Пути от куда и куда желательно указывать самомоу
> [2] Overclocker © (04.10.10 14:27)
> а нада хотябы пути указывать в том же Edit-е
т.е. два пути в одном Эдите?
← →
Overclocker © (2010-10-04 14:43) [4]поис я организовал так:
procedure TForm1.Button1Click(Sender: TObject);
var
F: TSearchRec;
Path: string;
Attr: Integer;
begin
Path := e1.Text; // е1 - edit1
if ComboBox1.ItemIndex <> 0 then
begin
ComboBox1.ItemIndex:= faReadOnly;
Attr := ComboBox1.ItemIndex;
FindFirst(Path, Attr, F);
end ;
if ComboBox1.ItemIndex <> 1 then
begin ComboBox1.ItemIndex:= faHidden;
Attr := ComboBox1.ItemIndex;
FindFirst(Path, Attr, F);
end;
if ComboBox1.ItemIndex <> 2 then
begin
ComboBox1.ItemIndex:= faSysFile;
Attr := ComboBox1.ItemIndex;
FindFirst(Path, Attr, F);end;
if ComboBox1.ItemIndex <> 3 then
begin
ComboBox1.ItemIndex:= faArchive ; Attr := ComboBox1.ItemIndex;
FindFirst(Path, Attr, F);end;
if ComboBox1.ItemIndex <> 4 then begin
ComboBox1.ItemIndex:= faDirectory; Attr := ComboBox1.ItemIndex;
FindFirst(Path, Attr, F);end;
if ComboBox1.ItemIndex <> 5 then
begin
ComboBox1.ItemIndex:= faAnyFile;
Attr := ComboBox1.ItemIndex;
FindFirst(Path, Attr, F);end;
if F.name <> "" then
begin
ListBox1.Items.Add(F.Name);
while FindNext(F) = 0 do
ListBox1.Items.Add(F.Name);
end;
FindClose(F);
end;
ну и все поиск норм получился а дальше:
а вот копировать как в этом коде нада путь задавать откуда и куда используя функцию CopyFile(это след действие имею ввиду)
if not CopyFile("c:\1.txt","d:\1Copy.txt",true)
then ShowMessage("сообщение!");
← →
Overclocker © (2010-10-04 14:43) [5]поис я организовал так:
procedure TForm1.Button1Click(Sender: TObject);
var
F: TSearchRec;
Path: string;
Attr: Integer;
begin
Path := e1.Text; // е1 - edit1
if ComboBox1.ItemIndex <> 0 then
begin
ComboBox1.ItemIndex:= faReadOnly;
Attr := ComboBox1.ItemIndex;
FindFirst(Path, Attr, F);
end ;
if ComboBox1.ItemIndex <> 1 then
begin ComboBox1.ItemIndex:= faHidden;
Attr := ComboBox1.ItemIndex;
FindFirst(Path, Attr, F);
end;
if ComboBox1.ItemIndex <> 2 then
begin
ComboBox1.ItemIndex:= faSysFile;
Attr := ComboBox1.ItemIndex;
FindFirst(Path, Attr, F);end;
if ComboBox1.ItemIndex <> 3 then
begin
ComboBox1.ItemIndex:= faArchive ; Attr := ComboBox1.ItemIndex;
FindFirst(Path, Attr, F);end;
if ComboBox1.ItemIndex <> 4 then begin
ComboBox1.ItemIndex:= faDirectory; Attr := ComboBox1.ItemIndex;
FindFirst(Path, Attr, F);end;
if ComboBox1.ItemIndex <> 5 then
begin
ComboBox1.ItemIndex:= faAnyFile;
Attr := ComboBox1.ItemIndex;
FindFirst(Path, Attr, F);end;
if F.name <> "" then
begin
ListBox1.Items.Add(F.Name);
while FindNext(F) = 0 do
ListBox1.Items.Add(F.Name);
end;
FindClose(F);
end;
ну и все поиск норм получился а дальше:
а вот копировать как в этом коде нада путь задавать откуда и куда используя функцию CopyFile(это след действие имею ввиду)
if not CopyFile("c:\1.txt","d:\1Copy.txt",true)
then ShowMessage("сообщение!");
← →
MBo © (2010-10-04 15:15) [6]с Combobox - впечатлило. Зачем это?
← →
Overclocker © (2010-10-04 15:24) [7]да думал может искать прежде самому задавать атрибуты, честно с combobox не робит все равно в итоге ищет не зависимо от атрибутов ))
← →
Юрий Зотов © (2010-10-04 15:39) [8]А в чем проблема?
1. Юзер указывает каталог с файлами.
2. Через FindFirst и пр. создаем список имен файлов (TStringList).
3. Идем по этому списку в цикле и для каждого файла:
3.1. Зная его имя, формируем имя каталога, в который его надо положить.
3.2. Если такого каталога нет, то создаем его.
3.3. Копируем файл.
Проблем не вижу никаких. Час работы.
← →
Anatoly Podgoretsky © (2010-10-04 16:02) [9]Из него 50 минут на перекур.
← →
Юрий Зотов © (2010-10-04 16:09) [10]Причем список файлов даже лишний - все можно сделать в цикле поиска файлов.
← →
Overclocker © (2010-10-04 16:28) [11]мммм есть исходники или код хотябы посмотреть? код копирования и создания папки?
← →
Плохиш © (2010-10-04 16:42) [12]Стоит заняться поисками студента, за небольшую сумму напишет.
← →
Overclocker © (2010-10-04 16:49) [13]
> 1. Юзер указывает каталог с файлами.2. Через FindFirst и
> пр. создаем список имен файлов (TStringList).3. Идем по
> этому списку в цикле и для каждого файла:3.1. Зная его имя,
> формируем имя каталога, в который его надо положить.3.2.
> Если такого каталога нет, то создаем его.3.3. Копируем
> файл.
я понял алгоритм и понял что куда только один вопрос остается не понятен:
через какую переменную или объект указывать путь для создания папки , и при копировании файла в эту папку как написать? какой тип переменной должен быть...?
← →
Плохиш © (2010-10-04 17:02) [14]Надо прочитать в любой книжке по используемому средству разработки самый первый раздел, там описываются типы переменных, работу с переменными и операции с ними же.
← →
Anatoly Podgoretsky © (2010-10-04 17:03) [15]> Юрий Зотов (04.10.2010 16:09:10) [10]
Тогда еще 5 минут скидываем.
← →
stas © (2010-10-04 17:08) [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;
← →
Плохиш © (2010-10-04 17:24) [17]
> stas © (04.10.10 17:08) [16]
Ты [13] хорошо прочитал?
← →
stas © (2010-10-04 17:31) [18]Плохиш © (04.10.10 17:24) [17]
Прочел хорошо, но я непонял чего непонятно, как со строкой работать или что?
← →
Overclocker © (2010-10-04 17:41) [19]
> stas © (04.10.10 17:31) [18]
исходники есть?
← →
Плохиш © (2010-10-04 17:45) [20]
> Overclocker © (04.10.10 17:41) [19]
Ты не правильно попрашайничаешь. Надо так:
КОД ДАВАЙ!!!!!!!!!!
← →
Overclocker © (2010-10-04 18:07) [21]дайте плиз код :) !!!!!!
← →
Dennis I. Komarov © (2010-10-04 18:10) [22]Какой код? В [8] Юрий Сергеевич уже разжевал все...
← →
Andy BitOff © (2010-10-04 18:10) [23]> 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);
← →
stas © (2010-10-04 18:11) [24]Overclocker © (04.10.10 17:41) [19]
Здрасте! а в [16] что ?
← →
Andy BitOff © (2010-10-04 18:13) [25]А, да, перед копированием ForceDirectory выполнить
← →
Overclocker © (2010-10-04 18:25) [26]все разобрался спасибо всем:)
← →
Overclocker © (2010-10-04 18:39) [27]
> Andy BitOff © (04.10.10 18:13) [25]
> А, да, перед копированием ForceDirectory выполнить
то есть как это сделать?
← →
Overclocker © (2010-10-04 18:58) [28]а допустим вручную пути прописывать откуда и куда копировать .. как это реализовать????
← →
Плохиш © (2010-10-04 19:31) [29]обучение программированию на форуме - бессмысленная потеря времени.
← →
Anatoly Podgoretsky © (2010-10-04 19:35) [30]> Плохиш (04.10.2010 19:31:29) [29]
Обучение работе с FindFirst особо бессмыслено, столько пытались и все в
пустую. Пусть лучше учится работать с поиском.
← →
Andy BitOff © (2010-10-04 22:32) [31]> Overclocker © (04.10.10 18:39) [27]
> то есть как это сделать?
Вызвать функцию ForceDirectory (так помоему) с соответствующим параметром. Читай справку.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.12.26;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.004 c