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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 3

Модерирует : ShIvADeSt

ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Chuvakstepan



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SERGE_BLIZNUK
Спасибо!
 
Люди подскажите как сделать приложение в виде dll, чтобы в другом приложении оно запускалось допустим, горячей клавишей

Всего записей: 202 | Зарегистр. 29-01-2007 | Отправлено: 10:38 10-09-2007
SpoinT



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Chuvakstepan
Плагин пиши. В ДЛЛ пихай все что надо, формы и т.п., и через главное окно вызывай.

----------
В жизни мне не хватает 2-х вещей - кнопок Save Game и Load Game...

Всего записей: 840 | Зарегистр. 31-01-2007 | Отправлено: 11:26 10-09-2007
Chuvakstepan



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SpoinT
Информативно
Какой проект создавать в Delphi ? Как открыть dll как исполняемый файл в другой программе (другой проект) желательно через горячую клавишу? Да и как уменьшить можно размер dll (если возможно)

Всего записей: 202 | Зарегистр. 29-01-2007 | Отправлено: 11:36 10-09-2007 | Исправлено: Chuvakstepan, 11:54 10-09-2007
ErshovSP2004



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Господа может ли кто нибудь выложить заведомо рабочий кусок кода в котором строка TreeVeiw отрисовывается вручную (функции CustomDraw и CustomDrawItem).
Если что то Помощь читал.  
Конечная цель реализовать в строке выделение искомого слова, как это сделано в Делфи 7 при поиске "Find in Files".

Всего записей: 208 | Зарегистр. 16-09-2004 | Отправлено: 12:38 10-09-2007
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Chuvakstepan
Другая программа твоя, или например Word?  
Если твоя, то описываешь в ней функции из библиотеки как external (или LoadLibrary, GetProcAddress), и в нужный момент вызываешь.
Если нет, то пишешь свое приложение, которое сделает SetWindowsHook на функцию из твоей библиотеки и повесит ее на обработку сообщений от клавиатуры, а в функции уже можешь смотреть что за клавиша нажата и что-то делать. Подробнее про хуки в MSDN

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 13:11 10-09-2007
Chuvakstepan



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
RomanTim
Программа моя, но можно поподробней как вызвать функцию. и как в самой dll сделать стартом открытие формы
 
Подскажите ещё как сделать два подряд условия:

Код:
  if pos('Есть',Audio2.caption) = 0 then //первое условие
   if Sound3 <> Audio2.Caption then begin //второе условие
    Zvuk.Font.Color:=clRed;
    Next.Enabled:=False;
    Ready.Font.Color:=clRed;
    Ready.Caption:='Ваша система не подходит минимальным требованиям. Вы не можете продолжить установку';
    Ready.Left:=8;

Надо чтобы начиналось второе условие если выполнено первое, если не выполненно то ничего не происходит

Всего записей: 202 | Зарегистр. 29-01-2007 | Отправлено: 13:32 10-09-2007
skinash



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Chuvakstepan
Динамическая и статическая загрузка DLL

Всего записей: 145 | Зарегистр. 21-09-2006 | Отправлено: 13:32 10-09-2007
Chuvakstepan



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
skinash
Спасибо! Попробую разобраться!

Всего записей: 202 | Зарегистр. 29-01-2007 | Отправлено: 13:33 10-09-2007
skinash



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

Код:
if (pos('Есть',Audio2.caption) = 0) and (Sound3 <> Audio2.Caption) then

Учи математику
True and True = True
False and True = False
т.е. если первое условие не проканает, то второе даже рассматриваться не будет - сразу False

Всего записей: 145 | Зарегистр. 21-09-2006 | Отправлено: 13:37 10-09-2007
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую. Все-таки нашел код для скроллинга строки. Но не компилируется, компилятор ругается "left side cannot be assigned to"...
Вот код собственно:

Код:
 
 
program sample;
 
uses
 Windows, Messages;
 
{$R dialog.res} //Подключаем ресурс диалогового окна
 
const
 ID_SCROLLTIMER = 666;
 LengthGoString = 30; //Указываем сколько символов мы будем проказывать за раз
 GoString = 'В конце стpоку желательно повтоpить, ' +
            'чтоб получить эффект кольцевого движения! В конце ст';
 i: Integer = 1;
 
//Функция, обрабатывающая все команды от элементов управления окна
function DlgProc(hWin: HWND; uMsg: UINT; wp: WPARAM; lp: LPARAM): bool; stdcall;
begin
 Result := False;
  case uMsg of
   WM_INITDIALOG:  SetTimer(hWin, ID_SCROLLTIMER, 300, nil);
   WM_TIMER:
    begin
     SendMessage(GetDlgItem(hWin, 201), WM_SETTEXT, 0,
      Integer(PChar(Copy(GoString, i, LengthGoString))));
     Inc(i);
      if Length(GoString)-LengthGoString < i then i := 1;
    end;
   WM_COMMAND:
    case LoWord(wp) of
     //При нажатии на кнопку с идентификатором 1 закрываем программу
     1: EndDialog(hWin, 0);
    end;
   //При нажатии на кнопку "Х" в шапке программы закрываем приложение
   WM_DESTROY, WM_CLOSE:
    begin
     KillTimer(hWin, ID_SCROLLTIMER);
     PostQuitMessage(0);
    end;
 end;
end;
 
begin
 //Открываем диалоговое окно MAIN_WINDOW (достаем окно из ресурсов)
 DialogBox(hInstance, 'MAIN_WINDOW', 0, @DlgProc);
 
end.
 
 

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 19:49 10-09-2007
Arvur



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Maks150988
На какую строку ругается? Компилять лениво
В любом случае у тебя i почему-то в константах - если не выставлен флажок компилятора, будет ругань.

Всего записей: 2111 | Зарегистр. 18-01-2002 | Отправлено: 20:49 10-09-2007
SERGE_BLIZNUK

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

Arvur - Вы правы. действительно в опциях компилятора параметер  
"Assignable type constant" должен быть отчекрыжен!
 
Maks150988
либо в опциях птичку поставьте (либо используейте директиву {$J+}  
либо перенесите I в var - только не забудьте проиницилизировать!
 
 
Добавлено:
Arvur - кстати, уважаю - шаман однако!!!
 

Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 21:09 10-09-2007
Arvur



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SERGE_BLIZNUK
Я?! Ни в жисть
Меня просто так программированию учили - ручка и бумажка, и никакого тебе компа, пока нормальный код писать не научишься  
Читается после этого и вовсе замечтательно.
 
P.S. Кстати, галочка имхо все-таки полезная - с ней можно писать более читаемый код. Но здесь не тот случай, конечно.

Всего записей: 2111 | Зарегистр. 18-01-2002 | Отправлено: 21:33 10-09-2007
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Благодарю. Использовал {$J+}  и все скомпилировалось. Только хотелось бы чтобы строка начинала прокрутку с правого края, а то текс с самого начала и потом резко повторяется. Допустим наподобие проделано в Квик Анпаке. Хотелось бы также намутить.

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 22:18 10-09-2007
ErshovSP2004



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Не сочтите флудом. Сам потер примеры отсюда и вопрос возник.
ErshovSP2004

Цитата:
Господа может ли кто нибудь выложить заведомо рабочий кусок кода в котором строка TreeVeiw отрисовывается вручную (функции CustomDraw и CustomDrawItem).  
Если что то Помощь читал.  
Конечная цель реализовать в строке выделение искомого слова, как это сделано в Делфи 7 при поиске "Find in Files".

Отвечу себе сам цитатой с другого форума

Цитата:
... чувак, юзай исходник готовый. Борландовский  
Путь в правде: C:\Program Files\Borland\Delphi1,2,3,4,5,6,7,8,9 вообще какая у тя\Demos\CustomDraw ...

 
Добавлено:
Увы счастье моё было недолгим. Ну не получается в отдельном Node стандартного TreeView часть текста выделить жирным. К тому же при горизонтальном скролинге даже в примере от борланда лажа при ручной отрисовке (не учитывается смещение текста).
А вот в VirtualTreeview всё получилось. Спасибо разработчику

Всего записей: 208 | Зарегистр. 16-09-2004 | Отправлено: 10:04 11-09-2007 | Исправлено: ErshovSP2004, 11:14 11-09-2007
Grafus



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, плз, посоветуйте функцию определения наличия сервиса на удаленном компьютере.
А именно нужно «наличие» сервиса, «тип запуска» (выкл, авто или вручную) и его статус.
В нете наткнулся тока на это, но этого мало:

Код:
 
function ServiceGetStatus(sMachine, sService: string ): DWord;
var
  h_manager, h_service, h_svc: SC_Handle;
  service_status: TServiceStatus;
  hStat: DWord;
begin
  hStat := 1;
  h_manager := OpenSCManager(PChar(sMachine) ,nil, SC_MANAGER_CONNECT);
  if h_manager > 0 then
  begin
    h_svc := OpenService(h_manager,PChar(sService), SERVICE_QUERY_STATUS);
    if h_svc > 0 then
    begin
      if(QueryServiceStatus(h_svc, service_status)) then
        hStat := service_status.dwCurrentState;
      CloseServiceHandle(h_svc);
    end;
    CloseServiceHandle(h_manager);
  end;
  Result := hStat;
end;
  //Ответы проверки:
  //SERVICE_STOPPED  
  //SERVICE_RUNNING
  //SERVICE_PAUSED
  //SERVICE_START_PENDING
  //SERVICE_STOP_PENDING
  //SERVICE_CONTINUE_PENDING
  //SERVICE_PAUSE_PENDING
 


Всего записей: 389 | Зарегистр. 15-12-2004 | Отправлено: 16:47 11-09-2007
Chuvakstepan



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Народ, а как можно уменьшить размер скомпилированного EXE ?
Типа, настроить что-то в настройках компила, ZIP и UPX не предлагать!

Всего записей: 202 | Зарегистр. 29-01-2007 | Отправлено: 17:09 11-09-2007 | Исправлено: Chuvakstepan, 17:11 11-09-2007
RostY



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASPack... или использовать API вместо VCL
 
Добавлено:
или, если не очень навороченая программа, использовать более раннюю версию Delphi для компиляции, т.к. в большинстве случаев чем старше Delphi, там большие ЕХЕ-шки делает

Всего записей: 387 | Зарегистр. 11-01-2006 | Отправлено: 17:48 11-09-2007
SERGE_BLIZNUK

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Chuvakstepan
можно ещё посмотреть в сторону использования KOL and MCK - но по сути это тот же отказ от VCL - только он облегчён через библиотеку зеркальных классов MCK (Mirror Classes Kit).
Ещё можно почитать тут - KOL и MCK - Компактные программы на Delphi
 
но это если писать с нуля (или полностью переписывать проект). Для готового проекта это не подойдёт!  
 

Цитата:
UPX не предлагать

RostY а чем по сути ASPack от UPX'а отличается?? ;-)))))
 

Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 19:44 11-09-2007 | Исправлено: SERGE_BLIZNUK, 19:48 11-09-2007
A_V

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Grafus
наличие сервиса проверить просто - попробовать его открыть через OpenService, если вернет ERROR_SERVICE_DOES_NOT_EXIST, значит нет такого)
Тип запуска - через QueryServiceConfig, он заполнит структуру, в к-й есть и StartType. подробности в MSDN
Chuvakstepan
"настроить что-то в настройках компила" можно, например поставить галку "build with runtime packages" - exe уменьшится, но тогда на машине должны быть используемые тобой bpl'и.
а вобще, если не паковать exe - то избавляться от тяжелых компонент, если сам VCL считаешь тяжелым - то KOL/MCK, как уже написали

Всего записей: 770 | Зарегистр. 07-04-2002 | Отправлено: 23:36 11-09-2007
   

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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 3
ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru