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

Reply via email to