On-line: Vlad04,гостей 3. Всего: 4 [подробнее..]
АвторСообщение



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


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

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


Спасибо: 0 
Профиль
Ответов -4 [только новые]


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




Пост 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 час. Хитов сегодня: 386
Права: смайлыда,картинкида,шрифтыда,голосованиянет
аватарыда,автозамена ссылоквкл,премодерацияоткл,правканет