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

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



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Frodo_Torbins
    Не могу понять, как обойтись без result? И как узнать с какого процесса была запущена библиотека?
     
    Добавлено:
    Вот , теперь вроде все должно работать:
    Подробнее... Но при вызове функции - ошибка. Как исправить? Выручайте.

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 16:37 16-05-2011 | Исправлено: R3Pa4eK, 18:02 16-05-2011
    Frodo_Torbins

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

    Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 23:23 16-05-2011
    R3Pa4eK



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

    Цитата:
    И какая у вас версия делфи?

    7-я
     
    Добавлено:
    Вызов библиотеки произвожу вот так:
     
    function _CreateProcessInInnoSetup(const EXEName, Parameters, DestDir: string; const Show: Word; TerminateChild: Boolean):BOOL; external '_CreateProcessInInnoSetup@files:InnoExec.dll stdcall';

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 17:21 17-05-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    R3Pa4eK
    Я не в курсе как производится вызов библиотеки в скриптах инно, но в исходниках на делфи он производится так:
    Код:
     function _CreateToolhelp32Snapshot(dwFlags, th32ProcessID: DWORD): THandle; stdcall; external 'kernel32.dll' name 'CreateToolhelp32Snapshot';

    Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 22:32 17-05-2011
    ShIvADeSt



    Moderator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins
    R3Pa4eK
    Мне одному кажется или на самом деле эти вопросы не совсем относятся к типовым вопросам (аля ФАК) по Дельфи? ИМХО нужно либо найти в моем разделе топик по инносетапу или создать и назвать что то типа вызов функций инносетапа из приложений Дельфи. Так как здесь подобные вопросы немного не в тему.

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

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:57 18-05-2011
    Aladdinych



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите плз.
    Разбираюсь с работой одного компонента.
    Он является наследником TGraphicControl.
    Как выяснить последовательность выполнения методов и событий при создании компонента? Того, что сидит в теле конструктора недостаточно для понимания.
    Например как прорисовывается объект, на какие процедуры передается управление, когда объект попадает в фокус.
    Как можно протарассировать компонент?
     
    Добавлено:
    Речь идет о Delphi 7
     
    Добавлено:
    еще уточнение, где задается какие и в какой последовательности будут запускаться методы компонента когда запускается приложение содержащее этот компонент.

    Всего записей: 322 | Зарегистр. 18-10-2005 | Отправлено: 16:12 18-05-2011
    AlekXL



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Aladdinych
    Идешь в файл, где объявлен компонент(вероятно Controls.pas). Вызываешь окно списка функций( есть Gexperts, CnWizards)  
    Вводить туда частичное имя нужной функции, например для отрисовки обычно используются Paint и WM_PAINT. Анализируешь

    Цитата:
    Например как прорисовывается объект, на какие процедуры передается управление, когда объект попадает в фокус.
    В фокус могут попасть компоненты, у которых есть окно,типо TEdit, TButton и так далее. У TGraphicControl не своего окна, он отрисовывается в окне и на Canvas родителя. Так что в фокус попасть он не может - лишь его Parent может.
    Если нужно как-то особенно отрисовывать наследник TGraphicControl, когда его Parent в фокусе, нужно в процедуре отрисовки включить проверку
     

    Код:
    if Parent.Focused then begin
    // special painting
    end  
    else begin
    //not focused Paining
    end;
     

    Для реверсирования кода библиотек хорошим инструментом будет UnderStand (есть в Варезнике)
    Он покажет не только все методы класса, но все ссылки на его членов, где используются, где изменяются и так далее.
    Кароче, использую мосск

    Всего записей: 792 | Зарегистр. 24-04-2008 | Отправлено: 20:13 18-05-2011
    Aladdinych



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    попробовал оттрассировать и выяснил, что при запуске приложения первым делом управление передается методу mousemove этого объекта. посткольку он наследник TgraphicControl, посмотрел справку - оказывается на него передается автоматически управление при поступлении от ОС сообщения WM_MOUSEMOVE. А вот при клике на объекте почему-то автоматически вызывается метод Paint. Не нашел в справке условий по которому он срабатывает.

    Всего записей: 322 | Зарегистр. 18-10-2005 | Отправлено: 12:25 19-05-2011
    AlekXL



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

    Цитата:
    попробовал оттрассировать и выяснил, что при запуске приложения первым делом управление передается методу mousemove этого объекта.

    это скорей всего неверно

    Цитата:
    Не нашел в справке условий по которому он срабатывает.

    блин. Windows посылает сообщение WM_PAINT, когда окну нужно перерисоваться, сначала VCL диспетчирует его в процедуру WMPaint, а далее в Paint. Ставишь бряк на Paint, и видишь в Call Stack <приблизительный> стек вызова процедур(нужно компилировать с флагом Use Debug DCUs и Stack Frames)

    Цитата:
    Не нашел в справке условий по которому он срабатывает.
    Такие вещи в справке не пишутся, иначе объем документации по VCL был бы не мешьше объема исходного кода VCL
    Зачем вам это вообще знать? Во многом знании много печали.
    Если у тебя конкретная задача, озвучь, а так... Судя по твоим вопросам ты новичок в Windows и Delphi программировании, и за ручку провести тебя до уровня спеца -  такое никто тебе не предложит (бесплатно)

    Всего записей: 792 | Зарегистр. 24-04-2008 | Отправлено: 17:29 19-05-2011
    R3Pa4eK



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

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 22:48 19-05-2011 | Исправлено: R3Pa4eK, 23:05 19-05-2011
    delover

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребят, эт не в качестве рекламы, а просто хочу поделиться радостью. RegExpr - может остаться без работы )))). Шутка конечно, но в ней большая доля истины. Посмотрите кому не сложно компонентик, я его выложил на:
    http://cc.embarcadero.com/Item/28316
    (Simply refactor)
     
    При конвертировании 3000 html файлов моя программка делала это за 15 минут. Я уходил курить. Так что отладочка того что нужно конвертить заняла чуть больше недели. Если бы я использовал другой инструмент и выполнение было бы немного дольше, то потратил бы 2 недели. Самого компенетна, всмысле без программного кода хватает почти на 100%, а нетривиальные вещи стали гораздо легче в выполнении.

    Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 07:31 20-05-2011
    R3Pa4eK



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Как можно узнать с какого процесса запущена библиотека (dll)?
     
    Добавлено:
    И как прервать работу WaitForSingleObject и завершить все запущенные им процессы?

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 15:17 20-05-2011
    delover

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    R3Pa4eK
    JCL папка bin файл ToolHelpViewer исходники рядом.

    Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 20:31 20-05-2011
    DeZepTup

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    R3Pa4eK
    http://lmgtfy.com/?q=%D0%BA%D0%B0%D0%BA+%D0%BF%D1%80%D0%B5%D1%80%D0%B2%D0%B0%D1%82%D1%8C+%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%83+WaitForSingleObject+%D0%B7%D0%B0%D0%B2%D0%B5%D1%80%D1%88%D0%B8%D1%82%D1%8C+%D0%B7%D0%B0%D0%BF%D1%83%D1%89%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5+%D0%B8%D0%BC+%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D1%8B

    Всего записей: 4 | Зарегистр. 14-09-2007 | Отправлено: 01:53 21-05-2011
    ZBEP



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте!
    Есть Access база с 1 таблицей и двумя полями.
    Необходимо с помощью SQL заполнить все пустые ячейки символом "-"
    Сам запрос в Access работает:

    Код:
    UPDATE Таблица SET Поле1= "-" WHERE ISNULL(Поле1)

    А делфи ругается:

    Цитата:
    Текущий поставщик не поддерживает возврат нескольких наборов записей в результате выполнения одной операции.

     
    Подскажите как реализовать это на делфи?
     
    П.с.
    С ADOCommand все заработало.

    Всего записей: 186 | Зарегистр. 09-04-2009 | Отправлено: 19:09 23-05-2011 | Исправлено: ZBEP, 19:19 23-05-2011
    R3Pa4eK



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Как закрыть процесс, начатый в CreateProcess? Например, при нажатии на определенную кнопку, из моей библиотеки должна вызываться функция, которая закроет все процессы, запущенные в CreateProcess. Но она почему-то не хочет работать. В чем моя ошибка?
    Код моей библиотеки

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 19:28 23-05-2011
    volser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    R3Pa4eK
    Не надоело? Может пора мозг включать?





    Без грубостей пожалуйста.

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 22:31 23-05-2011 | Исправлено: ShIvADeSt, 11:56 24-05-2011
    XCV81



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    я новичек в delphi, поэтому прошу строго не судить за "элементарный" вопрос, хочу реализовать следующее:
    Есть ini файл в нем секция [Options] (из нее параметры я успешно считал), и кроме этой секции возможно наличие одной и более секций [Edit1], [Edit2] и т.д. в каждой секции 2 параметра "name" и "comand".
    Как сделать чтобы программа проверяла наличие таких секций и при обнаружении оных создавала в форме кнопку с соответствующим именем и командой?
    ЗЫ: Использую Delphi 2 (не знаю почему но он мне больше понравился) сабж брал тут: http://forum.ru-board.com/topic.cgi?forum=35&topic=45160&start=380 , может подскажет кто где взять нормальный установщик, а то там портабельная версия и она у меня все время вылетает с ошибкой после запуска проекта. И еще, в поисках решения вышеописанной задачи попытался использовать "SectionExists" для определения существования секции, на что получил ответ "Undeclared identifer ", uses:  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,  StdCtrls, Buttons, inifiles; Я чего-то забыл подключить? или 2 delphi не знает такого?

    Всего записей: 432 | Зарегистр. 03-10-2007 | Отправлено: 10:42 24-05-2011 | Исправлено: XCV81, 11:08 24-05-2011
    ShIvADeSt



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

    Цитата:
    я новичек в delphi, поэтому прошу строго не судить за "элементарный" вопрос

    Это  

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

    Не элементарный вопрос. Если еще создать кнопку не сильно сложно  
    MyButton := TButton.Create(Form1) // как то так
    то дальше придется основные параметры задавать ручками, а команду присваивать исходя из инишки - это куча условий.
    Поэтому лучше вначале разобраться с более простыми вещами, а потом плавно перейти к рантайм создаваемым компонентам.  
    Вместо Дельфи 2 советую использовать как минимум Дельфи 3 (по крайней мере на ней гораздо больше работает из хелпа, чем на Д2).
    И еще - не видно как ты пытаешься вызвать SectionExists, поэтому трудно что то конкретное сказать

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

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 11:56 24-05-2011
    XCV81



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

    Цитата:
    не видно как ты пытаешься вызвать SectionExists

     
    if IniFile.SectionExists('Edit1') then
        ShowMessage('Раздел присутствует')
    end;
     
    если раздел найден то показываем соответствующее сообщение

    Всего записей: 432 | Зарегистр. 03-10-2007 | Отправлено: 14:26 24-05-2011
    Открыть новую тему     Написать ответ в эту тему

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