IDiaSession::findLinesByLinenum
Určuje čísla řádků compilandu, které zadané číslo řádku ve zdrojovém souboru leží uvnitř nebo poblíž.
Syntaxe
HRESULT findLinesByLinenum (
IDiaSymbol* compiland,
IDiaSourceFile* file,
DWORD linenum,
DWORD column,
IDiaEnumLineNumbers** ppResult
);
Parametry
compiland
[v] IDiaSymbol objekt, který představuje compiland, ve kterém hledat čísla řádků. Tento parametr nemůže být NULL
.
file
[v] IDiaSourceFile objekt, který představuje zdrojový soubor pro vyhledávání. Tento parametr nemůže být NULL
.
linenum
[v] Určuje jednořádkové číslo.
Poznámka:
Nelze použít nula k určení všech řádků (pomocí IDiaSession::findLines metoda najít všechny řádky ).
column
[v] Určuje číslo sloupce. K určení všech sloupců použijte nulu. Sloupec je posun bajtu na čáru.
ppResult
[ven] Vrátí IDiaEnumLineNumbers objta, která obsahuje seznam načtených čísel řádků.
Vrácená hodnota
V případě úspěchu vrátí hodnotu S_OK
; v opačném případě vrátí kód chyby.
Příklad
Následující příklad ukazuje, jak otevřít zdrojový soubor, vytvořit výčet compilands, které přispěl tento soubor, a najít čísla řádků ve zdrojovém souboru, kde každá compiland začíná.
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);
}
}
}
}
}
}