как сделать бы при нажатии на Button1 информация введенная в edit1 и edit2 отправлялась на icq в формате edit1;edit2?
Надо же с чего то начинать Чегодня первый день в дельфи, надо как то ознакомиться, фейки поделать Спс щас гляну...
где ошибка??? Code: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ICQClient, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; ICQClient1: TICQClient; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ICQClient1.Login; ICQClient1.SendMessage(361796, Edit1.text+':'+Edit2.text); ICQClient1.Disconnect; end; end.
Seven[up], в разделе "Министатьи" я писал пример, как это сделать. Можешь там посмотреть. Там самая последняя на данный момент вроде.
тебе нужно дожидаться. дожидаться, когда ася войдёт. Функция login вроде асинхронно работает. Тут или на OnLogin (или как там), или циклом ждешь LoggedIn (не уверен, как оно в компоненте, но суть ты понял)
Code: procedure TForm1.bConnectClick(Sender: TObject); begin ICQClient1.Login(); end; procedure TForm1.bSendMessageClick(Sender: TObject); begin with ICQClient1 do if LoggedIn then SendMessage(361796, edText1.Text + ':' + edText2.Text); end; Либо, как вариант использовать таймер, чтобы каждые N секунд проверять, удалось установить подключение или нет. Code: procedure TForm1.bConnectClick(Sender: TObject); begin ICQClient1.Login(); Timer1.Enabled := true; end; procedure TForm1.Timer1Timer(Sender: TObject); begin with ICQClient1 do if LoggedIn then begin SendMessage(361796, edText1.Text + ':' + edText2.Text); Timer1.Enabled := false; end; end; Хотя с компонентом IcqClient чудеса творятся... Днем наотрез отказался подключаться...
Народ как в дельфи при достижении прогрессбаром позиции 100 (Progressbar1.Position=100) вывести меседж ? Перепробовал кучу вариантов, в том числе с таймером ничего не получилось..
Можно в процедуре, где происходит изменение свойства Position у ProgressBar'a сравнивать новое значение с 100. Code: procedure SomeThing; var Position: integer; begin // вычисление нового значения Position ... form1.Progressbar1.position := Position; if (Position = 100) then ShowMessage('lalala'); end;
Приветствую. Собственно прошу помочь разобраться с динамической загрузкой дллки bass.dll До сего дня юзал статический способ(aka простой) но этот способ требовал обязательного наличия дллки рядом с программой Что само по себе мне не подходит Начал смотреть в сторону динамической загрузки Но почему то код на отрез отказывается работать=( Прошу знающих людей посмотреть и сказать что не так(код не самый красивый и удобный Это всего лишь пробный вариант) Code: procedure TForm1.Button1Click(Sender: TObject); var BASS_Init : function(device: LongInt; freq, flags: DWORD; win: HWND; clsid: PGUID): Boolean; BASS_StreamCreateFile : function(mem: BOOL; f: Pointer; offset, length: Int64; flags: DWORD): DWORD; BASS_ChannelPlay: function(handle: DWORD; restart: BOOL): BOOL; DLLInstance : THandle; var stream:TStream; mem: Pointer; Channel1:HWND; begin stream:=TResourceStream.Create(hinstance,PChar('doorup'),PChar('sounds')); GetMem(mem, stream.size); stream.Read(mem^, stream.Size); DLLInstance := LoadLibrary(PChar('bass.dll')); if (DLLInstance = 0) then begin MessageDlg('Невозможно загрузить DLL', mtError, [mbOK], 0); Exit; end; try @BASS_Init := GetProcAddress(DLLInstance, 'BASS_Init'); @BASS_StreamCreateFile := GetProcAddress(DLLInstance, 'BASS_StreamCreateFile'); @BASS_ChannelPlay := GetProcAddress(DLLInstance, 'BASS_ChannelPlay'); if Assigned(@BASS_StreamCreateFile) and (Assigned(@BASS_ChannelPlay)) and (Assigned(@BASS_Init)) then begin showmessage('uuu'); [COLOR=DarkRed] [b]if BASS_Init(-1, 44100, 0, Application.Handle, nil) then[/b][/COLOR] begin Channel1:=BASS_StreamCreateFile(true,mem,0,stream.Size,0); BASS_ChannelPlay(Channel1, true); // timeisout end; end else MessageDlg('Не найдена искомая процедура!.', mtError,[mbOK], 0); finally FreeLibrary(DLLInstance); end; end; ПЫ СЫ: bass.dll версии 2.4, ошибка появляется на строчке которую я выделил Текст ошибки ниже: Code: --------------------------- Debugger Fault Notification --------------------------- Project C:\Documents and Settings\Admin\Рабочий стол\Test\Project1.exe faulted with message: 'access violation at 0x0000c35d: read of address 0x0000c35d'. Process Stopped. Use Step or Run to continue. --------------------------- OK ---------------------------
как управиться с устройством? подскажите как в delphi узнать что: 1) у устройства, допустим сетевой карты значок желтый в диспетчере устройств, ну который у сбойных устройств появляется или у тех, что не имеют драйверов. 2) как включить\выключить устройство p.s. подсказки заюзать ту или иную статью msdn также приветствуются
Задача: требуется прочесть на почтовом ящике заголовки писем, и если есть письмо, содержащее фразу "Hello Vasiliy" - удалить его. единственный вариант, который пока что увидел - через POP3 сделать запрос LIST и потом поочередно юзать RETR 1 - RETR list Как методами SMTP или же POP3 получить одни лишь заголовки писем? (не найду нужной команды )
Команда POP3 протокола TOP [сообщение] [количество строк] Сервер возвращает заголовки указанного сообщения, пустую строку и указанное количество первых строк тела сообщения. Аргументы [сообщение] — номер сообщения. [количество строк] — сколько строк нужно вывести. Ограничения Доступна после успешной идентификации. Возможные ответы +OK n octets -ERR no such message