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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.08.2009, 19:11   #1
Mercurium
Пользователь
 
Регистрация: 14.08.2009
Сообщений: 10
По умолчанию Приоблемы с формами, почтовым клиентом и удаление своей проги

Всем привет!Я решил объеденить несколько вопросов в один (потому что их много),ну и чтобы не создавать лишние темы.
1.У меня есть главная форма и дочерняя.BorderStyle у дочерней равен BsDialog(то есть нет кнопок свернуть-развернуть).А теперь самое главное: как на дочерней форме перепрограммировать эту самую кнопку "Закрыть".Чтобы при её нажатии приложение не закрывалось, а вылазила следующая форма типа "Вы действительно хотите выйти из этого приложения?"Ну чтобы случайно не закрыть это приложение.
2.У меня есть две проги (на этот раз обе мои).Одна делает определённое действие, а вторая должна её удалить после выполнения этого действия. Я так понимаю, что сама себя прога удалить не может, поэтому и пишу две.Может кто-нибудь подскажет как удалить прогу с копма (ну чёто типа деинсталятора).
3.Как сделать главную форму невидимой.Нашёл код к-рый пишется в Проект Менеджере.
Вот код:
Код:
program ProMo1;

uses
  Forms,
  Windows.
  Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}
var
  WhEvent: THandle;

begin
  Application.Initialize;
  ShowWindow(Application.Handle, SW_Hide);
  Form1 := TForm1.Create(nil);
  Application.Run;
  WhEvent := CreateEvent(nil, true, false, 'et');
  while (true) do
  begin
    WaitForSingleObject(WhEvent, 1000);
    Application.ProcessMessages;
  end;
end.
При запуске приложения главную форму действительно невидно.(видно тока в диспетчере задач).Вся проблема в том что у этой формы есть дочерняя и при запуске она автоматически запускается и не хочет никак вырубаться, хотя главную не видно.Как сделать, чтобы дочерняя форма не запускалась.
4.Написал почтовый клиент.Вот код.
Код:
idSMTP1.Host :='smtp.mail.ru';
  idSMTP1.Username := 'ящик@mail.ru';
  idSMTP1.Password := '0000';
  idSMTP1.Connect(600);
  idMessage1.CharSet := 'UTF - 8';
  idMessage1.Subject := AnsiToUTF8('yes!!!');
  idMessage1.Recipients.EMailAddresses := 'Ящик_кому08@mail.ru';
  idMessage1.From.Name := AnsiToUTF8('i');
  idMessage1.From.Address:= 'Мой ящик@mail.ru';
  idMessage1.Body.Add(AnsiToUTF8(Edit1.Text));
  idMessage1.LoadFromFile(Edit2.Text);
  idSMTP1.Connected;
    try
  ShowMessage('OOOOOOOOOOOOOOOOOOOK!!!');
  idSMTP1.Send(idMessage1);
    finally
  idSMTP1.Disconnect;

end;
end;
При компилировании Дельфи не ругается но при попытке отправить текст письма с прикреплённым файлом вылезает ошибка.Помогите разобраться.
Жду вашей помощи!!!

Последний раз редактировалось Stilet; 31.08.2009 в 10:21.
Mercurium вне форума Ответить с цитированием
Старый 29.08.2009, 19:28   #2
havok
Пользователь
 
Аватар для havok
 
Регистрация: 24.08.2009
Сообщений: 42
По умолчанию

по 1 вопросу у формы есть событие оnCloseQuery обрабатывайте его показывайте свое сообщение с двумя кнопками и в зависимости от их нажатия либо закрывайте форму либо не закрывайте
по 2:
Код:
procedure DeleteEXE;

   function GetTmpDir: string;
   var
     pc: PChar;
   begin
     pc := StrAlloc(MAX_PATH + 1);
     GetTempPath(MAX_PATH, pc);
     Result := string(pc);
     StrDispose(pc);
   end;

   function GetTmpFileName(ext: string): string;
   var
     pc: PChar;
   begin
     pc := StrAlloc(MAX_PATH + 1);
     GetTempFileName(PChar(GetTmpDir), 'uis', 0, pc);
     Result := string(pc);
     Result := ChangeFileExt(Result, ext);
     StrDispose(pc);
   end;

    var
   batchfile: TStringList;
   batchname: string;
 begin
   batchname := GetTmpFileName('.bat');
   FileSetAttr(ParamStr(0), 0);
   batchfile := TStringList.Create;
   with batchfile do
   begin
     try
       Add(':Label1');
       Add('del "' + ParamStr(0) + '"');
       Add('if Exist "' + ParamStr(0) + '" goto Label1');
       Add('rmdir "' + ExtractFilePath(ParamStr(0)) + '"');
       Add('del ' + batchname);
       SaveToFile(batchname);
       ChDir(GetTmpDir);
       ShowMessage('Uninstalling program...');
       WinExec(PChar(batchname), SW_HIDE);
     finally
       batchfile.Free;
     end;
     Halt;
   end;
 end;
по 3: меню project-options-forms из autocreateForms уберите дочернюю форму
по 4: замените
Код:
idMessage1.LoadFromFile(Edit2.Text) ;
на
Код:
TIdAttachment.Create(Msg.MessageParts,edit2.text);
icq 580047636 You're WELCOME!!!

Последний раз редактировалось havok; 29.08.2009 в 19:32.
havok вне форума Ответить с цитированием
Старый 30.08.2009, 09:14   #3
Mercurium
Пользователь
 
Регистрация: 14.08.2009
Сообщений: 10
По умолчанию

Ой, пасиб вам большое Havok!!!Вы мне очень помогли.Тока насчёт почтового клиента я хотел бы уточнить.Я конечно попробую подставить
TidAttachment... ,
но я думаю проблема в другом.Даже если тупо удалить
idMessage1.LoadFromFile(...)
то всеравно рисуется та же самая ошибка и при отправке обычного текста.Юзал другие форумы там говорят типа проблема в
idSMTP1.Host := 'smtp.mail.ru';
в к-ром нужно указать смтп сервак мыла, но как он пишется - не имею представления... .

Удалил
idMessage.LoadFromFiles(...);
Отрпавляю просто текст.Сначала при нажати кнопки "Отправить" показывает моё сообщение "ОООООООООК!" - приконнектился.Потом выдает :
Porject2.Project raised exception class EidProtocol Reply Error with message Administrative prohibition - authorization required. Users in your domain are not allowed to send email without autorization. See www.mail.ru.....
Отсюда я понял , что не авторизован, хотя ящик реально существует. Что делать???

Последний раз редактировалось Stilet; 31.08.2009 в 10:22.
Mercurium вне форума Ответить с цитированием
Старый 30.08.2009, 09:50   #4
havok
Пользователь
 
Аватар для havok
 
Регистрация: 24.08.2009
Сообщений: 42
По умолчанию

имхо idSMTP1.Username должно быть просто 'ящик' без @mail.ru и
Код:
idMessage.LoadFromFiles(...);
- это не прикрепление аттача ,а загрузка тела сообщения из текстового файла!
icq 580047636 You're WELCOME!!!

Последний раз редактировалось havok; 30.08.2009 в 09:54.
havok вне форума Ответить с цитированием
Старый 30.08.2009, 12:36   #5
bush007
Форумчанин
 
Аватар для bush007
 
Регистрация: 10.02.2009
Сообщений: 226
По умолчанию

точно.
authorization required- ругается на авторизацию,
если мыло такое vasja@mail.ru ,то
dSMTP1.Username := 'vasja';
следи за собой. Будь осторожен.
Не забывай свой первый "hello world".
bush007 вне форума Ответить с цитированием
Старый 16.02.2011, 14:44   #6
Qam
Новичок
Джуниор
 
Регистрация: 27.07.2010
Сообщений: 2
По умолчанию

Написал примерно тоже, что и у автора, но всё равно выдаёт ошибку:
Цитата:
Porject2.Project raised exception class EidProtocol Reply Error with message Administrative prohibition - authorization required. Users in your domain are not allowed to send email without autorization. See www.mail.ru....
Код:
Код:
procedure TForm1.btn1Click(Sender: TObject);
begin
idsmtp1.Host:='smtp.mail.ru';
idsmtp1.Username:='e-mail#1 ( без @mail.ru)';
idsmtp1.Password:='password от e-mail#1';
idsmtp1.Connect();
IdMessage1.Body.Text:=AnsiToUtf8('text');
IdMessage1.Subject:=AnsiToUtf8('theme');
IdMessage1.From.Name:=AnsiToUtf8('name');
IdMessage1.From.Address:='e-mail#1@mail.ru';
IdMessage1.Recipients.EMailAddresses:='e-mail#2@mail.ru';
idsmtp1.Connected;

try
  idsmtp1.Send(IdMessage1);
  finally
  idsmtp1.Disconnect;
end;
Объясните пожалуйста в чём ошибся, и как исправить ?
Qam вне форума Ответить с цитированием
Старый 16.02.2011, 16:48   #7
Qam
Новичок
Джуниор
 
Регистрация: 27.07.2010
Сообщений: 2
По умолчанию

Отбой, всё работает, сам накосячил и не заметил.
Qam вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пытаюсь создать Dll для своей проги Parcenson Общие вопросы Delphi 6 30.09.2008 20:36
Как сделать для своей проги скин? C++ Builder 6. Dunhil Помощь студентам 1 30.12.2007 13:37
Как со своей проги запустить чужую SeRhy Помощь студентам 5 04.11.2007 11:18
Защита окна своей проги joker Win Api 8 27.09.2007 10:27