Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kaynak dosyada belirtilen satır numarasının içinde veya yakınında yer alan compiland satır numaralarını belirler.
Sözdizimi
HRESULT findLinesByLinenum (
IDiaSymbol* compiland,
IDiaSourceFile* file,
DWORD linenum,
DWORD column,
IDiaEnumLineNumbers** ppResult
);
Parametreler
compiland
[in] Satır numaralarının arandığı compiland'ı temsil eden bir IDiaSymbol nesnesi. Bu parametre olamaz NULL.
file
[in] Aranacak kaynak dosyayı temsil eden bir IDiaSourceFile nesnesi. Bu parametre olamaz NULL.
linenum
[in] Tek tabanlı bir satır numarası belirtir.
Dekont
Tüm satırları belirtmek için sıfır kullanamazsınız (tüm satırları bulmak için IDiaSession::findLines yöntemini kullanın).
column
[in] Sütun numarasını belirtir. Tüm sütunları belirtmek için sıfır kullanın. Sütun, bir satıra bayt uzaklığıdır.
ppResult
[out] Alınan satır numaralarının listesini içeren bir IDiaEnumLineNumbers objta döndürür.
İade Değeri
Başarılı olursa döndürür S_OK; aksi takdirde bir hata kodu döndürür.
Örnek
Aşağıdaki örnekte bir kaynak dosyanın nasıl açıldığı, bu dosyanın katkıda bulunduğu compiland'ların nasıl numaralandırıldığı ve her bir compiland'ın başladığı kaynak dosyada satır numaralarının nasıl bulunacağı gösterilmektedir.
void ShowLinesInCompilands(IDiaSession *pSession, LPCOLESTR filename)
{
IDiaEnumSourceFiles* pEnum;
IDiaSourceFile* pFile;
DWORD celt;
pSession->findFile ( NULL, filename, nsFNameExt, &pEnum );
while ( pEnum->Next ( 1, &pFile, &celt ) == S_OK ) // for each file
{
IDiaEnumSymbols* pEnumCompilands;
IDiaSymbol* pCompiland;
pFile->get_compilands ( &pEnumCompilands );
// for each compiland
while ( pEnumCompilands->Next ( 1, &pCompiland, &celt ) == S_OK )
{
IDiaEnumLineNumbers* pEnum;
// Find first compiland closest to line 1 of the file.
if (pSession->findLinesByLinenum( pCompiland, pFile, 1, 0, &pEnum ) == S_OK)
{
IDiaLineNumber *pLineNumber;
DWORD lineCount;
while ( pEnum->Next(1,&pLineNumber,&lineCount) == S_OK)
{
DWORD lineNum;
if (pLineNumber->get_line(&lineNum) == S_OK)
{
printf("compiland starts in source at line number = %lu\n",lineNum);
}
}
}
}
}
}