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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2012, 22:20   #1
ForuGAM
Пользователь
 
Регистрация: 12.06.2012
Сообщений: 10
По умолчанию Подключение компонента в модуль

Приветствую, друзья! суть проблемы такая: Мне нужно чтобы данный код запускался без формы то есть в unit'е .

Код:
unit Unit2;
 
 
interface
procedure icq;
 
implementation
procedure icq;
begin
ICQClient1.UIN:='UIN';
ICQClient1.Password:='Password';
ICQClient1.Login();
 
end;
 
end.
Данный код запускается только с компонентом "ICQClient1".
Как мне подключить этот компонент к Unit?
И запустить это все дело без формы.
Работаю в 7 делфи.

Описание программы: По заданному icq номеру подключиться к серверу. Без формы.

Пример рабочего кода с формой:
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   xpman,  ICQClient;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    ICQClient1: TICQClient;
    procedure Button1Click(Sender: TObject);
 
    procedure FormClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 
ICQClient1.UIN:=strtoint(edit1.Text);
 ICQClient1.Password:=edit2.Text;
ICQClient1.Login();
end;
end;
Сам компонент.
Вложения
Тип файла: zip ticqclient_v1_34_1.zip (276.3 Кб, 20 просмотров)
ForuGAM вне форума Ответить с цитированием
Старый 12.06.2012, 23:06   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Чтобы код запускался, ему как-то нужно передать управление. Например, в блоке инициализации.

Чтобы подключить другой модуль (не важно, к программе или к юниту) его надо прописать в строке uses.
s-andriano вне форума Ответить с цитированием
Старый 12.06.2012, 23:18   #3
ForuGAM
Пользователь
 
Регистрация: 12.06.2012
Сообщений: 10
По умолчанию

Так запустился

Код:
unit Unit1;

interface
uses   Windows, ICQClient;


var
ICQClient1: TICQClient;
procedure icq;
implementation
procedure icq;
begin

 ICQClient1.Password:='';
ICQClient1.Login();

end;
end.
А вот так если добавить строку ICQClient1.UIN:=''; То ошибка Incompatible types: 'Cardinal' and 'String' Как исправить?
Код:
unit Unit1;

interface
uses   Windows, ICQClient;


var
ICQClient1: TICQClient;
procedure icq;
implementation
procedure icq;
begin
ICQClient1.UIN:='';
 ICQClient1.Password:='';
ICQClient1.Login();

end;
end.
ForuGAM вне форума Ответить с цитированием
Старый 12.06.2012, 23:34   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...чтобы данный компонент работал без формы в фоновом режиме, создайте класс, назначьте обработчики нужных методов, повесьте обработчик сообщений на AllocateHWnd() и вуа-ля.

Экзаменационный автобот или ICQ автоинформатор
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 12.06.2012, 23:42   #5
ForuGAM
Пользователь
 
Регистрация: 12.06.2012
Сообщений: 10
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
...чтобы данный компонент работал без формы в фоновом режиме, создайте класс, назначьте обработчики нужных методов, повесьте обработчик сообщений на AllocateHWnd() и вуа-ля.

Экзаменационный автобот или ICQ автоинформатор
Спасибо за совет.
Буду пробовать)

Последний раз редактировалось ForuGAM; 12.06.2012 в 23:49.
ForuGAM вне форума Ответить с цитированием
Старый 13.06.2012, 00:47   #6
ForuGAM
Пользователь
 
Регистрация: 12.06.2012
Сообщений: 10
По умолчанию

Компилируется.
Если в class не добавлено procedure Login(Sender: TObject);
Когда добавляю ругается.
Unsatisfied forward or external declaration: 'ICQClient.Login'
Какую процедуру использовать для запуска?

Код:
unit Unit1;

interface
uses   Windows, ICQClient, SysUtils;
 type
  icqsock=class
    ICQClient1:TICQClient;
  public

  end;

var
ICQClient1: TICQClient;
procedure Login(Sender: TObject);
implementation
procedure Login(Sender: TObject);
begin
  ICQClient1.ConvertToPlaintext := True;  
  ICQClient1.ICQServer := 'login.icq.com';        
  ICQClient1.ICQPort := 5190;                     
  ICQClient1.Password := 'uin';       
  ICQClient1.UIN := StrToInt('password');       
  ICQClient1.Login;

end;
end.
Если делать так
Код:
unit Unit1;

interface
uses   Windows, ICQClient, SysUtils;
 type
  ICQClient=class
    ICQClient1:TICQClient;
    procedure ICQClient.ConnectionFailed(Sender: TObject);
  public

  end;

var
ICQClient1: TICQClient;
    procedure ICQClient.ConnectionFailed(Sender: TObject);
implementation

    procedure ICQClient.ConnectionFailed(Sender: TObject);
begin
  ICQClient1.ConvertToPlaintext := True;          
  ICQClient1.ICQServer := 'login.icq.com';       
  ICQClient1.ICQPort := 5190;                     
  ICQClient1.Password := 'pass';       
  ICQClient1.UIN := StrToInt('uin');      
  ICQClient1.Login;

end;
То ошибка Undeclared identifier: ICQClient

Последний раз редактировалось ForuGAM; 13.06.2012 в 01:05.
ForuGAM вне форума Ответить с цитированием
Старый 13.06.2012, 06:26   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Код:
type
  icqsock=class
    ICQClient1:TICQClient;
    procedure MessageRecv(Sender: TObject; Msg, UIN: String);
    procedure ConnectionFailed(Sender: TObject);
    procedure AddedYou(Sender: TObject; UIN: String);
    procedure Error(Sender: TObject; ErrorType: TErrorType; ErrorMsg: String);
    procedure Login(Sender: TObject);
    procedure LogOff(Sender: TObject);
  public
    constructor Create;
    destructor Destroy; override;
    procedure WndProc(var Msg:TMessage);
  end;

var
  Msg: tmsg;
  ICQClient1: TICQClient;
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 13.06.2012, 17:37   #8
ForuGAM
Пользователь
 
Регистрация: 12.06.2012
Сообщений: 10
По умолчанию

Спасибо raxp.
Но я смотрел этот код, я не могу его скомпилировать, в первою очередь ругает на procedure WndProc(var Msg:TMessage);

Ладно спасибо. Оставлю эту затею на потом.
ForuGAM вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Модуль Graph или графический модуль Seferus Паскаль, Turbo Pascal, PascalABC.NET 0 11.12.2011 13:15
Использование компонента idUdpClient без компонента TForm. Riply Компоненты Delphi 2 18.02.2011 21:21
Типизированные файлы, модуль Crt, Модуль Graph Kate_Fleur Помощь студентам 1 06.05.2010 17:43
Подключение нового компонента Makarov Компоненты Delphi 10 18.01.2008 18:01