Глупые вопросы

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Vladimir
Новичок
Сообщения: 22
Зарегистрирован: 19 Октябрь 2005, 13:38

Глупые вопросы

Сообщение Vladimir » 06 Сентябрь 2018, 18:10

Игорь Столяров писал(а):
06 Сентябрь 2018, 17:37
Должно быть что-то вроде
Спасибо!! Буду копать в этом направлении!!

AndreyH
Новичок
Сообщения: 5
Зарегистрирован: 11 Сентябрь 2018, 19:39

Глупые вопросы

Сообщение AndreyH » 11 Сентябрь 2018, 19:49

Давно пишу на 6.1. Вопрос: а где сейчас можно взять дистрибутив хотя бы 6.3, не говоря уже о 10 или 11?

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4237
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Глупые вопросы

Сообщение Игорь Столяров » 12 Сентябрь 2018, 11:41

В FTP разделе форума всё есть в ассортименте ...
«V» значит Вендетта !

Ал
Ветеран
Сообщения: 809
Зарегистрирован: 08 Июль 2005, 5:48
Откуда: Россия

Глупые вопросы

Сообщение Ал » 12 Сентябрь 2018, 11:55

AndreyH писал(а):
11 Сентябрь 2018, 19:49
Давно пишу на 6.1. Вопрос: а где сейчас можно взять дистрибутив хотя бы 6.3, не говоря уже о 10 или 11?
в Приват...
https://clck.ru/ELGrF
:)

Аватара пользователя
vic7tar
Старожил
Сообщения: 241
Зарегистрирован: 09 Февраль 2017, 20:12

Глупые вопросы

Сообщение vic7tar » 10 Июль 2019, 18:51

Вот часть скриншота дебаггера. Вопрос -можно ли определить адрес reference в стеке средствами Clarion-а?
Ref_address.png
Интересуют не "удочки", а конкретная "рыба".
C10, Win10x64

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2307
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Глупые вопросы

Сообщение Дед Пахом » 10 Июль 2019, 19:26

Правой мышью жмём на первый байт (на картинке это CC, выделен рамкой), в меню выбираем Locale Offset, и OK.
С уважением, ДП

Аватара пользователя
vic7tar
Старожил
Сообщения: 241
Зарегистрирован: 09 Февраль 2017, 20:12

Глупые вопросы

Сообщение vic7tar » 10 Июль 2019, 19:32

Ну я не знаю, как мне правильно формулировать свои вопросы?
C10, Win10x64

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2307
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Глупые вопросы

Сообщение Дед Пахом » 10 Июль 2019, 19:36

vic7tar писал(а):
10 Июль 2019, 19:32
Ну я не знаю, как мне правильно формулировать свои вопросы?
чтобы дураку понятно было!
С уважением, ДП

Аватара пользователя
vic7tar
Старожил
Сообщения: 241
Зарегистрирован: 09 Февраль 2017, 20:12

Глупые вопросы

Сообщение vic7tar » 10 Июль 2019, 19:46

Интересует адрес 402070 на картинке. Дебаггер в качестве иллюстрации.
C10, Win10x64

Аватара пользователя
vic7tar
Старожил
Сообщения: 241
Зарегистрирован: 09 Февраль 2017, 20:12

Глупые вопросы

Сообщение vic7tar » 17 Сентябрь 2019, 18:25

В ClaRun.dll присутствует функция time (_time). Никто не вычислял, с какой даты идёт отсчёт секунд и из каких соображений они это придумали?
C10, Win10x64

Аватара пользователя
vic7tar
Старожил
Сообщения: 241
Зарегистрирован: 09 Февраль 2017, 20:12

Глупые вопросы

Сообщение vic7tar » 27 Сентябрь 2019, 21:12

Вот небольшая иллюстрация сравнения:

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

    Program

    Map
       Module('winapi') ; LoadLibrary    (*CString lpLibFileName), Long, raw, Pascal, name('LoadLibraryA')
                          GetProcAddress (Long hModule, *CString lpProcName), Long, raw, Pascal
                          FreeLibrary    (Long hLibModule), Long, Pascal, Proc.
          
       Module('msvcrt') ; time_msvcrt  (uLong), uLong, C, dll(1), name('time_ms').
       Module('ClaRun') ; time_ClaRun  (uLong), uLong, name('_time').
    .

LF Equate ('<10>')

adr_dll            Long
name_dll           CString('msvcrt.dll')
name_proc          CString('time')
h_time             Long, name('time_ms')

cur_sec_Cla        uLong
cur_sec_MS         uLong
cur_sec_CV         uLong
cur_DT             String('текущая дата-время: dd-mm-yy  hh:mm:ss')

sec_from_01_01_1900_00:00:00___to___01_01_1970_00:00:00  uLong(2208988800.0e+0)  !Согласно протоколу Time в RFC 868 70 лет до 1970 (время UNIX)

    Code

    cur_DT      = 'текущая дата-время: ' & Format(Today(), @D5-) & '  ' & Format(Clock(), @T4)
    cur_sec_Cla = time_ClaRun (0)

    adr_dll     = LoadLibrary (name_dll)
    h_time      = GetProcAddress (adr_dll, name_proc)
    cur_sec_MS  = time_msvcrt (0)
    cur_sec_CV  = cur_sec_MS + sec_from_01_01_1900_00:00:00___to___01_01_1970_00:00:00
    FreeLibrary (adr_dll)

    Message( cur_DT & LF & |
             Format(cur_sec_MS,  @p########## - секунды с 01-01-1970 (msvcrt.dll) p) & LF & |
             Format(cur_sec_CV,  @p########## - секунды с 01-01-1900 (что должно быть) p) & LF & |
             Format(cur_sec_Cla, @p########## - секунды с 23-04-1905 12:35:44 (ClaRun.dll) p), '    Итог :', , , , MSGmode:FixedFont)
 
Отсчёт секунд функция _time() (ClaRun) начинает с 23-04-1905 12:35:44. Разбирать алгоритм этого отсчета - лень, не думаю, что где-то вкралась ошибка. Ну такой отсчёт.
Хотя, вместо Clock() функция _time() вполне может быть использована в таймерах не на сутки, а аж до 2043г., если не нужны сотые.
C10, Win10x64

Ответить