Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы Вопросы по Delphi (до версии 2009) - часть 5

Познаем сами, помогаем другим...
Обсуждаем вопросы, не связанные с юникоидными версиями Delphi - для этого есть соответствующая тема (см. ссылки ниже).


 
Правила топика:
    Прежде чем спрашивать:
  1. Желательно изучить вопрос, попытаться найти ответ в прилагаемых мануалах, хелпах и анализируя исходники.
  2. Выполнить поиск по топику (открыть "Версия для печати" и поискать ответ там).
  3. Применить фильтр по разделу "Прикладное программирование". Ответы на многие старые вопросы могли быть даны в отдельных темах.
  4. Продумайте вопрос. На поверхностные вопросы вы получите поверхностные ответы, или вообще ответов не получите.
  5. Желательно указывать версии используемого компилятора и операционной системы.
    Прежде чем отвечать:
  1. Если не можете помочь, не мешайте.
  2. Если уж вы отвечаете на вопрос, давайте ответ по сути.
  3. Если вы не уверены, так и говорите! Ошибочный, но авторитетно звучащий ответ хуже, чем отсутствие ответа.
  4. Задавайте дополнительные вопросы, чтобы получить больше информации.
  • Отсутствие ответа не равносильно игнорированию - иногда участники форума просто не знают ответ. Повторная посылка вопроса не приветствуется. Посты типа "неужели никто не знает ответа..." или "может мне все-таки кто-нибудь ответит" недопустимы.  
  • Все большие куски кода (более 5 строк) оформляем в тег [morе] дабы уменьшить размер поста. FAQ по тегу [morе].


    Некоторые "родственные" топики:
     
  • Вопросы по Delphi (версии 2009-2010 Weaver)
  • Вопросы по компонентам для Delphi, C++ Builder
  • Использование DevExpress
  • Вопросы по Ehlib
  • Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus - только Open Source
  • Коммерческие компоненты и утилиты для Delphi/BCB
  • кабак программистов :)
     
    См. также: Некоторые полезные ресурсы о Delphi
     
    И старайтесь, чтобы ваш код не попал сюда :)

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 05:13 19-05-2010 | Исправлено: akaGM, 02:33 15-07-2020
    F777



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    удалено
     

    Всего записей: 2182 | Зарегистр. 23-02-2004 | Отправлено: 00:50 21-01-2018 | Исправлено: F777, 02:36 21-01-2018
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    Примерно так...  

    Сделал - все равно не прекращает сканирование...

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 05:54 22-01-2018
    XenoZ



    Gold Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    GRom V

    Цитата:
    Сделал - все равно не прекращает сканирование...

    Ну так проверь в отладочном режиме. Писал навскидку, возможно с условием промахнулся.
     
    UPD.
    Действительно промахнулся, пардон. Замени and на or и все должно работать.

    ----------
    А оно мне надо?..

    Всего записей: 5443 | Зарегистр. 29-03-2006 | Отправлено: 06:29 22-01-2018 | Исправлено: XenoZ, 14:45 22-01-2018
    svs123456789

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    вот есть программа на дэлфи... ей пользуется несколько человек....  
    и есть проблема:
    программа лежит в сетевой папке и как можно обеспечить некую безопасность

    например  чтобы ктонибудь случайно не стер чтолибо  или  чтобы другие люди не запускали...
     
    иногда мне кажется, что нужно делать сайт вместо проги

    Всего записей: 2934 | Зарегистр. 10-04-2003 | Отправлено: 15:57 22-01-2018 | Исправлено: svs123456789, 15:58 22-01-2018
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    svs123456789
    Примитивнейшее решение: запаролить сетевую шару, чтобы ее могли открыть только те, у кого есть пароль. А так вообще способов миллион. Например, если вы хотите сайт, значит у вас обязательно будет сервер с базой данных. Но зачем тогда делать сайт, если ту же БД можно к существующей проге приделать? Или даже трехзвенку организовать?

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 16:03 22-01-2018 | Исправлено: Frodo_Torbins, 16:04 22-01-2018
    ShIvADeSt



    Moderator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    svs123456789

    Цитата:
    например  чтобы ктонибудь случайно не стер чтолибо  или  чтобы другие люди не запускали...  

    Это не в программирование, как минимум NTFS права/права на папку. Настраиваем доступ на чтение/изменение, удаление запрещаем. Права даем только нужной группе, пользователей в группу. Остальные идут мимо, можно настроить, чтобы им даже в папку не зайти.

    ----------
    И создал Бог женщину... Существо получилось злобное, но забавное...

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:59 23-01-2018
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    Ну так проверь в отладочном режиме. Писал навскидку, возможно с условием промахнулся.
     
    UPD.
    Действительно промахнулся, пардон. Замени and на or и все должно работать.

     
    Да, огромное спасибо - все путем...

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 10:01 25-01-2018
    svs123456789

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Цитата:
    например  чтобы ктонибудь случайно не стер чтолибо  или  чтобы другие люди не запускали...  
     
    Это не в программирование, как минимум NTFS права/права на папку. Настраиваем доступ на чтение/изменение, удаление запрещаем. Права даем только нужной группе, пользователей в группу. Остальные идут мимо, можно настроить, чтобы им даже в папку не зайти.
     

     
    а вот если выбирать из двух вариантов:
    в "общую" паку кладем "несетевую" базу данных, типа SQLite или sql compact,  
    а клиентскую программу для работы с бд - кладем также в сетевую папку и все пользователи (порядка 10) вызывают программу через ярлык прямо из шары без инсталляции
     
    или
    программа инсталлируется к каждому пользователю на пк, а к бд программа обращается по сетевому пути unc в локальной сети (файл бд лежит на шаре)

    Всего записей: 2934 | Зарегистр. 10-04-2003 | Отправлено: 11:47 27-01-2018
    ShIvADeSt



    Moderator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    svs123456789
    Не увидел в данных вариантов защиты от удаления (случайного/специального).
    А так, данный вариант

    Цитата:
    а клиентскую программу для работы с бд - кладем также в сетевую папку и все пользователи (порядка 10) вызывают программу через ярлык прямо из шары без инсталляции

    более удобен тем, что в случае обновления программы необходимо менять ее только в одном месте.  
    Минус, могут быть проблемы с сохранением пользовательских настроек.


    ----------
    И создал Бог женщину... Существо получилось злобное, но забавное...

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:42 29-01-2018
    Mic777

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    а вот если выбирать из двух вариантов:  
    в "общую" паку кладем "несетевую" базу данных, типа SQLite или sql compact,  
    а клиентскую программу для работы с бд - кладем также в сетевую папку и все пользователи (порядка 10) вызывают программу через ярлык прямо из шары без инсталляции  
     
    или  
    программа инсталлируется к каждому пользователю на пк, а к бд программа обращается по сетевому пути unc в локальной сети (файл бд лежит на шаре)

     
    не работал в SQLite, но читая описание:
    https://www.sqlite.org/faq.html#q5
    Подробнее...
     
    мне представляется, что для одновременной работы нескольких пользователей Вы идете не по тому пути в плане архитектуры приложения. По мне SQLite хорош именно для как база для одного устройства, что в общем то и пишут сами разработчики https://www.sqlite.org/whentouse.html
    А по теме я бы смотрел в сторону клиент-серверных СУБД, когда база НЕ РАСШАРЕНА ни в коем разе, а клиенты ходят по определенному порту на "сервер" и с него же запускают приложение. Как пример, тот же FireBird думаю ничем не сложнее в администрировании, и прекрасно работает с минимальными настройками "из коробки".
    Что касается настроек приложения, если они нужны персональные, то смотреть в сторону профилей пользователя.

    Всего записей: 90 | Зарегистр. 15-12-2005 | Отправлено: 13:55 29-01-2018 | Исправлено: Mic777, 13:57 29-01-2018
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    svs123456789
    Согласен с Mic777, с точки зрения надежности и безопасности, оба ваших варианта одинаково плохие. Если уж вы думали делать сайт, то поставьте нормальный сервер БД, например MySQL, FireBird или PostgreSQL. Можете и SQLite продолжать использовать, но тогда трехзвенку делайте (вначале средний слой может быть очень тонким, и просто передавать запросы к БД).

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 20:11 29-01-2018
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Здравствуйте уважаемые форумчане.
    есть такая штука (изменение системной даты) - но не  получается изменить только год!
    var
    s : _SYSTEMTIME;
    begin
    s.wYear := 2001;
    s.wMonth:= 1;
    s.wDayOfWeek := 1;
    s.wDay := 1;
    s.wHour := 0;
    s.wMinute := 0;
    s.wSecond := 0;
    s.wMilliseconds := 0;
    SetSystemTime(s);
     
    Задача такая - запомнить текущий год (только год) изменить например на 2009 (изменить нужно только год!)
    а потом вернуть тот что запомнили (т.е. актуальный) - интернета на компе нет.
    Может подскажет как грамотно сделать?

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 03:09 02-06-2018
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GRom V
     
    ну так обычная практика работать через Get/Set, т.е. сначала сохранить текущее значение:
     
    GetSystemTime(s_save)
    //выставляем нужные значения в s_new
    s_new = s_save
    s_new.wYear := 2001
    SetSystemTime(s_new)
     
    //работаем с просроченным нелицензионным софтом :)
     
    SetSystemTime(s_save)
     
    как-то так...

    Всего записей: 24112 | Зарегистр. 06-12-2002 | Отправлено: 11:13 02-06-2018 | Исправлено: akaGM, 11:16 02-06-2018
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
        Редактировать | Профиль | Сообщение | Цитировать | Сообщить модераторуGRom V
     
    ну так обычная практика работать через Get/Set, т.е. сначала сохранить текущее значение:
     
    GetSystemTime(s_save)
    //выставляем нужные значения в s_new
    s_new = s_save
    s_new.wYear := 2001
    SetSystemTime(s_new)
     
    //работаем с просроченным нелицензионным софтом
     
    SetSystemTime(s_save)  

     
    [Error] Unit1.pas(30): Undeclared identifier: 's_save'
     
    Добавлено:
    можно рабочий пример?

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 14:06 02-06-2018
    XenoZ



    Gold Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    GRom V

    Цитата:
    [Error] Unit1.pas(30): Undeclared identifier: 's_save'

    Переменные объявлять надо перед использованием.

    ----------
    А оно мне надо?..

    Всего записей: 5443 | Зарегистр. 29-03-2006 | Отправлено: 14:18 02-06-2018
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    И все же можно рабочий пример?

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 14:30 02-06-2018
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    гы
     
    а причём тогда здесь "Вопросы по Дельфи"? тебе в "Задачи" надо...
    у меня лично на даче вообще компиляторов нет, отдыхаю...
     
    Добавлено:
     

    Код:

    var
      s_save, s_new : _SYSTEMTIME;
    begin
      GetSystemTime(s_save);
      s_new := s_save;
      s_new.wYear := 2001;
      SetSystemTime(s_new);
    ...
    ... делаем что надо
    ...
      SetSystemTime(s_save);
    end.

     
    надеюсь, ты не будешь спрашивать что за ошибка
    [Error] Unit1.pas(30): Undeclared identifier: '... делаем что надо'

    Всего записей: 24112 | Зарегистр. 06-12-2002 | Отправлено: 17:11 02-06-2018 | Исправлено: akaGM, 17:20 02-06-2018
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Спасибо добрый человек)

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 22:30 02-06-2018
    ShIvADeSt



    Moderator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM
    Если "делаем что надо" будет длиться достаточно долго, то можем получить рассинхрон по времени.
    Я бы этот код

    Цитата:
    var
      s_save, s_new : _SYSTEMTIME;
    begin
      GetSystemTime(s_save);
      s_new := s_save;
      s_new.wYear := 2001;
      SetSystemTime(s_new);
    ...
    ... делаем что надо
    ...
      SetSystemTime(s_save);
    end.

    немного по-другому оформил

    Код:
    var
      stNow         : _SYSTEMTIME;
      wCurYear   :word;
    begin
      GetSystemTime(stNow);
      wCurYear := stNow.wYear;
      stNow.wYear := 2001;
      SetSystemTime(stNow);
    ...
    ... делаем что надо
    ...
      GetSystemTime(stNow);
      stNow.wYear := wCurYear;
      SetSystemTime(stNow);
    end.


    ----------
    И создал Бог женщину... Существо получилось злобное, но забавное...

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 08:59 04-06-2018
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ShIvADeSt

    Цитата:
    Я бы этот код
    ...
    немного по-другому оформил
    гы
    я за свой код получил замечание, что пложу кулцхакеров-недоумков,
    интересно, что ты получишь со своим статусом? ;)
     
    но тем не менее, твой код правильнее и лучше защищает другие процессы/приложения и саму систему на время действия "так_круто_крякнутого_софта",
    но мы ж не знаем чтО там такие "программисты" делают :)

    Всего записей: 24112 | Зарегистр. 06-12-2002 | Отправлено: 14:23 04-06-2018 | Исправлено: akaGM, 14:25 04-06-2018
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru