Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.20;
Скачать: CL | DM;

Вниз

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 10

class 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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.042 c
4-1166372263
Repavel
2006-12-17 19:17
2007.05.20
Закрытие доступа на чтение файла


2-1177511768
Stas12
2007-04-25 18:36
2007.05.20
Поиск в бинарном файле.


15-1176587886
Kostafey
2007-04-15 01:58
2007.05.20
В чем же прелесть попсы ?


1-1174416311
Malik
2007-03-20 21:45
2007.05.20
Масштабирование StringGrid a перед распечаткой


2-1177266888
Сорокин М
2007-04-22 22:34
2007.05.20
stringgrid строки