Не создаётся поток на другой машине

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Не создаётся поток на другой машине

Сообщение arra » 02.06.2013 21:53:03

Добрый вечер.
написал прогу, которая по клику на кнопку создаёт процесс, производит полезную деятельность плюс через Synchronize время от времени обновляет текст в edit-е на форме. У меня на компе всё работает. Человек запускает на другом компе - нифига. По клику на кнопке ничего не происходит - ошибок не вываливается но и текст в edit-е не меняется. Такое ощущение что просто не создаётся поток. Как такое может быть? Система и там и там Windows 7, код создания потока:

Код: Выделить всё
if MyThread = nil then
  begin
    MyThread := TMyThread.Create(True);
    MyThread.FreeOnTerminate:=true;
    MyThread.Resume;
  end;


Проверка на nil нужна для того, чтобы поток нельзя было запустить дважды. На всякий случай делаю по FormCreate
Код: Выделить всё
MyThread := nil;
arra
новенький
 
Сообщения: 27
Зарегистрирован: 30.03.2013 22:58:27

Re: Не создаётся поток на другой машине

Сообщение VirtUX » 03.06.2013 13:49:23

Поставь на той машине Лазарь с дебагером, и смотри что там происходит... Разрядность ОС совпадают?
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: Не создаётся поток на другой машине

Сообщение arra » 05.06.2013 00:02:46

Поставил отладчик, оказалось, процесс запускается, просто не проходит логин на почту по pop3 (именно это и делает процесс). А на моей машине проходит... Использую synapse. Подскажите, где посмотреть код ошибки, которую вернул pop3 при попытке логина? Кусок работающий с почтой:

Код: Выделить всё
procedure TMyThread.Execute;
var
  serv,login,pass,save_path:string;
  IniF:TINIFile;
  pop3:Tpop3send;
  FMimeMsg: TMimeMess;
  FMimePart: TMimePart;
  FMimePart2: TMimePart;
  LoginOk: Boolean;

  nMsgCount: Integer;
  nMsg: Integer;
  n: Integer;
  FName:string;
  Name_mail,buf_data:String;
begin
IF (FileExists('connect.ini')) then
begin
   Inif := TINIFile.Create('connect.ini');
   serv := iNiF.ReadString('connection','server','');
   login := iNiF.ReadString('connection','login','');
   pass := iNiF.ReadString('connection','password','');
   //save_path := iNiF.ReadString('save','path','');

  while not terminated do
  begin
    sleep(100);
    //GetEmail(serv,login,pass,'C:\sav_file');

    FMimeMsg:=TMimeMess.Create;
pop3:=Tpop3send.Create;
FMimePart:=TMimePart.Create;
FMimePart2:=TMimePart.Create;
FMimePart:=nil;
FMimePart2:=nil;
try
  pop3.TargetHost:=serv;
  pop3.UserName:=login;
  pop3.Password:=pass;

  LoginOk := pop3.Login;
  if (LoginOk) then //вот здесь-то как раз и не ОК, не проходит логин
arra
новенький
 
Сообщения: 27
Зарегистрирован: 30.03.2013 22:58:27

Re: Не создаётся поток на другой машине

Сообщение vada » 05.06.2013 10:31:59

Коды ошибок POP3 зависят от сервера к которому вы конектитесью.
Хрустальный шар мне подсказывает что сервер мелкософтский.
Гляньте тут http://www.nthelp.com/50/Outlook_error_codes.htm может поможет.
Если юниксовый сервер, то на линуксе man pop3
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Не создаётся поток на другой машине

Сообщение arra » 05.06.2013 12:54:57

Вот те раз, а я-то думал что коды ошибок прописаны в протоколе pop и не зависят от реализации.
Но вопрос не в этом, а в том, где этот код сидит в лазаревском объекте? Как свойство называется? Ничего похожего на свойство error я у объекта Tpop3send не нашёл.
З.Ы. Сервер - pop.gmail.com
З.З.Ы. Как отловить момент, когда до сервера вообще не доходит? Например, закрыт межсетевым экраном порт 110?
arra
новенький
 
Сообщения: 27
Зарегистрирован: 30.03.2013 22:58:27

Re: Не создаётся поток на другой машине

Сообщение vada » 05.06.2013 17:50:21

Telnet поможет узнать версию POP3 сервера гугла. Для этого конкретного сервера и надо смотреть.
arra писал(а):Ничего похожего на свойство error я у объекта Tpop3send не нашёл.

Ну там что-то типа ответа сервера надо смотреть. Сервер строку клиенту отсылает. Строку и парсить надо на предмет кода ошибки.

ЗЫ. Протокол то один, но вот реализации немного отличаются друг от друга. M$ так вообще отсебятину всегда гонит.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Не создаётся поток на другой машине

Сообщение arra » 06.06.2013 08:39:02

Погонял в отладке. Получается странная вещь: на моём компе даже если передаю неправильный пароль от почты, строка
LoginOK := pop3.login
отрабатывает мгновенно и в свойстве ResultString потом описание ошибки. На подопытном компе эта строка в отладке думает секунд 10, логин не проходит и в ResultString пусто.
Что это может быть?
arra
новенький
 
Сообщения: 27
Зарегистрирован: 30.03.2013 22:58:27

Re: Не создаётся поток на другой машине

Сообщение vada » 06.06.2013 09:41:16

FileWoll должно быть.
В консоли телнетом потыкайся.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Не создаётся поток на другой машине

Сообщение arra » 06.06.2013 11:50:58

Что такое fileWoll? FireWall имелся в виду? Вроде не стоит он на том компе и брандмауэр винды отключен.
Но телнет попробую.
arra
новенький
 
Сообщения: 27
Зарегистрирован: 30.03.2013 22:58:27

Re: Не создаётся поток на другой машине

Сообщение vada » 06.06.2013 11:53:16

Ага :) пипки перепутал :)
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 267

Рейтинг@Mail.ru