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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2011, 00:56   #1
voverrr
Пользователь
 
Регистрация: 25.08.2010
Сообщений: 62
По умолчанию В почтовом ящике проверяет все письма, кроме первого

Здравствуйте.
Подскажите, пожалуйста.

проверяю почту.
На форме компоненты:
NMpop3 - для входа в почтовый ящик
Label - для отображения количества писем в ящике
Memo1 - показывает тему письма
Memo2 - показывает текст письма
Edit4 - указываю номер письма
Button1 - кнопка для запуска проверки почты.

кусок кода вот такой:
Код:
procedure TForm1.btn1Click(Sender: TObject);
var
 nomerpisma, NumOfMsgs: Integer; //указываем, какое по счёту письмо нужно прочтитать
 
begin
nomerpisma :=StrToInt(edt4.text);//номер письма берём из ячейки
NMP.Connect;// коннектимся к ящику
NumOfMsgs:=nmp.MailCount;//узнаём, сколько писем в ящике
lbl7.Caption:= IntToStr(NumOfMsgs);//выводим в лейбле количество писем в почте
NMP.GetMailMessage(nomerpisma);//принимаем письмо №(,,,)
mmo1.Text:=NMP.MailMessage.Subject;// отображаем тему
mmo2.Lines:=NMP.MailMessage.Body;// отображаем текст

NMP.Disconnect;//разконнектимся
end;
так вот когда значение nomerpisma устанавливаю:=1, то он выкидывает ошибку. С номера второго читает всё нормуль.
В чём засада?
voverrr вне форума Ответить с цитированием
Старый 16.08.2011, 02:24   #2
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

вы б хоть написали что за ошибку выдает и в каком именно месте.

попробуйте NMP.GetMailMessage(1);
если проканает, значит проблема в получении этой цифры (Edit, strtoint, ...),
а если будет та же ошибка - значит надо глубже копать.

еще зайдите на почту обычным способом,
и проверьте какому письму соответствует NMP.GetMailMessage(2);
если второму - то все правильно - ошибка где-то в программе,
а если первому... то делайте выводы =)
xrob вне форума Ответить с цитированием
Старый 16.08.2011, 20:00   #3
voverrr
Пользователь
 
Регистрация: 25.08.2010
Сообщений: 62
По умолчанию

какую ошибку выдаёт - сейчас сказать не могу, я разобрал там всё, перелопачиваю.
А с единичкой вместо "nomerpisma" я изначально пробовал. Такой же результат. Зависает и ругается.
В ящике порядок писем тоже смотрел. Если указывать NMP.GetMailMessage(2), то он и читает именно второе письмо, которое лежит в ящике. Первое не видит, второе видит. И последнее(например 18-е письмо) - тоже нормально видит, если указать (18). Ошибки начнутся, если начать читать дальнейшие, несуществующие(19,20,21е...), но с этим я знаю что делать - сделать условие, если номер письма хочет стать больше, чем писем в ящике, то номер письма :=количеству писем в ящике).
может это зависит от POP-сервера? Это я пробовал на рамблерском.
by the way подскажите ещё адрес сервера yahoo.com? Что-то нигде не могу его увидеть в ящике.
voverrr вне форума Ответить с цитированием
Старый 17.08.2011, 12:20   #4
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Что возвращает LIST?
Цитата:
procedure TForm1.NMPList(Msg, Size: Integer);
begin
Memo3.Lines.Add(IntToStr(Msg)+' / '+IntToStr(Size));
end;
пыщь
JTG вне форума Ответить с цитированием
Старый 20.08.2011, 17:38   #5
voverrr
Пользователь
 
Регистрация: 25.08.2010
Сообщений: 62
По умолчанию

JTG
понимать бы ещё, как этот лист вызвать...
я ж в дельфи тока по верхушкам...

в любом случае спасибо за помощь. По всей видимости ошибка была у меня в другом месте. Оно хотело прочитать письмо №0.
Переписал форму заново, на свежую голову, поправил счётчик и всё нормуль стало.
А может быть дело в том, что в этот раз адрес сервера-логин-пароль я не забивал в свойства NMP, а вписывал в Едиты1,2,3 и назначал оттуда? Хотя вряд ли.
voverrr вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обрезать все кроме цифр, Дельфи TorchWood Работа с сетью в Delphi 8 01.08.2015 17:36
Удаляем с переменной все кроме цифр. celovec Общие вопросы Delphi 13 14.08.2011 23:13
В массиве A каждый элемент, кроме первого, заменить суммой всех предыдущих элементов aiktz Помощь студентам 7 11.10.2010 21:52
Я в шоке: Гугл проверяет наши письма Levsha100 Свободное общение 29 13.01.2010 15:45
Закрыть все файлы Excel,кроме текущего BesTiYa Microsoft Office Excel 5 10.12.2009 12:53