On-line: PSP, NickSam, гостей 0. Всего: 2 [подробнее..]
АвторСообщение



Пост N: 41
Зарегистрирован: 05.06.07
ссылка на сообщение  Отправлено: 26.11.07 08:44. Заголовок: Проблема с копированием файла - как сохранить дату?


Копирую функцией __CopyFile(src,trg)
Вроде бы она же вызывается командой COPY FILE ... TO ...
При этом не сохраняется дата+время файла-источника,
а пишется системное на момент копирования.

Как скопировать с сохранением оригинала?


Спасибо: 0 
Профиль
Новых ответов нет [см. все]


Администратор




Пост N: 649
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.11.07 09:32. Заголовок: Сейчас - только само..


Сейчас - только самому установить дату создания результирующего файла
см. FileDate(), FileTime(), SetFDaTi()
Но можно было бы добавить эту функциональность в харбор, клиппер ведь сохраняет дату


Спасибо: 0 
Профиль
Администратор




Пост N: 654
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.11.07 22:39. Заголовок: Сделал. Возьми на xH..


Сделал. Возьми на xHarbour CVS

Спасибо: 0 
Профиль



Пост N: 44
Зарегистрирован: 05.06.07
ссылка на сообщение  Отправлено: 27.11.07 09:59. Заголовок: спасибо за отзывчивость


Вчера уже сделал по вашему первому совету.

Делал себе утилиту для автоматического обновления файлов на сетевых рабочих станциях с расшаренного ресурса. Настройка и описание - в Ini-фале.
Может кому интересен такой вариант. Вроде работает.
-------CheckNew.prg------------
#include <minigui.ch>
#define CRLF HB_OsNewLine()

function Main()
local cIniFile:= GetStartupFolder()+'\CheckNew.ini'
local cSection
local nQTY:=0, lConfirmDialog:=.f., cCurrentFolder:='', cRun:=''
local cSource:='', cTarget:=''
local aD1, aD2, nTS1:=0, nTS2:=0

p:=''
BEGIN INI FILE cIniFile
cSection:='COMMON'
GET p SECTION cSection ENTRY "nQTY" DEFAULT 0
nQTY:=val(p)
GET p SECTION cSection ENTRY "lConfirmDialog" DEFAULT 'F'
lConfirmDialog:=if(upper(left(p,1))='Y', .t., .f.)
GET cCurrentFolder SECTION cSection ENTRY "CurrentFolder" DEFAULT ''
GET cRun SECTION cSection ENTRY "Run" DEFAULT ''

for i:=1 to nQTY
cSection:='FILE'+alltrim(str(i))
GET cSource SECTION cSection ENTRY "SOURCE" DEFAULT ''
GET cTarget SECTION cSection ENTRY "TARGET" DEFAULT ''

if !empty(cSource) .and. HB_FILEEXISTS(cSource)
//DIRECTORY(<cDirSpec>, [<cAttributes>]) --> aDirectory
aD1:=DIRECTORY( cSource)
if len(aD1)>0
nTS1:=val(DTOS(aD1[1,3]))*100000+TIMETOSEC(aD1[1,4])
endif
else
loop
endif
nTS2:=0
if !empty(cTarget)
if HB_FILEEXISTS(cTarget)
aD2:=DIRECTORY( cTarget)
if len(aD2)>0
nTS2:=val(DTOS(aD2[1,3]))*100000+TIMETOSEC(aD2[1,4])
endif
endif
else
loop
endif
//msgbox(str(nTS1)+'/'+str(nTS2))
if nTS1>nTS2 //есть обновление
if lConfirmDialog
if MsgYesNo('Найдено обновление для файла <'+cTarget+'>'+CRLF+;
'Установить это обновление?', 'CheckNew')
__CopyFile( cSource, cTarget)
//SETFDATI(<cFilename>, [<dDate>], [<cTime>]) --> lDone
SETFDATI(cTarget, aD1[1,3], aD1[1,4])
endif
else
__CopyFile( cSource, cTarget)
SETFDATI(cTarget, aD1[1,3], aD1[1,4])
endif
endif
next
END INI

if !empty(cCurrentFolder)
DIRCHANGE(cCurrentFolder)
endif

if !empty(cRun)
EXECUTE FILE cRun
endif

return Nil
//-------------------------------

-----CheckNew.ini---------------
[INFO]
;Не удаляйте эту секцию с описанием структуры файла.
;Иначе в дальнейшем вам будет трудно настраивать программу
;т.к. она не имеет диалогового интерфейса
;
;Обязательная секция COMMON
;Обязательный числовой параметр nQTY - количество проверяемых файлов
;Логический параметр lConfirmDialog - если Y[es] , то для обновления
; каждого файла задается вопрос
;при непустом CurrentFolder - по окончании обновления всех файлов
; описанная здесь папка становится папкой "по-умолчанию"
;при непустом Run - по окончании обновления всех файлов запускается
; описанная здесь программа
;
;Секции описания проверяемых файлов FILE1 ... FILEn, где n=nQTY
;в каждой секции
;SOURCE - файл-источник с полным путем к нему
;TARGET - файл-приемник с полным путем к нему
; сравниваются (дата+время) создания файлов
; файлы SOURCE и TARGET могут иметь разные имена

[COMMON]
nQTY=1
lConfirmDialog=Yes
CurrentFolder=C:\MiniGUI_Projects\CheckNew\
Run=C:\MiniGUI_Projects\CheckNew\SkladMySQL.Exe

[FILE1]
SOURCE=\\Pdc\exchange.box\l'vov\SkladMySQL.Exe
TARGET=C:\MiniGUI_Projects\CheckNew\SkladMySQL.Exe


Спасибо: 0 
Профиль



Пост N: 1
Зарегистрирован: 23.06.08
ссылка на сообщение  Отправлено: 23.06.08 19:22. Заголовок: А как определить тек..


А как определить текущую папку?

Спасибо: 0 
Профиль
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 178
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет