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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

ShIvADeSt



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

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

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

     
    И старайтесь, чтобы ваш код не попал сюда

  • Всего записей: 3934 | Зарегистр. 29-07-2003 | Отправлено: 05:13 19-05-2010 | Исправлено: data man, 02:45 31-12-2010
    F777



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

    Всего записей: 2172 | Зарегистр. 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 и все должно работать.

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

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

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

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

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

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

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



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

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

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

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

    Всего записей: 3934 | Зарегистр. 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 в локальной сети (файл бд лежит на шаре)

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



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

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

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


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

    Всего записей: 3934 | Зарегистр. 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 думаю ничем не сложнее в администрировании, и прекрасно работает с минимальными настройками "из коробки".
    Что касается настроек приложения, если они нужны персональные, то смотреть в сторону профилей пользователя.

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

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

    Всего записей: 2194 | Зарегистр. 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)
     
    как-то так...

    Всего записей: 18426 | Зарегистр. 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'

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

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

    Всего записей: 5029 | Зарегистр. 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: '... делаем что надо'

    Всего записей: 18426 | Зарегистр. 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.


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

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

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

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

    Всего записей: 18426 | Зарегистр. 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

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

    Имя:
    Пароль:
    Сообщение

    Для вставки имени, кликните на нем.

    Опции сообщенияДобавить свою подпись
    Подписаться на получение ответов по e-mail
    Добавить тему в личные закладки
    Разрешить смайлики?
    Запретить коды



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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2018

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru