Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2012, 02:09   #1
harimambura
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 45
По умолчанию VCL приложение без формы

сабж: как заставить программу работать без форм?
собственно делаю сервачок, но не хочу париться с консольным приложением, использую сокеты. так вот из за формы ехешник только с голой формой и компонентом на нем уже переваливает за 700кб, а мне это ооочень не нравится. форму с юнитом удалил через remove from project, но теперь незнаю, как сделать обработку процедур во втором юните, ибо программа запускается и сразу завершается (смотрел через отладчик).
з.ы. Если что, пишу в RAD Studio XE
при наличии претензий перейдите сюда

Последний раз редактировалось harimambura; 10.02.2012 в 09:10.
harimambura вне форума Ответить с цитированием
Старый 10.02.2012, 10:55   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...пример:
Код:
//------------------------------------------
// Flash USB
// Модуль определения буквы и подключения USB
// Author: Бадло Сергей Григорьевич
// H-page: http://raxp.radioliga.com
// Cистемные требования: win32
//------------------------------------------

program flash;

uses Messages,Classes, Windows;


type

 PDevBroadcastHdr = ^TDevBroadcastHdr;
 TDevBroadcastHdr = packed record
 dbcd_size: DWORD;
 dbcd_devicetype: DWORD;
 dbcd_reserved: DWORD;
end;

 PDevBroadcastVolume = ^TDevBroadcastVolume;
 TDevBroadcastVolume = packed record
 dbcv_size: DWORD;
 dbcv_devicetype: DWORD;
 dbcv_reserved: DWORD;
 dbcv_unitmask: DWORD;
 dbcv_flags: Word;
end;

 TF = class
 protected
  FWnd: HWnd;
  constructor Create;
  destructor Destroy;
  procedure WndProcc(var Msg:TMessage); message WM_DeviceChange;
end;


const
DBT_DeviceArrival = $8000;
DBT_DeviceRemoveComplete = $8004;
DBTF_Media = $0001;
DBT_DevTyp_Volume = $0002;

var
  FWnd: HWnd;
  t: tf;
  Msg: tmsg;

// СКЕЛЕТ =====================================================================
function GetDrive(pDBVol: PDevBroadcastVolume): string;
var i: Byte;
    Maske: DWORD;
begin
 Maske := pDBVol^.dbcv_unitmask;
 for i := 0 to 25 do begin
  if (Maske and 1) = 1 then
   Result := Char(i + Ord('A')) + ':';
  Maske := Maske shr 1;
 end
end;

constructor TF.Create;
begin
 inherited Create;
 FWnd:= AllocateHWnd(WndProcc);
end;
destructor TF.Destroy;
begin
 inherited Create;
 deAllocateHWnd(fWnd)
end;

procedure tf.WndProcc(var Msg:TMessage);
begin
 if Msg.wparam = DBT_DEVICEARRIVAL then
  if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = DBT_DevTyp_Volume then
   messagebox(fwnd,pchar(GetDrive(PDevBroadcastVolume(Msg. lParam))),'',0)
end;




begin
 t:= tf.Create;

 try while GetMessage(Msg, 0, 0, 0) do begin
  TranslateMessage(Msg);
  DispatchMessage(Msg)
 end finally t.destroy end
// END СКЕЛЕТ =================================================================

end.
Также сервисом можете оформить.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 10.02.2012, 18:01   #3
harimambura
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 45
По умолчанию

пардон, но тема в разделе "C/C++" и код делфи мне ни о чём не скажет вобщем то
с сервисами не знаком

поясняю подробнее: при инициализации приложения проходят только строки в project1.cpp application->inicialize, application->run и сразу же переходит на закрытие, тобишь Unit1.cpp не затрагивает и естественно функции в нем не выполняет. вот мне конкретно надо заставить приложение перейти на обработку кода из Unit1. и чтоб приложение естественно не завершалось по прохождении всех функций)
при наличии претензий перейдите сюда

Последний раз редактировалось harimambura; 10.02.2012 в 18:07.
harimambura вне форума Ответить с цитированием
Старый 10.02.2012, 20:34   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...синтаксис лишь Delphi, а так WinAPI (лишнее в коде убрать) . Что именно не ясно в бесконечном обработчике сообщений?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 11.02.2012, 10:43   #5
harimambura
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 45
По умолчанию

не заметил) но всё равно немного не понимаю..
если можно, то лучше скажите просто по русски последовательность действий, код составлю сам) и насчёт обработки Unit'а: так и не понял как его заставить работать. или вы предлагаете не создавая проекта, компилить просто Unit с подключённым VCL?
при наличии претензий перейдите сюда
harimambura вне форума Ответить с цитированием
Старый 17.02.2012, 22:46   #6
harimambura
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 45
По умолчанию

всё ещё актуально
при наличии претензий перейдите сюда
harimambura вне форума Ответить с цитированием
Старый 26.08.2012, 20:50   #7
crossmark
Пользователь
 
Регистрация: 13.03.2010
Сообщений: 27
По умолчанию

просто бесконечный цикл нужен
crossmark вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VCL формы autopilot75 Помощь студентам 3 05.04.2011 03:32
работа с БД без vcl компонент Jager-ntr БД в Delphi 1 17.05.2008 21:20
приложение без формы, событие при завершении ERASERROR Общие вопросы Delphi 10 22.02.2008 14:10
Рисование фигур в Delphi7 без использования VCL saintninja Помощь студентам 15 20.10.2007 11:04
Приложение без формы Wiggle Общие вопросы Delphi 12 18.04.2007 20:20