Вопрос № 40949: Подскажите, как сформировать сочетания. Например, для 4 имеем следующее:
1 2 3 4
1 3 4
1 2 3
1 2 4
1 2
1 3
1 4
1
Главное чтобы в каждом из них присутствовала 1.
...Вопрос № 40989: Как сделать чтобы Timer1 обрабатывал не только перемещение "мыши", но и нажатие на кнопку "мыши"?
Короче, я сделал проц. MoveMouse(O:TObject);
В ней обрабатываются координаты - всё OK.
Теперь мне нужно сделать обработ...Вопрос № 40991: Приветствую!!!
Уважаемые эксперты, нужна помощь по следующему вопросу.
Я написал программку которая сжимает файл используя zlib. Но как сделать, чтобы получался самоизвлекающийся архив (как например может делать winrar). Я понимаю так, что ну...Вопрос № 41017: Здравствуйте, вы не могля бы мне помочь?
Мне нужно отправить почту с помощью моей программы. Как мне это лучше сделать? ( я просто не очень разбираюсь в протоколах, для меня что SMTP что POP3 разницы нет). ...
Вопрос № 40.949
Подскажите, как сформировать сочетания. Например, для 4 имеем следующее:
1 2 3 4
1 3 4
1 2 3
1 2 4
1 2
1 3
1 4
1
Отвечает: Евгения
Здравствуйте, Иванов Михаил Викторович!
Привожу программу на Паскале ниже - написана конечно через н-ное место - но делает то,ч то вам надо :) под себя преобразуете.
Приложение:
--------- Я не волшебник, я только учусь... А разве кто-то обещал, что будет легко?
Ответ отправила: Евгения (статус: 4-ый класс)
Ответ отправлен: 22.04.2006, 00:11
Отвечает: Полховский Александр Владимирович
Здравствуйте, Иванов Михаил Викторович!
Попытаюсь объяснить в общих чертах (без кода, ибо Вам его пример уже предоставили).
Нужно в цикле for k1:=2 to N сформировать все возможные комбинации, имеющие k1 разряд. Делается это очень просто: фактически, мы имеем число в k1-той системе счисления. То есть, чтобы подобрать все варианты, достаточно перебирать цифры в первом разряде, изменяя их в других разрядах, если цифра дошла до максимального значения. Естественно, необходимо сделать проверку на совпадение цифр в разных разрядах. ну и Ваше условие с единицей туда воткнуть. Нет единицы - пропускаем число. Для формирования числа я бы пользовался
типом string. Или же переводил число (очередное) в string и там обрабатывал условия.
Хотелось бы верить, что для решения задачи этого хватит.
--------- Спасём нашу хрупкую планету !
Как сделать чтобы Timer1 обрабатывал не только перемещение "мыши", но и нажатие на кнопку "мыши"?
Короче, я сделал проц. MoveMouse(O:TObject);
В ней обрабатываются координаты - всё OK.
Теперь мне нужно сделать обработку на нажатие кнопок "мыши".
Я сделал сначала это через в событиях Image1.OnMouseDown
procedure ClickMouse(O:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);
Она конечно, реагирует на нажатие но не в ДИНАМИКЕ, а только при "Click'e".
Короче, нужно как-то "объединить" эти две процедуры в одну и поставить в обработку Timer1.
Я не могу поставить проц. ClickMouse на обработку в Timer1 - она попросту не ставиться.
В итоге я хочу перещать объект по Image1 мышкой (левая кнопка).
Само перемещение я уже сделал (относительно нач. координаты "мыши" и текущей), но оно реагирует только в "конце", когда нажимаешь кнопку еще раз.
Это естественно, потому что опрос "мыши" идёт не динамически, а только при "Click'e".
Как видите, я быстро учусь. Мне главное примеры несложные увидеть, а дальше я уже сам доведу.
(Медленно запрягаю - быстро еду)
Алекс
Отправлен: 22.04.2006, 00:43
Вопрос задал: AlexD (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: Дмитриев Алексей Иванович
Здравствуйте, AlexD!
А почему бы Вам не использывать событие OnMouseMove, вместо OnTimer?
Таким образом снижается и процессорное время, иснользуемое программой.
В приложении привожу что-то вроде кода программы.
Отвечает: Полховский Александр Владимирович
Здравствуйте, AlexD!
Рискну предложить метод Drag'n'Drop.
Вот простой пример (подробнее в справке можно узнать).
var
Form1: TForm1;
dx, dy: integer;
pressed1: boolean;
implementation
{$R *.dfm}
procedure TForm1.Button1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
accept:=true;
Button1.Left:=screentoclient(mouse.CursorPos).X-dx;
Button1.Top:=screentoclient(mouse.CursorPos).Y-dy;
end;
procedure TForm1.Button1StartDrag(Sender: TObject;
var DragObject: TDragObject);
begin
dx:=screentoclient(mouse.CursorPos).x-button1.Left;
dy:=screentoclient(mouse.CursorPos).y-button1.Top;
end;
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if pressed1
then Button1.BeginDrag(true);
end;
Приветствую!!!
Уважаемые эксперты, нужна помощь по следующему вопросу.
Я написал программку которая сжимает файл используя zlib. Но как сделать, чтобы получался самоизвлекающийся архив (как например может делать winrar). Я понимаю так, что нужно написать отдельный модуль, который производит декомпрессию файла и как-то прицепить его к получившемуся архиву. Или я неправ?
Отправлен: 22.04.2006, 01:09
Вопрос задал: Stan (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Лучников Ю.В.
Здравствуйте, Stan!
Почитайте на CodeNet ветку форума "SFX-архив в Delphi. Методы создания". Там же вы сможете найти рабочий пример обсуждаемого.
Если какие-либо моменты нужно будет уточнить - пишите в мини-форум, поможем;)
Успехов!
Ответ отправил: Лучников Ю.В. (статус: *Мастер-Эксперт) Россия, Киров WWW:нЧат - Наш Чат! ICQ: 176308580 ---- Ответ отправлен: 22.04.2006, 01:41
Вопрос № 41.017
Здравствуйте, вы не могля бы мне помочь?
Мне нужно отправить почту с помощью моей программы. Как мне это лучше сделать? ( я просто не очень разбираюсь в протоколах, для меня что SMTP что POP3 разницы нет).
Отправлен: 22.04.2006, 15:30
Вопрос задал: Toxic~Fire (статус: 2-ой класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: mvp
Здравствуйте, Toxic~Fire!
Не помню, с какого сайта брал, но честно признаюсь, что не моё.
Консольное приложение, которое отправляет простое письмо. Если вы знакомы с Delphi, то не составит труда оформить это в виде функции.
Прада ошибки связи и т. п. придётся ловить самому
Приложение:
--------- Моя совесть чиста - не бывшая в употреблении
Ответ отправил: mvp (статус: 10-ый класс)
Ответ отправлен: 22.04.2006, 16:15
Отвечает: Diman_A
Здравствуйте, Toxic~Fire!
Возможны следующие варианты:
- Вызвать почтовую программу по умолчанию с заполненными полями
- Использовать MAPI
- Использовать SMTP
- Использовать COM интерфейс Outlook
Автозаполнение формы письма в почтовой программе установленной по умолчанию:
uses shellapi;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
shellexecute(handle,
'Open',
'mailto:necto@ya.com?subject=Regarding your advice&Body=First%20Line%0D%0ASecond%20line&CC=vnecto@server.com',
nil, nil, sw_restore);
end;
Пробелы в тексте надо заполнять сочетанием %20
Конец строки обозначать как %0D%0A
Поля отделять друг от друга символом &
Работа через MAPI
(Пример с delphi.mastak.ru)
unit Email;
interface
uses Windows, SusUtils, Classes;
function SendEmail(const RecipName, RecipAddress, Subject, Attachment: string): Boolean;
function IsOnline: Boolean;
implementation
uses Mapi;
function SendEmail(const RecipName, RecipAddress, Subject, Attachment: string): Boolean;
var
MapiMessage: TMapiMessage;
MapiFileDesc: TMapiFileDesc;
MapiRecipDesc: TMapiRecipDesc;
i: integer;
s: string;
begin
with MapiRecipDesc do begin
ulRecerved:= 0;
ulRecipClass:= MAPI_TO;
lpszName:= PChar(RecipName);
lpszAddress:= PChar(RecipAddress);
ulEIDSize:= 0;
lpEntryID:= nil;
end;
with MapiFileDesc do begin
ulReserved:= 0;
flFlags:= 0;
nPosition:= 0;
lpszPathName:= PChar(Attachment);
lpszFileName:= nil;
lpFileType:= nil;
end;
with MapiMessage do begin
ulReserved := 0;
lpszSubject := nil;
lpszNoteText := PChar(Subject);
lpszMessageType := nil;
lpszDateReceived := nil;
lpszConversationID := nil;
flFlags := 0;
lpOriginator := nil;
nRecipCount := 1;
lpRecips := @MapiRecipDesc;
if length(Attachment) > 0 then begin
nFileCount:= 1;
lpFiles := @MapiFileDesc;
end else begin
nFileCount:= 0;
lpFiles:= nil;
end;
end;
Result:= MapiSendMail(0, 0, MapiMessage, MAPI_DIALOG
or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0) = SUCCESS_SUCCESS;
end;
function IsOnline: Boolean;
var
RASConn: TRASConn;
dwSize,dwCount: DWORD;
begin
RASConns.dwSize:= SizeOf(TRASConn);
dwSize:= SizeOf(RASConns);
Res:=RASEnumConnectionsA(@RASConns, @dwSize, @dwCount);
Result:= (Res = 0) and (dwCount > 0);
end;
end.
Пример отправки письма используя COM объект Outlook
uses Outlook_TLB;
var outlook : _application;
Procedure Init;begin outlook := Coapplication_.Create;
end;
procedure SendEmail;begin with Outlook.CreateItem(olMailItem) as mailitem do
begin
To_ := 'email@email.com';
cc:='email2@email.com';
Subject := 'This is subject line'; Attachments.Add('FileName',1,1,'This is attachment');
Body :='This is email body';
Send;
end;
end;
Пример работы с SMTP и исходник формы к нему смотри в приложении.
Приложение:
Ответ отправил: Diman_A (статус: 9-ый класс)
Ответ отправлен: 22.04.2006, 17:27