дата и время таблицы

MapInfo, MapBasic
Роман01
Участник
Сообщения: 66
Зарегистрирован: 03 авг 2010, 04:24
Репутация: 0

Re: дата и время таблицы

Сообщение Роман01 »

Я запустил Вашу программу (от 26 марта 2013г.) . Она выдала результат: день 18415632 Час 0.
Реально этот файл 29.07.2013 08:33
Как мне изменить программу, чтобы я видел 29.07.2013 ?

Пожалуйста, помогите!
Роман01
Участник
Сообщения: 66
Зарегистрирован: 03 авг 2010, 04:24
Репутация: 0

Re: дата и время таблицы

Сообщение Роман01 »

Или отдельно 2013, 07, 29. Или как перевести число 18415632? Но дата 29.07.2013 - это число 41484.
Аватара пользователя
dab
Гуру
Сообщения: 671
Зарегистрирован: 16 дек 2011, 20:02
Репутация: 170
Ваше звание: Гуру
Откуда: Москва
Контактная информация:

Re: дата и время таблицы

Сообщение dab »

Роман01 писал(а):Я запустил Вашу программу (от 26 марта 2013г.) . Она выдала результат: день 18415632 Час 0.
Роман я же написал, что "В принципе должно быть приблизительно так"
Суть сюжета к Mapbasic не имеет никакого отношения, это WinAPI.
Быть может этот код и не должен работать в MB из-за различия в типах данных, а работает только в VB.
Не зацикливайтесь, воспользуйтесь, например, советом thegeo
Роман01
Участник
Сообщения: 66
Зарегистрирован: 03 авг 2010, 04:24
Репутация: 0

Re: дата и время таблицы

Сообщение Роман01 »

А там еще хуже:
Declare Sub Main
Declare Method myDateFileCreation
Class "dttm.myDateTime" Lib "dttm.dll"
(ByVal pth As String) As String

Sub Main
dim fullFileName as string
fullFileName="C:\_00\SpData.txt"
print myDateFileCreation(fullFileName)
end sub

Выдает ошибки в строках:
2: Found [method] while searching for [sub]
6: Excepting sub or function
9: Unrecognized comman: (
juffin_h
Завсегдатай
Сообщения: 265
Зарегистрирован: 22 окт 2012, 08:35
Репутация: 50
Откуда: Нижний Новгород

Re: дата и время таблицы

Сообщение juffin_h »

dab писал(а):
Роман01 писал(а): Помогите, пожалуйста, определить настоящую дату файла.
Роман, извините, не могу помочь - не понимаю в чём проблема с этим кодом :(
Проблема в типе. WORD = SmallInt.

Код: Выделить всё

Type SystemTime
    wYear As SmallInt
    wMonth As SmallInt	
    wDayOfWeek As SmallInt
    wDay As SmallInt
    wHour As SmallInt
    wMinute As SmallInt
    wSecond As SmallInt
    wMilliseconds As SmallInt
End Type
Так все работает.
Роман01
Участник
Сообщения: 66
Зарегистрирован: 03 авг 2010, 04:24
Репутация: 0

Re: дата и время таблицы

Сообщение Роман01 »

Type SystemTime
wYear As SmallInt
wMonth As SmallInt
wDayOfWeek As SmallInt
wDay As SmallInt
wHour As SmallInt
wMinute As SmallInt
wSecond As SmallInt
wMilliseconds As SmallInt
End Type

Type FileTime
dwLowDateTime As SmallInt
dwHighDateTime As SmallInt
End Type

Declare Function GetFileTime Lib "kernel32" Alias "GetFileTime"
(ByVal hFile As SmallInt, lpCreationTime As FILETIME,
lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As SmallInt
Declare Function lopen Lib "kernel32" Alias "_lopen"
(ByVal lpFileName As String, ByVal wReadWrite As SmallInt) As SmallInt
Declare Function lclose Lib "Kernel32" Alias "_lclose"
(ByVal hFile As SmallInt) As SmallInt
Declare Function FileTimeToSystemTime Lib "kernel32" Alias "FileTimeToSystemTime"
(lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As SmallInt
Declare Function FileTimeToLocalFileTime Lib "kernel32" Alias "FileTimeToLocalFileTime"
(lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As SmallInt

Dim ihFile As SmallInt
Dim ftLocal, ftCreate, ftAccess, ftWrite As FileTime
Dim stCreateFile As SystemTime
Dim iTemp As SmallInt

ihFile = lOpen("C:\Mapinfo\mapbasic\T_kolw.dat", 0)
iTemp = GetFileTime(ihFile, ftCreate, ftAccess, ftWrite)
iTemp = FileTimeToLocalFileTime(ftCreate, ftLocal)
iTemp = FileTimeToSystemTime(ftLocal, stCreateFile)

Note "День " + Str$(stCreateFile.wDay) + "месяц " + Str$(stCreateFile.wMonth)
+"год " + Str$(stCreateFile.wYear)

iTemp = lClose(ihFile)


Но почему-то выдает текущую дату, а не дату файла.
Помогите, пожалуйста!
Аватара пользователя
dab
Гуру
Сообщения: 671
Зарегистрирован: 16 дек 2011, 20:02
Репутация: 170
Ваше звание: Гуру
Откуда: Москва
Контактная информация:

Re: дата и время таблицы

Сообщение dab »

Роман01 писал(а):...
Но почему-то выдает текущую дату, а не дату файла.
Я поменял тип Integer на SmallInt только при определении типа SystemTime, как и указано в посте
viewtopic.php?f=17&t=10137&view=unread& ... b99#p94103
Всё работает правильно.
Роман01
Участник
Сообщения: 66
Зарегистрирован: 03 авг 2010, 04:24
Репутация: 0

Re: дата и время таблицы

Сообщение Роман01 »

Еще одна небольшая просьба.
А как узнать дату последнего изменения? (а не создания файла)
Что нужно и на что исправить?
Пожалуйста, помогите!
juffin_h
Завсегдатай
Сообщения: 265
Зарегистрирован: 22 окт 2012, 08:35
Репутация: 50
Откуда: Нижний Новгород

Re: дата и время таблицы

Сообщение juffin_h »

В результате вызова GetFileTime(ihFile, ftCreate, ftAccess, ftWrite)
ftCreate - время создания
ftAccess - время доступа
ftWrite - время модификации (изменения)

Дальнейшие действия с ftAccess и ftWrite такие же как и с ftCreate.

P.S. Читайте Windws API.
Роман01
Участник
Сообщения: 66
Зарегистрирован: 03 авг 2010, 04:24
Репутация: 0

Re: дата и время таблицы

Сообщение Роман01 »

Спасибо!
Почему у меня в строке Commit Table ... выдает Unable to create new table. (Не удалось создать новую таблицу?)
if od1>od2 or ihFile2=-1 Then
Open Table "\\192.168.1.1\public\Proekty\MapBasic\T_kolk.tab" Interactive As Dob4
Commit Table Dob4 As "c:\MapInfo\MapBasic\T_kolk.tab"
Close Table Dob4
end if
Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя