Форум: "Сети";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
ВнизE-Mail Indi 10 (BDS 4) TIdMessage DateTime format Найти похожие ветки
← →
iXT (2006-11-08 17:32) [0]Время доброе всем.
Есть вопросик. При создании сообщения (TIdMessage) значение Date: ............ hh:mm:ss +0000
Логично, что из-за этого при приеме время улетает на 3 (ну у кого как) часа
Почему он ставит "нулевой часовой пояс". Где какую галку поставить
P.S.
В окнах все стоит как надо: +3
← →
umbra © (2006-11-09 10:53) [1]потому, что св-во
TIdMessage.Date
имеет типTDateTime
, который ничего про часовые пояса не знает. Надо вручную править заголовок, прописывая нужное смещение
← →
iXT (2006-11-09 11:04) [2]Согласен, этот вариант всегда есть, НО
на каком основании он вставляет +0000? Ставил уж тогда бы из Widows. Ведь это время создания сообщения, TDateTime - текущее тремя вставил, а затем так просто: "+0000".
← →
umbra © (2006-11-09 11:27) [3]ну, в справке написано, что в этом св-ве - время в локальной зоне. Может поэтому и пишут +0000
а может авторы так шутят. Вот, например, я долго думал, почему у меня не работаетTIdConnectTroughHTTPProxy
. Затем полез в исходники, а в модуле комментарий типа "допишите этот класс и поместите в другой модуль". Шутники.
← →
Anatoly Podgoretsky © (2006-11-09 11:28) [4]> iXT (09.11.2006 11:04:02) [2]
На основание, что ты ему не оставил другой возможности.
← →
iXT (2006-11-09 11:53) [5]
> что в этом св-ве - время в локальной зоне
Это свойство я не заполняю - это раз. Сво-во UseNowForDate и true и false, хотя дату ставит текущую всеравно (может потому что Date пустое)
> На основание, что ты ему не оставил другой возможности.
Какой я плохой, а если можно, то в каком "месте" у него появится эта другая возможность?
← →
Anatoly Podgoretsky © (2006-11-09 13:26) [6]Дату для данного случая надо понимать как дату + время, плюс смещение и плюс то что ты не сумел привести. Дата должна быть в соответствии с RFC
> Сво-во UseNowForDate и true и false,
Это слова, а у нас принято фактами оперировать, иначе будем трепаться, раз автор трепется.
ЗЫ: Инди она поставляется в исходных текстах!!!
← →
iXT (2006-11-09 16:22) [7]2 Anatoly Podgoretsky
Ну какой тут треп???
Помоему все, очень даже, конкретно сказаноIdMessage.Clear;
IdMessage.From.Name:="Sender";
IdMessage.From.Address:="sender@local.net";
IdMessage.Recipients.EMailAddresses:="reciver@local.net";
IdMessage.Subject:="Test message with attachment";
IdMessage.SaveToFile("c:\test.msg");
Получаем
From: "Sender" <sender@local.net>
Subject: Test message with attachment
To: reciver@local.net
Date: Thu, 9 Nov 2006 11:52:03 +0000
.
при изменение UseNowFor Date получаем такой же результат
> Дату для данного случая надо понимать как дату + время,
> плюс смещение и плюс то что ты не сумел привести
Что значит не сумел привести??? Если "Now - x/24", то мы получим:
Date: Thu, 9 Nov 2006 08:52:03 +0000
а надо:
Date: Thu, 9 Nov 2006 11:52:03 +0300
Есть
TIdDateTimeStamp
"Класс для выполнения математических действий с датой и временем, связанных с тем, что Интернет-протоколы используют различные форматы даты и времени; кроме того, клиенты и серверы могут находиться в различных часовых поясах."
Но как его юзать пока не допетрил!
← →
Anatoly Podgoretsky © (2006-11-09 16:36) [8]> iXT (09.11.2006 16:22:07) [7]
Что то я не видел этой строки Date: Thu, 9 Nov 2006 11:52:03 +0000 раньше!
Это нормальное, локальное, зимнее время со смещением 0, такое время наблюдается на нулевом меридиане, например в Гринвиче. По формату соответствует RFC
Если уберешь +0000 то это будет абсолютное время
← →
iXT (2006-11-09 16:51) [9]
> Что то я не видел этой строки Date: Thu, 9 Nov 2006 11:52:
> 03 +0000 раньше!
Она была в [0] (немного цифры на hh,mm и т.п. поменял)
В том то и дело, что TIdMessage создает именно такую строку.
(какого +0000, откуда???)
Пример который с Indi идет создает такиеже сообщения (+0000)
← →
Anatoly Podgoretsky © (2006-11-09 17:04) [10]> iXT (09.11.2006 16:51:09) [9]
В ноль были точки!
← →
Anatoly Podgoretsky © (2006-11-09 17:05) [11]> iXT (09.11.2006 16:51:09) [9]
Так они же американцы.
Смотри справку по Инди, хоть и тяжело, но надо.
Допускаю возможность, что это не возможно, они же американцы.
← →
Anatoly Podgoretsky © (2006-11-09 17:06) [12]> iXT (09.11.2006 16:51:09) [9]
Сам я крест на Инди поставил месяц назад и успел уже полностью забыть. Снова изучать не стоит. Хотя и справка и примеры есть. Но это должна быть управляемая вещь.
← →
iXT (2006-11-09 17:07) [13]Ладно, есть идеи, как сие должно работать?
← →
iXT (2006-11-10 10:24) [14]Вобщем, итог таков.
Самое противное, что куча народа писали программы с TIdMessage (в том числе и demo) - результат вышеописан...
У меня сообщение сохраняется в фаил. Думаю самый простой способ исправить это после в файле.
Есть вариант править это в TIdMessage, и наверное он более правелен, но как это сделать практически не знаю (.Headers.Count = 0). Может еще где???
Топик остается открытым, если у кого еще созреют идеи ...
2 Anatoly Podgoretsky
[13] после [10] писал!
← →
Anatoly Podgoretsky © (2006-11-10 13:46) [15]> iXT (10.11.2006 10:24:14) [14]
> У меня сообщение сохраняется в фаил. Думаю самый простой способ исправить это после в файле.
Так ты про полученые сообщения говоришь, тогда решение правильное, а если про отправку, то не понятна сама идея сохранять в файле.
← →
iXT (2006-11-10 14:55) [16]
> а если про отправку, то не понятна сама идея сохранять в
> файле.
Нет, сообщения отправляются. Ну это не суть проблемы. Сейчас дабы перед тем как посмотреть что я отправлю, я ее в файл сохраняю.
← →
iXT (2006-11-10 16:00) [17]Indi 9 делает +0300 !!!!!!!!!!!!!!!!!!!!!!!!
Бред
← →
Anatoly Podgoretsky © (2006-11-10 16:14) [18]> iXT (10.11.2006 16:00:17) [17]
Я уже забросил Инди, но это должно настраиваться, поройся по справке, по исходному тексту, иначе я не пойму как же люди работают то. Ведь это базовая вещь.
← →
iXT (2006-11-10 16:59) [19]
> как же люди работают то. Ведь это базовая вещь.
И я про то!
> это должно настраиваться, поройся по справке, по исходному
> тексту,
Роюсь, роюсь! Даже Indi 9 пропробывал (D7)
← →
Anatoly Podgoretsky © (2006-11-10 17:05) [20]> iXT (10.11.2006 16:59:19) [19]
Вижу, если бы не монстр и если бы я не поставил на нем крест, то тоже бы взглянул, а так оно мне надо. Но я тебя спросил про сохранение файла, прояснился бы?
← →
iXT (2006-11-10 17:38) [21]1. Сейчас сохраняю, чтобы посмотреть что формируется! Сперва отправлял сразу - получил что фаил отправлен "через 3 часа". Поэтому решил сохранить в файл.
2. Вообще задумка, что программа которая формирует (что отправить) может и не иметь на месте возможность отправлять по SMTP. Она кладет в определенное место файл. А другая программулька должна смотреть, если есть, то отправлять.
← →
Anatoly Podgoretsky © (2006-11-10 18:26) [22]> iXT (10.11.2006 17:38:21) [21]
Вот теперь по пункту 1 понятно, для тестовых целей.
По пункту 2, другая программа имеет право менять данный заголовок как считает нужным.
У меня сейчас была открыта справка, я посмотрел немного и по Инди.
Заголовок Date относится к TIdMesssage одноименное поле, оперировать надо с ним и в данном случае использовать надо UTC.
Другое свойство UseNowForDate если оно установлено в False то будет использовано свойство Date, которое и установи в UTC
Можно также попробовать работать с заголовками напрямую, для этого еще покопайся со справкой, как получить и как их изменить
← →
iXT (2006-11-11 13:21) [23]Нашел КОСЯК
Реализация функции OffsetFromUTS:
Indi 9:{$IFDEF MSWINDOWS}
function OffsetFromUTC: TDateTime;
var
iBias: Integer;
tmez: TTimeZoneInformation;
begin
Case GetTimeZoneInformation(tmez) of
TIME_ZONE_ID_INVALID:
raise EIdFailedToRetreiveTimeZoneInfo.Create(RSFailedTimeZoneInfo);
TIME_ZONE_ID_UNKNOWN :
iBias := tmez.Bias;
TIME_ZONE_ID_DAYLIGHT :
iBias := tmez.Bias + tmez.DaylightBias;
TIME_ZONE_ID_STANDARD :
iBias := tmez.Bias + tmez.StandardBias;
else
raise EIdFailedToRetreiveTimeZoneInfo.Create(RSFailedTimeZoneInfo);
end;
{We use ABS because EncodeTime will only accept positve values}
Result := EncodeTime(Abs(iBias) div 60, Abs(iBias) mod 60, 0, 0);
{The GetTimeZone function returns values oriented towards convertin
a GMT time into a local time. We wish to do the do the opposit by returning
the difference between the local time and GMT. So I just make a positive
value negative and leave a negative value as positive}
if iBias > 0 then begin
Result := 0 - Result;
end;
end;
{$ENDIF}
Indi 10class function TIdSysVCL.OffsetFromUTC: TIdDateTimeBase;
begin
Result := 0;
end;
Афигительная процедура
← →
iXT (2006-11-13 11:13) [24]Кто юзает 2006 (Indy 10), гляньте, плз, модуль IdSysVCL.pas функция TIdSysVCL.OffsetFromUTC. Может это только у меня такое "ранение тяжелое"?
2 Anatoly Podgoretsky
> Я потратил на него достаточно много времени, потом плюнул и перешел на ICS.
Что за зверь?
← →
Anatoly Podgoretsky © (2006-11-13 11:31) [25]> iXT (13.11.2006 11:13:24) [24]
Это другой комплект компонент для работы с Интернет, работающий по другим принципам, Борланд на него облизывался, но автор не дал, тогда подобрали Инди.
Инди разрабатывался для мира Юникс и портировали неглядя на Виндоус, отсюда некоторые проблемы, надо вникать в его идеологию и писать в ее стиле. И что плохо, чем дальше, тем больше становится монстром, но работать можно, с учетом идеологий, если не обращать на идеологию внимания, то вполне достойный набор. Работать только тяжеловато, но это на первых порах. Я решил не затягивать этот период, а сразу рвануть на идеологию Виндоус и Дельфи. Пока не жалею, но некоторым наоборот ICS не нравится, им с Инди проще.
← →
iXT (2006-11-15 12:12) [26]Переставил, Delphi с Indi 9. Работает правильно (пока). Если нарвусь еще на косяк, будет повод подумать всетаки перейти на ICS. Пока останусь. Благодарю за дисскусию по проблеме. Всем желаю удачи!
← →
Anatoly Podgoretsky © (2006-11-15 13:45) [27]> iXT (15.11.2006 12:12:26) [26]
Правильно без нужды не переходи, а то придется перестравивать мозги и идеологию.
Но что же ты не прислушался к рекомендациям, они решают проблему
← →
iXT (2006-11-15 17:13) [28]
> Правильно без нужды не переходи, а то придется перестравивать
> мозги и идеологию.
Уже поздняк метаться :)
> Но что же ты не прислушался к рекомендациям, они решают
> проблему
Которые именно ???
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.042 c