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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 | Цитировать | Сообщить модератору
    Разбираю сейчас книгу Фаронова по созданию компонент (пример дан чуть ниже). Вопрос такой - в этом модуле определен метод Timer с параметрами (Sender: TObject). Далее этот метод вызывается в конструкторе Create , но уже БЕЗ параметров, более того, добавление параметров вызывает ошибку. Почему это так происходит? Зачем вобще этот параметр нужен? Это стандарт так вызывать процедуры и объявлять их в полях класса? Почему нельзя объявить метод Timer без параметра?
     
    Вот пример -  
    Код модуля

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

    Всего записей: 655 | Зарегистр. 22-06-2003 | Отправлено: 12:02 07-09-2012
    salexn1



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Bonivur
    Видно плохо вы читали книгу...
    Метод Timer отрабатывает при событии OnTimer у объекта fTimer: TTimer...
    В конструкторе он НЕ ВЫЗЫВАЕТСЯ, а всего лишь указывается, что данный метод будет вызываться...
     
    Одним словом: читать,читать и еще раз читать

    Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 12:16 07-09-2012
    Bonivur



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    salexn1
    Просто если я определю процедуру MyProc с параметром, к примеру MyProc (val:Integer);
    то при вызове её без параметра мне напишет ошибку. А почему тут не пишет? И почему нельзя определить процедуру Timer вобще без параметра? Вот что мне хотелось бы узнать.

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

    Всего записей: 655 | Зарегистр. 22-06-2003 | Отправлено: 22:50 07-09-2012
    Varenik



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Bonivur
    Тебе ж сказали:
    Цитата:
    В конструкторе он НЕ ВЫЗЫВАЕТСЯ, а всего лишь указывается, что данный метод будет вызываться...  

    FTimer.OnTimer := Timer;  
    Timer здесь стоит справа и не вызывается, а событию OnTimer присваивается указатель на метод Timer
    А нельзя объявить без параметра, потому что событие OnTimer имеет тип TNotify
    TNotify=procedure(Sender:TObject), поэтому этому событию можно присвоить только указатель на метод с таким же числом параметров (1) и таким же типом (TObject)


    ----------
    Если нравится, считайте, что получилось…

    Всего записей: 1767 | Зарегистр. 21-07-2001 | Отправлено: 08:25 08-09-2012
    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
    Компонента на палитре появляется?

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

    Всего записей: 2319 | Зарегистр. 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 и вперед, на амбразуру!

    Всего записей: 2319 | Зарегистр. 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
    Открыть новую тему     Написать ответ в эту тему

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