0
この問題があります。CStringの日付キーを長いキーに変換する
これは私が日からキーを作成する方法である:GetLongDate
方法がある
WORD wKey = static_cast<WORD>(CInPlaceDT::GetLongDate(psEvent->datEvent));
:
long CInPlaceDT::GetLongDate(COleDateTime timDate)
{
long lDate;
lDate = (timDate.GetYear() * 10000) +
(timDate.GetMonth() * 100) +
timDate.GetDay();
return lDate;
}
は
はつい最近、私は、キーの新しいタイプを作成
上記のコードに問題はありません。しかし、私はフォーマットされたキー(日付)を含むCString
を取り、同じlong
日付を作成する必要がある状況にあります。現時点で私はこれをやっている:
if (mapSSEventLocations.GetSize() > 0 && m_mapWOSpecialEvents.GetSize() > 0)
{
// The new SRR format does not use the mapSSEventLocations object anymore.
// So we must migrate what we can across.
POSITION sPos = mapSSEventLocations.GetStartPosition();
while (sPos != nullptr)
{
CString strDate, strLocation;
mapSSEventLocations.GetNextAssoc(sPos, strDate, strLocation);
// We must now find the match
// The key is like this: psEvent->datEvent.Format(_T("%Y-%m-%d"));
POSITION sPos2 = m_mapWOSpecialEvents.GetStartPosition();
while (sPos2 != nullptr)
{
WORD wDate;
CSpecialEvent *pEvent = nullptr;
m_mapWOSpecialEvents.GetNextAssoc(sPos2, wDate, (CObject *&)pEvent);
if (pEvent != nullptr)
{
COleDateTime datEvent;
CInPlaceDT::GetOleDateTime(wDate, datEvent);
CString strThisKey = datEvent.Format(_T("%Y-%m-%d"));
if (strThisKey == strDate)
{
// We got the match
pEvent->SetLocation(strLocation);
break;
}
}
}
}
}
それはうまく動作します。しかし、私はstrDate
を受け取り、それをwDate
スタイルキーに変換したいので、イベントを検索するだけです。