CORRECÇÃO: COleDateTime::SetDate não retorna um status "Inválido" em uma data incorreta no Visual C++ .NET

Traduções deste artigo Traduções deste artigo
ID do artigo: 813647 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
CPR - VS .NET - Hotfix no SP1
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

O comportamento do MFC (Microsoft Foundation Classes) e o método de ATL (Active Template Library) COleDateTime::SetDate alterado no Microsoft Visual C++. NET. Na versão .NET, quando você digita uma data incorreta, o status do objeto não define um status inválido . Em vez disso, o status do objeto converte a data para o mais próximo valor válido. Isso pode resultar em comportamento inesperado para aplicativos que dependam do status do objeto COleDateTime de inválido . O comportamento é diferente das informações do Microsoft Developer Network (MSDN) que acompanha o .NET versão das bibliotecas do Visual C++. NET.

Resolução

Informações sobre o service pack

Para resolver esse problema, obtenha o service pack mais recente para o Microsoft Visual Studio. NET. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
837234Lista de bugs corrigidos no Visual Studio .NET 2002 1

Informações sobre o hotfix

A versão em inglês dessa correção apresenta os atributos de arquivo (ou posteriores) listados na tabela a seguir. As datas e horas desses arquivos são listadas na acordo hora universal coordenada (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário na ferramenta Data e hora no painel de controle.
   Date         Time  Version               Size  File name     
 ---------------------------------------------------------------
 24-Jan-2003  02:06                  2,011,136  Atl70.pdb
 12-Sep-2002  16:50                     39,733  afxdao.h
 24-Jan-2003  02:06  7.0.9660.0         84,992  atl70.dll
 23-Jul-2002  20:08                      3,443  atlbase.cpp
 23-Jul-2002  20:08                    163,480  atlbase.h
 20-Jan-2003  20:07                     16,396  atlcomtime.inl
 23-Jul-2002  20:08                     15,521  atlcore.h
 23-Jul-2002  20:08                     43,105  atlimage.h
 24-Jan-2003  02:06                     48,090  atlmincrt.lib
 24-Jan-2003  02:06                    659,456  atlmincrt.pdb
 24-Jan-2003  02:06                  1,003,890  atlsd.lib
 24-Jan-2003  02:06                  1,306,624  atlsd.pdb
 24-Jan-2003  02:06                    934,264  atls.lib
 24-Jan-2003  02:06                  1,306,624  atls.pdb
 24-Jan-2003  02:06                     14,546  atl.lib
 11-Nov-2002  22:45                     63,284  cstringt.h
 05-Dec-2002  20:21                    116,779  dbcore.cpp
 12-Sep-2002  16:50                     19,956  makefile
 24-Jan-2003  03:36  7.0.9660.0         40,960  mfc70chs.dll
 24-Jan-2003  03:36  7.0.9660.0         45,056  mfc70cht.dll
 24-Jan-2003  03:36  7.0.9660.0         61,440  mfc70deu.dll
 24-Jan-2003  03:22                    527,756  mfc70d.def
 24-Jan-2003  03:23                  3,066,694  mfc70d.lib
 24-Jan-2003  03:36  7.0.9660.0         57,344  mfc70enu.dll
 24-Jan-2003  03:36  7.0.9660.0         61,440  mfc70esp.dll
 24-Jan-2003  03:36  7.0.9660.0         61,440  mfc70fra.dll
 24-Jan-2003  03:36  7.0.9660.0         61,440  mfc70ita.dll
 24-Jan-2003  03:36  7.0.9660.0         49,152  mfc70jpn.dll
 24-Jan-2003  03:36  7.0.9660.0         49,152  mfc70kor.dll
 24-Jan-2003  03:24                    528,736  mfc70ud.def
 24-Jan-2003  03:25  7.0.9660.0      2,066,944  mfc70ud.dll
 24-Jan-2003  03:27                  3,978,842  mfc70ud.lib
 24-Jan-2003  03:43                    393,034  mfc70u.def
 24-Jan-2003  03:57  7.0.9660.0      1,016,832  mfc70u.dll
 24-Jan-2003  03:29                  3,042,324  mfc70u.lib
 24-Jan-2003  03:42                    392,265  mfc70.def
 24-Jan-2003  04:07  7.0.9660.0      1,028,096  mfc70.dll
 24-Jan-2003  03:24                  2,287,020  mfc70.lib
 12-Sep-2002  16:50                      7,662  mfcdll.mak
 24-Jan-2003  03:23                    526,960  mfcs70d.lib
 24-Jan-2003  03:25                    468,956  mfcs70ud.lib
 24-Jan-2003  03:44                    452,554  mfcs70u.lib
 24-Jan-2003  03:43                    505,780  mfcs70.lib
 24-Jan-2003  03:36                 10,513,408  mfc.bsc
 24-Jan-2003  03:18                 16,598,882  nafxcwd.lib
 24-Jan-2003  03:17                  2,093,056  nafxcwd.pdb
 24-Jan-2003  03:19                 16,468,250  nafxcw.lib
 24-Jan-2003  03:18                  2,068,480  nafxcw.pdb
 20-Sep-2002  00:18                     44,958  oledisp1.cpp
 24-Jan-2003  03:21                 17,032,292  uafxcwd.lib
 24-Jan-2003  03:20                  2,093,056  uafxcwd.pdb
 24-Jan-2003  03:22                 16,743,760  uafxcw.lib
 24-Jan-2003  03:21                  2,068,480  uafxcw.pdb
 05-Nov-2002  18:40                     34,858  viewprev.cpp
 24-Jan-2003  03:23  7.0.9660.0      2,072,576  Mfc70d.dll
 24-Jan-2003  03:23                  1,791,934  Mfc70d.map
 24-Jan-2003  03:23                  7,875,584  Mfc70d.pdb
 24-Jan-2003  03:25                  1,842,070  Mfc70ud.map
 24-Jan-2003  03:25                  7,908,352  Mfc70ud.pdb
 24-Jan-2003  03:57                  9,964,544  Mfc70u.pdb
 24-Jan-2003  04:07                  1,149,706  Mfc70.map
 24-Jan-2003  04:07                  9,980,928  Mfc70.pdb
 24-Jan-2003  03:23                  1,888,256  Mfcs70d.pdb
 24-Jan-2003  03:25                  1,896,448  Mfcs70ud.pdb
 24-Jan-2003  03:44                  1,888,256  Mfcs70u.pdb
 24-Jan-2003  03:43                  1,880,064  Mfcs70.pdb
				

Mais Informações

O comportamento observado ocorre devido a uma alteração na implementação do COleDateTime . A nova implementação usa SystemTimeToVariantTime função para converter o valor que é fornecido para o objeto COleDateTime .

Visite o seguinte Microsoft Developer Network site para obter mais informações sobre função SystemTimeToVariantTime :
http://msdn2.microsoft.com/fr-fr/library/ms221646.aspx
A função SystemTimeToVariantTime aceita datas inválidas e tenta corrigi-los durante a resolução para um horário VARIANT. Por exemplo, uma data inválida, como 29/2/2001 resolverá a 1/3/2001. No entanto, a entrada do Visual Studio .NET 2002 MSDN para COleDateTime::SetDate informa que um estado inválido (1) deveria ser definido para o objeto.


O código a seguir duplica o problema:

COleDateTime dtDate;
CString	szDate;
BOOL bOK;

bOK = dtDate.SetDate(2003, 2, 29);
if((bOK == 0) && (dtDate.GetStatus() == COleDateTime::valid))
{
	szDate = dtDate.Format();
	AfxMessageBox(szDate);
}
Observação Talvez seja necessário recompilar seu código depois de aplicar essa correção.

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo. Esse problema foi corrigido primeiro no Visual Studio .NET 2002 1.

Propriedades

ID do artigo: 813647 - Última revisão: sábado, 26 de outubro de 2013 - Revisão: 2.2
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Studio .NET 2002 Academic Edition
  • Microsoft Visual Studio .NET 2002 Enterprise Architect
  • Microsoft Visual Studio .NET 2002 Enterprise Developer
  • Microsoft Visual Studio .NET 2002 Professional Edition
Palavras-chave: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbvs2002sp1sweep kbvs2002sp1fix kbfix kbbug KB813647 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 813647

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com