FIX: COleDateTime::operator=(time_t) interruzioni se l'anno dopo 1999

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 225140
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
Sintomi
Il =(const time_t& timeSrc) COleDateTime::operator funzione non gestisce correttamente le date successive a 31 dicembre 1999. Ad esempio, la 05/02/2000 può essere rappresentato come/02/05/100.

Questo errore può essere visualizzato nell'applet di diagnostica di Windows 95/Windows 98 Msinfo32.exe. Se la data nel computer è impostata su successiva al 31 dicembre 1999, il report generato Msinfo32 le date non vengono visualizzate correttamente.
Cause
COleDateTime::operator = chiamate in una funzione di supporto in MFC è denominata OleDateFromTm. Questa funzione viene utilizzata per convertire la struttura di tempo CRT, che memorizza l'anno 1900 (ad esempio, 99 = 1999, 100 = 2000) per le funzioni di conversione data/ora OLE prevedono relativo. OleDateFromTm presuppone che ogni anno viene passato al metodo è inferiore a 100 che è una Data abbreviata rispetto al 1900 e si aggiunge 1900 a esso. Se l'anno è maggiore di 99 (vale a dire 100 = 2000) non viene aggiunto. Pertanto, quando 100 viene passata OleDateFromTm (per 2000), non verrà aggiunto e la data viene restituita come 100.
Status
Microsoft ha confermato che questo un bug nei prodotti Microsoft elencati all'inizio di questo articolo.

Questo bug è stato risolto nelle versioni patch le Mfc40.dll Mfc40u.dll. Numero di versione è 4.1.6140. Queste DLL sono incluse come parte dell'anno 2000 aggiornamenti per Windows 95 e Windows 98. Per Windows NT 4.0, una correzione rapida è disponibile.

Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
218877Mfc40.dll causa programmi a schermo data errato dopo il 01/01/2000
Questo problema è stato risolto in Visual Studio 6.0 Service Pack 3. Per ulteriori informazioni sui service pack di Visual Studio, fare clic sul numero dell'articolo della Knowledge Base riportato di seguito:
194022INFORMAZIONI: Visual Studio 6.0 Service Pack, che, WHERE, perché
194295HOWTO: Determinare di Studio 6.0 Service Pack di Visual installati
Informazioni
Solo le applicazioni create con Visual c ++ 4.0 o 4.1 richiedono questa DLL aggiornata. Per determinare se l'eseguibile è collegato il Mfc40.dll, attenersi alla seguente procedura:
  1. Avviare Esplora risorse.
  2. Fare clic con il pulsante destro del mouse sul file EXE o DLL.
  3. Selezionare l'Anteprima .
  4. Scorrere fino alla tabella di importazione. La DLL MFC collegata dovrà essere elencata qui (vale a dire Mfc40.dll).
anno 2000 MFC COleDateTime time_t OleDateFromTm

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 225140 - Ultima revisione: 02/13/2014 06:19:27 - Revisione: 2.1

Microsoft Foundation Class Library 4.2

  • kbnosurvey kbarchive kbmt kbbug kbfaq kbfix kbnoupdate kbvs600sp3fix KB225140 KbMtit
Feedback