Delphi консультации (бесплатно)

  • Автор теми Автор теми crghome
  • Дата створення Дата створення
Почему у Java 675, нужно смотреть по коду производимому JIT компилятором.
Кстати, если пример на C# скомпилить с оптимизацией, то будет 0 мс, JIT гад оптимизирует даже если вставить в функцию код изменяющий статик переменную и печатать эту переменную после цикла. В этом случае вместо цикла JIT просто тупо подставляет загрузку в регистр готового результата который должен получиться после работы цикла, и весь цикл превращается в один опкод загружающий в регистр готовый результат :D
Пометь статическую переменную как volatile, тогда C# и C++ компиляторы будут честно ее инкрементить. Только я не уверен, что в делфях есть аналог volatile.

Для дров нормальные люди юзают продукцию jungo, которая имеет фронт энд и к делфи
Зачем иметь себе мозг, если можно сделать проще?

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



Я это понимаю. Есть OCX компонент на форме, форма разрушается - что делается с OCX? Он остается висеть в памяти. .NET создает это объект при создании формы, но не уничтожает.

Проблема со сборкой в том, что она запускается когда мне нежелательно. Пока только первые наметки, когда все нормально просмотрю распишу подробно.
Не понято, о чем вообще идет речь? Если о managed памяти, используемой сервером, то она без надобности освобождаться не будет, если о выгрузке самого in-process COM-сервера, то его может выгрузить только клиент, т.е. твоя софтина на Delphy.
А OCX - это расширение файла, и не более того.
 
Останнє редагування:
В delphi есть threadvar, но я не уверен что это полный аналог. Скорее всего нет.
Насчет драйвера подробно не могу. Есть железяка, которая по irq заставляет собирать данные.

По поводу ocx это activex конечно, я уже разобрался



Да, да, да.
сенкс, буду штурмовать эклипс (как только получится его скачать).

Есть надстройка для Delphi Prism - RemObjects Oxygene for Java, которая позволяет писать приложения для Android. Но время действительно лучше потратить на изучение нативного способа разработки. Или хотя бы выбрать приличное решение лоя разработки под несколько мобильных платформ.
 
Останнє редагування:
Прошу подсказать, как в Дельфи во время выполнения программы программно запретить переход в спящий (Sleep) режим
 
Прошу подсказать, как в Дельфи во время выполнения программы программно запретить переход в спящий (Sleep) режим

также как и запретить выдергивать шнур питания из розетки
 
В MSDN
Calling SetThreadExecutionState without ES_CONTINUOUS simply resets the idle timer; to keep the display or system in the working state, the thread must call SetThreadExecutionState periodically.
Вешаешь вызов на таймер и все.
 
если тебе скринсавер выключить то вот:
Код:
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, FALSE, 0, SPIF_SENDWININICHANGE);

а если отключить возможность перевести комп в спящий режим или выключить, то это уже некорректная работа программы. Можешь объяснить зачем это нужно?
 
а если отключить возможность перевести комп в спящий режим или выключить, то это уже некорректная работа программы. Можешь объяснить зачем это нужно?
Идею уловил правильно. Но проблема в кривом драйвере, который глючит при выходе из спящего режима. Драйвер не мой и я никак не могу повлиять на исправление драйвера. Прэтому и было принято решение запретить возникновение проблемной ситуации. Вопрос решен, всем спасибо.
 
глупый вопрос, но никак не могу найти решение, может кто поможет.
имеем stringgrid, в обработчике keypress выполняется проверка. Возникла проблема, при выделении текста в cells этот обработчик видит весь текст, и обрабатывает событие как будто мы добавляем какойто знак.
То есть при этом cells[i,j]='' - false.
В TEdite вышел следующим способом:
length(Text) = selLength, что дает true.
Необходимо чтото в таком духе для проверки в таблице.
 
procedure TFormTest.StringGridTestSetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: string);
begin
if StringGridTest.Cells[ACol,ARow] = ',' then
StringGridTest.Cells[ACol,ARow] := '0,';
end;
 
Подскажите, как из Delphi менять разрешение у второго монитора. Интересует именно у второго дополнительного монитора, по смене у основного проблем нет.
 
Это нужно в MSDN копаться. К Delphi это имеет такое же отношение, как и к C++.
 
Это нужно в MSDN копаться. К Delphi это имеет такое же отношение, как и к C++.

Не согласен.
Вот процедура для смены разрешения основного монитора
procedure ChangeDisplayResolution(x, y: word);
var
dm: TDEVMODE;
begin
ZeroMemory(@dm, sizeof(TDEVMODE));
dm.dmSize := sizeof(TDEVMODE);
dm.dmPelsWidth := x;
dm.dmPelsHeight := y;
dm.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
ChangeDisplaySettings(dm, 0);
end;
Мне надо аналогично для второго.
 
Это тема по Дельфям, если пишите ответ, то и отвечайте в формате Дельфи. Не фокус найти ChangeDisplaySettingsEx, а вот указать нужные параметры...
А станцевать вам в теме не надо? Или вас в гугле забанили?
Делфи работают только с дефолтным монитором.
Если спрашиваете вопрос то потрудитесь хотя бы почитать документацию.
Возможно это может помочь.
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.

Вообще, когда спрашивают вопрос, не выделываются при получении ответа, даже короткого.
 
Это тема по Дельфям, если пишите ответ, то и отвечайте в формате Дельфи. Не фокус найти ChangeDisplaySettingsEx, а вот указать нужные параметры...

Довольно наглый ответ для того, кто просит помощи.

А я еще раз говорю, что это вопрос больше по Windows SDK из MSDN'а, а не по Delphi.

1)
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.

Видим, что среди флагов второго параметра есть CDS_SET_PRIMARY, который делает текущее устройство основным. Значит эта функция может работать с разными мониторами. Хорошо, едем дальше. Смотрим что за зверь тип первого параметра DEVMODE

2)
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.

Видим, что первое поле dmDeviceName - это название девайса. Он же идентификатор. Ищим в секции See also функции, которые имели бы отношение к DEVMODE. Переходим к EnumDisplaySettings

3)
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.

Из описания первого параметра узнаем, что
his parameter is either NULL or a DISPLAY_DEVICE.DeviceName returned from EnumDisplayDevices. A NULL value specifies the current display device on the computer on which the calling thread is running.
Т.е. получить все правильный DEVMODE для второго монитора нужно вызвать EnumDisplaySettings c ENUM_CURRENT_SETTINGS во втором параметре и правильным названием дисплея для второго, которое берется из EnumDisplayDevices. Смотрим что это за зверь

4)
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.

А вот это функция загадка. Пока не совсем понятно какое именно устройство нужно запрашивать для изменения разрешения монитора. Либо это монитор, либо графический адаптер. Иными словами нужно проверять опытным путем.
 
Назад
Зверху Знизу