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