2016-03-25 17 views
2

Ekibimizin bizi şaşırttığı bir hata var.LoadFrame (MFC) yalnızca Avustralya'da başarısız oluyor

Aşağıdaki kod false döndürür:

CMainFrame* pMainFrame = new CMainFrame; 
if (!pMainFrame->LoadFrame(IDR_MAINFRAME)) 
{ 
    AfxMessageBox(GetStr(IDS_MAINFRM_FAIL_TO_LOAD)); 
    ASSERT(FALSE); 
    return FALSE; 
} 

Biz VS2010 kullanarak topluyoruz ve biz Roguewave Stingray bileşeni yüklü yoktur. CMainFrame bir CMDIFrameWnd kapalı ve BCGSoft tarafından yapılan bir CBCGPMDIFrameWnd.

Yazılımımızın, dünya çapında yaklaşık 100 makinede sorunsuz bir şekilde çalışıyoruz. Onun Windows 7-10 üzerinde çalışan x86 & x64. Bu haftaya kadar hep çalıştı. Mildura, Avustralya'da küçük bir grup insan bir sorun bildirdi. Hepsini aç Hepsini kapa Belirtiler, WIN7x86Enterprise ve Win10x64Home çalıştıran, yukarıdaki kod parçacığının yanlış döndürür. Kişisel olarak kendi makinelerinden birini (Win10x64Home) inceledim ve her şey yolunda görünüyor.

Proje için deleting the RES and APS files denedim. Bu yardımcı olmadı.

Sorunun ne olabileceğini bilen var mı? Eğitimli tahminlere açığım.

Şimdiden teşekkürler!

PS: Yeni Bilgi: Bir zaman sorunu gibi görünüyor. Bilgisayarda, her şey UTC + başarısız olur ve UTC0 & UTC-pass. Neden olduğundan emin değiliz. Herhangi bir yardım takdir edilecektir. Teşekkürler!

+0

Ekleme 'm_pMainWnd = pMainFrame;' LoadFrame' (Sana CWinApp :: InitInstance' –

+0

Rastgele fikirler 'içindedir varsayalım' önce: Değişiklik saat dilimleri ve vb yerelleştirme (dil) eşleşecek şekilde aus dışındaki bir bilgisayarda ayarlar Bilgisayarın içinde ve tersi.Aus bilgisayar ağını aus bilgisayar ağında yapmak için bir vpn kullanın ve tam tersi – Yakk

+0

@BarmakShemirani: Ben öneri çalışıyorum .. –

cevap

3

Zaman aşımı bir başlangıç ​​noktası olarak geçen bir zaman damgası üzerinde TimeDate calcs yapıyorduk. MFC, çağından önceki tarihlere izin vermez, bu nedenle tüm UTC +, tarih oluşturulmasında başarısız oldu. Bu hata düzeltildi. Herkese teşekkürler.

Soruna neden olan kod İşte (sabit). Çalışacak her şey için bir gün ekledik. CTime :: CTime (1970,1,1,0,0,0) w/UTC +, Londra’da 1/1/1970’den önce başarısız oluyor.

Teşekkürler!

CTime t1 = CTime::CTime(yearInt,monthInt,dayInt,0,0,0); 
CTime t2 = CTime::CTime(1970,1,2,0,0,0); 
CTimeSpan timeSpan = t1-t2; 
versionDate = timeSpan.GetDays() + 1; 
+1

Yanıt açık değil. Hesaplama için hangi türler kullanıldı? COleDateTime "neredeyse" herşeyi sağlar;) – xMRi

+0

@ xMRi: Yeni cevabı beğendiniz mi? –

+0

Evet. Bu problemi netleştirir! – xMRi