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

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



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Varenik
    Вот теперь понятно! Спасибо большое.


    ----------
    Что будет стоить тысяча слов когда важна будет крепость руки? (В.Цой)

    Всего записей: 655 | Зарегистр. 22-06-2003 | Отправлено: 19:35 08-09-2012
    miwa

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Bonivur
    Хочу дополнительно обратить ваше внимание на выделенное Varenik-ом слово "указатель". Фактически, правильно надо бы писать так:
     
     FTimer.OnTimer := @Timer;
     
    Просто Delphi предоставляет нам "синтаксический сахар", позволяя не уточнять, что в данном случае передается именно указатель на процедуру. В Лазарусе, например, надо явно указывать символ «@» в таких случаях.

    Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 23:52 10-09-2012
    Cryogen2003



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Добрый день.
     
    Есть проблема - нужно добавить в программу ActiveX компонент. Но при импортировании он создает кучу интерфейсов, но не одного класса. И из-за этого не совсем понимаю как его можно использовать.  
    Но в тоже время, если вставить этот компонент к примеру в Microsoft excel или создать страничку html с использованием данного компонента, то все работает.
     
    Стало быть, как быть, чтобы его запустить в Delphi?

    ----------
    Холодильники мы

    Всего записей: 745 | Зарегистр. 08-12-2004 | Отправлено: 12:27 11-09-2012
    Frodo_Torbins

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

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 14:33 11-09-2012
    Cryogen2003



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Frodo_Torbins
    Нет, так как она экспортирует в pas только интерфейсы, нужных классов в получаемом pas не наблюдаю.

    ----------
    Холодильники мы

    Всего записей: 745 | Зарегистр. 08-12-2004 | Отправлено: 15:18 11-09-2012
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Cryogen2003
    Наверное это какой то не совсем традиционный ActiveX. Может он 64-битный? Если его разработчики написали какую-нибудь доку, то в первую очередь стоит в ней поискать. Еще можно импортировать другой компонент, и по его примеру вручную создать наследника TOleControl для требуемого компонента. Правда для этого придется разобрать его tlb.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 23:11 11-09-2012
    delover

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Поздравляю с днём ПРОГРАММИСТА

    Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 18:28 12-09-2012
    Cryogen2003



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Frodo_Torbins
    Ну типа это нормальный ActiveX, ведь он работает из приложений Microsoft и из браузера.  
    Доку на него не писали, к сожаление NCR и Genesis стараются всегда не писать доки на свой софт.  
     
    А вот самому написать наследники Tolecontrol - гм, что то я совсем очкую на эту тему. Есть аналог от этой же компании еще одного компонента, слишком много текста в итоге получается, стремно как то

    ----------
    Холодильники мы

    Всего записей: 745 | Зарегистр. 08-12-2004 | Отправлено: 19:09 12-09-2012
    Ichigo2



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет всем.
    Вкратце суть вопроса - есть переменная Bmp: TBitmap, как ее вывести скажем на канву или TImage?

    Всего записей: 153 | Зарегистр. 01-05-2011 | Отправлено: 23:05 19-09-2012
    Rommiras79



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет, подскажите есть у когонить пример реализации алгоритма шифрования Salsa20?

    Всего записей: 47 | Зарегистр. 15-09-2012 | Отправлено: 23:35 19-09-2012
    V1s1ter



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

    Код:
     
    procedure TForm14.FormPaint(Sender: TObject);
    var
      Bmp: TBitmap;
    begin
      Bmp := TBitmap.Create;
      Bmp.LoadFromFile('D:\PrgWork\Vlib_Image\MouseAngle.bmp');
      Form14.Canvas.Draw(10, 10, Bmp);
      Bmp.Free;
    end;
     

     
     
    Добавлено:
    Да, забыл про Timage

    Код:
    procedure TForm14.FormCreate(Sender: TObject);
    var
      Bmp: TBitmap;
    begin
      Bmp := TBitmap.Create;
      Bmp.LoadFromFile('D:\PrgWork\Vlib_Image\MouseAngle.bmp');
      Image1.Picture.Bitmap := Bmp;
      Bmp.Free;
    end;

    И справку читать бы почаще....

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 00:08 20-09-2012
    Dimrix



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Люди подскажите как решить задачу (а то мозги кипят уже не могу построить элементарную логическую цепочку). Добрые люди из Масдая отключили установку драйверов по тихому начиная с Висты (т.е. 7ка хочешь не хочешь а спросит доверяю ли я не подписанному драйверу). Так как юзеры часто тупят и тыкают "не доверяю", после чего не могут законектится в тырнет т.к. драйвера не установлены (ПО связана с установкой драйверов и подключение/отключение юзверя к тырнет). Доверия к юзерам нету, посему решил обойти тупизм масдая, но запнулся на ровном месте. Вообщем что нужно:
    1. Я вызываю процедуру установки драйвера, которая в свою очередь выкидывает окно Виндовса с предупреждением о доверии.
    2. Дабы юзер не тыкал куда не надо мне нужно за него ткнуть по кнопке доверяю. Поймать окно и кнопку не вопрос - вопрос в том, что процесс не доходит до отлова, так как ждёт пока юзер нажмёт кнопку.
    3. Application.ProcessMessages наоборот мешает, так начинает выполнять ПО дальше, а мне сперва нужно цикл завершить по установки драйверов, прежде чем обрщаться к железу.
    Как можно запустить отслеживание появление окна с предупреждением, да так, что бы ПО не лезло выполнять и другие задачи а крутилось внутри цикла?
     
    PS: В принципе мою задачу можно решить тем же методом, что и с rasdial, где одним из параметров является функция, которая постоянно проверяет состояние подключения. Но как это реализовано я не знаю... а открытого кода по ней не нашёл, только сухое масдаевское описание...

    Всего записей: 61 | Зарегистр. 04-04-2004 | Отправлено: 18:11 20-09-2012 | Исправлено: Dimrix, 18:28 20-09-2012
    Frodo_Torbins

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

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 21:30 20-09-2012
    rrromano



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Rommiras79
    На шарпе что-то нарыл - посмотрите, может, оно...
    https://github.com/LogosBible/Logos.Utility/blob/master/src/Logos.Utility/Security/Cryptography/Salsa20.cs
     
    Перевести, думаю, не проблема.

    Всего записей: 283 | Зарегистр. 20-09-2006 | Отправлено: 00:23 21-09-2012
    exteris

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Dimrix
    А не проще перед установкой предупредить юзера о том, что сейчас будут установлены драйвера, и ему нужно будет согласиться с их установкой?

    Всего записей: 382 | Зарегистр. 14-04-2003 | Отправлено: 08:28 21-09-2012
    rrromano



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    exteris
    Проще. Но, видимо, не подходит ). Видимо, нужно гарантировать "правильное" нажатие кнопки )

    Всего записей: 283 | Зарегистр. 20-09-2006 | Отправлено: 23:40 21-09-2012
    Dimrix



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

    Цитата:
    Dimrix  
    А не проще перед установкой предупредить юзера о том, что сейчас будут установлены драйвера, и ему нужно будет согласиться с их установкой?

    Если б юзеры были адекватными не пришлось бы прогу писать, ибо достали звонить когда к тырнету не подключается модем: им уже и инструкцию пошаговую с картинками даёшь и девайсы с максимальным удобством, но если тело в тырнет первый раз лезет то какие там драйвера и прочее. А когда табличка ещё и красного цвета, так вообще всё вирус и нужно сразу отказаться... вообщем юзверы...
    ЗЫ: TThread не работал гляну, но пока вышел из положения тупым простым методом: написал софт в 3 процедуры, который живёт максимум 20 сек и каждые 0,5с проверяет на наличие гр...го окна ну и закрывает его при появлении после чего и сама программка завершается досрочно. Знаю что глючно но пока так, поищу что вы мне посоветовали и как с ним бороться

    Всего записей: 61 | Зарегистр. 04-04-2004 | Отправлено: 00:54 22-09-2012
    Dimrix



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

    Цитата:
    Dimrix  
    TThread и вперед, на амбразуру!

    Хочу уточнить: для работы с ним мне нужно запускать 2 потока как я понимаю. Причём один поток запустить процесс "одноразовый" т.е. без цикла:
     
    procedure TThreadDrv1.Execute;
    var res:Cardinal;
     begin
         ClWin;//Synchronize(ClWin);
     end;
    procedure TThreadDrv1.ClWin;
    var res:Cardinal;
     begin
       DriverPackageInstall (Drv, DRIVER_PACKAGE_LEGACY_MODE or DRIVER_PACKAGE_FORCE, nil, NR);
     end;
     
    а второй в цикле:
     
    procedure TThreadDrv.Execute;
     begin
       while not Terminated do
        begin
         ClWin;//Synchronize(ClWin);
         end;
     end;
    procedure TThreadDrv.ClWin;
     begin
       EnumWindows(@EnumWindowsProc, Longint(Form1));
     end;
     
    Так вот когда дело доходит до установка драйвера, всё так же вываливается око, мой софт стопорится и ждёт отклик юзврея, т.е.  EnumWindows(@EnumWindowsProc, Longint(Form1)); не выполняется, где собственно и должна происходить работа за юзверя. Что написано не так?

    Всего записей: 61 | Зарегистр. 04-04-2004 | Отправлено: 11:55 22-09-2012
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Dimrix
    Из потока нельзя обращаться к VCL. А судя по Longint(Form1) вы именно так и делаете. Если вам все же нужно обратиться к форме, то к вашим услугам Synchronize.
    И еще в вашем цикле какой-нибудь Sleep(100) не помешал бы, чтобы одноядерный проц на 100% не грузить и не мешать тем самым процессу установки дров.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 19:26 22-09-2012 | Исправлено: Frodo_Torbins, 19:29 22-09-2012
    Dimrix



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

    Цитата:
    Из потока нельзя обращаться к VCL. А судя по Longint(Form1) вы именно так и делаете. Если вам все же нужно обратиться к форме, то к вашим услугам Synchronize.  
    И еще в вашем цикле какой-нибудь Sleep(100) не помешал бы, чтобы одноядерный проц на 100% не грузить и не мешать тем самым процессу установки дров.

    Synchronize я не просто так закоментил - с ним вообще даже до установки дров дело даже не доходит...
    По поводу Sleep - в основном коде когда я запускаю два потока после чего делаю Sleep(25000) (так много для отладки что бы фиксить куда заходит через Ф8 или брекпоинты). Так вот исследования показали, что не смотря в каком порядке я запускаю потоки, сперва происходит как правило "проверка выпадания окна" после чего доходит до установки драйвера - выпадает окно и всё тишина никаких других процессов не происходит (специально ждал 25сек). Запускал не из под Делфи (вдруг мои точки останова мешали) тоже доходит до окна и всё никаких других процессов (специально ставил счётчики в потоке и менял Caption). Пока мыслей нету у меня как победить одним приложением

    Всего записей: 61 | Зарегистр. 04-04-2004 | Отправлено: 23:45 22-09-2012
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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