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

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

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

    Цитата:
    сперва происходит как правило "проверка выпадания окна"
    Потому, что как раз в ее потоке Sleep-а нету.

    Цитата:
    выпадает окно и всё тишина никаких других процессов не происходит
    Скорее всего поток сканирования окон замораживается из-за обращения к VCL, которая, в свою очередь, заморожена из-за Sleep-а в основном потоке.

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

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет всем.
    Помогите с утилиткой, кот сможет в дампе файла BIOS найти заданную текстовую строку и  адрес первго после строки файла скинуть в ини-файл. Буду премного благодарен тем кто откликнится или направит на путь истиный, куда обратиться.

    ----------
    Хорошего вам настроения!(с)

    Всего записей: 11533 | Зарегистр. 30-04-2006 | Отправлено: 15:15 23-09-2012 | Исправлено: shok, 15:17 23-09-2012
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    shok
    Для каждого типа биосов существуют утилиты, способные его распаковать и как-нибудь отредактировать. А найти заданную строку в распакованном файле можно любым hex-редактором.

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Поздравляю программистов с неофициальным выходом Win8 и с новыми проблемами.  
    Решил проверить работу своей программы на Win8, которая замечательно работала на всех версиях ОС начиная с 2000, а здесь не захотела.  
    Проблема заключается в следующем.  
    Делаю системный хук в библиотеке и в зависимости от ситуации передаю данные через PostMessage в программу. Вот эти PostMessage и не доходят/отсылаются.  
    При этом, если я посылаю сообщение программе из библиотеки, например:  
     
    procedure SetHook; stdcall;  
    begin  
      hHookCallWindowProc := SetWindowsHookEx(WH_CALLWNDPROC, @CallWndProc, hInstance, GetWindowThreadProcessId(hWnd, nil));  
      OldWindowProc := TFNWndProc(SetWindowLong(hkWnd, GWL_WNDPROC, LongInt(Addr(NewWindowProc))));  
      OldNotifyWindowProc := TFNWndProc(SetWindowLong(hNotifyWnd, GWL_WNDPROC, LongInt(Addr(NewNotifyWindowProc))));  
      PostMessage(WndОкнаПрограммы, Сообщение, Параметр1, Параметр2);  
    end;  
     
    то сообщения доходят, но если я это делаю из перехваченной функции:  
     
    function NewWindowProc(h_Wnd: HWND; Msg: UINT; wp: WPARAM; lp: LPARAM): LRESULT; stdcall;  
    begin  
      Result := 0;  
      case Msg of  
       WM_MOUSEMOVE: begin  
                      PostMessage(WndОкнаПрограммы, Сообщение, Параметр1, Параметр2);  
                      Exit;  
                     end;  
      end;  
      Result := CallWindowProc(OldWindowProc, h_Wnd, Msg, wp, lp);  
    end;  
     
    то сообщения не доходят/отсылаются.  
     
    Устанавливал режимы совместимости, права администратора, включал-отключал Контроль Учётных Записей, добавил в манифест строку поддержки Win8 - результата никакого.  
     
    Вопрос  
    1. Как ещё можно заменить PostMessage (SendMessage к стати то-же не работает) чтобы действовало по подобному типу.  
    2. Может можно как-то "выйти" из-под перехваченной процедуры и там послать сообщение (пописать промежуточную функцию, вставить её вместо PostMessage и из этой функции послать сообщение - не работает).  
    3. Какие-нибудь умные мысли, советы чтобы всё это заработало.  
     
    Здесь  
    http://rghost.ru/40562934  
    пример подобной программы (не мой) которая делает похожее. Откомпилировано на XE3. Эта программа даже не загружает библиотеку. А если загрузит (один раз из 20 запусков), то управление при помощи PostMessage также не возможно.  
     
    Спасибо.

    Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 12:13 27-09-2012
    alex1334

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста где ошибка
    На форме установил ColorDialog.
    оператор      i:=form1.ColorDialog1.CustomColors.Count; возвращает 0
    и поэтому    for i:=0 to 15 do
                      CustomColors.ValueFromIndex[i]
    вызывает ошибку
     Ни как у меня не получается задать эти 16 предустановленых цветов при открытии диалога.

    Всего записей: 148 | Зарегистр. 10-10-2010 | Отправлено: 23:32 24-10-2012
    ant0ni02004

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

    Код:
    for i:=0 to form1.ColorDialog1.CustomColors.Count-1 do  

    а во вторых - заполнять их как-то вначале, а потом уже обращаться к ним

    Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 01:28 25-10-2012
    alex1334

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ant0ni02004
     Спасибо за помощь.  
       Честно говоря я думал что при создании объекта строки как то инициализируются

    Всего записей: 148 | Зарегистр. 10-10-2010 | Отправлено: 18:51 25-10-2012
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alex1334
    инициализируются...
    нулями в лучшем случае...

    Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 19:02 25-10-2012
    ant0ni02004

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

    Цитата:
    инициализируются...  

    alex1334

    Цитата:
    строки как то инициализируются

    так если бы инициализировались - было бы Count>0

    Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 00:06 26-10-2012
    akaGM

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

    Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 01:00 26-10-2012
    alex1334

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите еще немного
     
    implementation
    var vT1:TcolorDialog=nil;
     
    procedure TForm1.FormActivate(Sender: TObject);
    begin
    vT1.Create(self); При выполнении этого оператора возникает исключение EAccessViolation

    Всего записей: 148 | Зарегистр. 10-10-2010 | Отправлено: 01:24 26-10-2012
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    попробуй так:
     
    vT1 := TColorDialog.Create(self);

    Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 01:34 26-10-2012
    salexn1



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alex1334
     
    vT1 - это объект (если быть точным - указатель на объект)
    TcolorDialog - это класс
     
    для создания объекта нужно создать экземпляр класса, т.е. не vT1.Create, а TSomeClasss.Create()

    Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 13:16 26-10-2012
    Ichigo2



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кто помнит срытую настройку в Делфи, которая автоматически подставляет параметры в процедуру по CNTRL+SPACE?
    Т.е. пишешь процедуру, скажем MyProc, жмеш сонтрол+пробел и делфи делает так MyProc(var1,var2,var4) а не MyProc().
    В интеренте было, вспомнить блин не могу

    Всего записей: 153 | Зарегистр. 01-05-2011 | Отправлено: 18:57 26-10-2012
    alex1334

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

    Всего записей: 148 | Зарегистр. 10-10-2010 | Отправлено: 21:56 26-10-2012
    exteris

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

    Всего записей: 382 | Зарегистр. 14-04-2003 | Отправлено: 12:54 27-10-2012
    alex1334

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите возможно ли как то настроить функцию format() чтобы выводимое число дополнялось слева нулями до нужной длинны
     пробовал format('%8x',[p1]);но получается если размер меньше 8 символов то слева дополняются пробелы
     Или быть может существует другая функция преобразования числа в строку но обязательно надо чтобы строка выводилась в HEX формате (то есть были бы числа A..F) и выводимая строка всегда была бы с фиксированным значением HEX-чисел без пробелов

    Всего записей: 148 | Зарегистр. 10-10-2010 | Отправлено: 19:23 28-10-2012
    apnss

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

    Всего записей: 708 | Зарегистр. 26-02-2002 | Отправлено: 20:04 28-10-2012 | Исправлено: apnss, 20:05 28-10-2012
    A_V

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

    Всего записей: 770 | Зарегистр. 07-04-2002 | Отправлено: 20:46 28-10-2012
    alex1334

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    A_V
    Пробовал ставить 8 с точкой и без точки. Если число меньше то формат дополняет слева пробелы до заданного размера. А нужно нули. Так как если в строке есть пробелы то обратное преобразование строки в число вызывает исключение например вот с таким сообщением
                         error... '$   FF005'
    Может у меня что в глобальных настройках провайдера формата не так установлено
    Вроде есть также функция позволяющая удалять пробелы из строки
        Хочу также добавить что $ это я сам приписываю во время вызова StrToInt() так как эта функция вообще не понимает чисел A..F

    Всего записей: 148 | Зарегистр. 10-10-2010 | Отправлено: 00:19 31-10-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