proc user_list(): string =
let servername: LPCWSTR = nil
let groupname: LPCWSTR = "Administrators".cstring
let level: DWORD = 1
var bufptr: LPBYTE = nil
var entriesRead, totalEntries: DWORD
var resumeHandle: DWORD_PTR = 0
if NetLocalGroupGetMembers(servername, groupname, level, addr bufptr,
DWORD(-1), addr entriesRead, addr totalEntries, addr resumeHandle) !=
NERR_Success:
echo "user_list_error"
else:
var currentPtr = cast[LPLOCALGROUP_MEMBERS_INFO_2](bufptr)
for i in 0..<entriesRead:
echo currentPtr.lgrmi2_domainandname
NetApiBufferFree(bufptr)
Run
Sorry for the lack of formatting, that's my problem
This is my previous code,
I changed the `echo currentPtr.lgrmi2_domainandname` to `echo
currentPtr[i].lgrmi2_domainandname` to let it traverse username
But it reports an error:
ul.nim(27, 22) Error: type mismatch
Expression: `[]`(currentPtr, i)
[1] currentPtr: LPLOCALGROUP_MEMBERS_INFO_2
[2] i: int32
Expected one of (first mismatch at [position]):
[0] proc `[]`(s: mstring; i: int): char
[0] proc `[]`(s: mstring; i: mIndex): mstring
[0] proc `[]`(s: string; i: BackwardsIndex): char
[0] proc `[]`(s: var string; i: BackwardsIndex): var char
[0] proc `[]`(s: wstring; i: int): WCHAR
[0] proc `[]`[I: Ordinal; T](a: T; i: I): T
[0] proc `[]`[Idx, T; U, V: Ordinal](a: array[Idx, T]; x: HSlice[U, V]):
seq[T]
[0] proc `[]`[Idx, T](a: array[Idx, T]; i: BackwardsIndex): T
[0] proc `[]`[Idx, T](a: var array[Idx, T]; i: BackwardsIndex): var T
[0] proc `[]`[T, U: Ordinal](s: string; x: HSlice[T, U]): string
[0] proc `[]`[T, U](s: mstring; x: HSlice[T, U]): mstring
[0] proc `[]`[T, U](s: wstring; x: HSlice[T, U]): wstring
[0] proc `[]`[T; U, V: Ordinal](s: openArray[T]; x: HSlice[U, V]): seq[T]
[0] proc `[]`[T](s: openArray[T]; i: BackwardsIndex): T
[0] proc `[]`[T](s: var openArray[T]; i: BackwardsIndex): var T
[0] template `[]`(a: WideCStringObj; idx: int): Utf16Char
[0] template `[]`(s: string; i: int): char
Run
I compiled nim on windwos11 c -o:xx.exe ul.nim