Ok, hier is ie dan, het is een ongetest stukje code eerlijk gezegd, maar gekeken naar hoe Indy werkt zou het moeten kloppen. Ik zou zeggen, kijk of het een beetje wil werken, en anders hoor ik het wel
Code:
implementation
type
TIRCUserState = (ircOp, ircVoice);
TIRCUserStates = set of TIRCUserState;
const
IRC_OP = 1;
IRC_VOICE = 2;
{$R *.dfm}
function SneakyGetUserState(Data: Integer): TIRCUserStates;
begin
Result := [];
if (Data and IRC_OP) <> 0 then
Include(Result, ircOp);
if (Data and IRC_VOICE) <> 0 then
Include(Result, ircVoice);
end;
procedure TForm1.IdIRC1Names(Sender: TObject; AUsers: TIdIRCUsers;
AChannel: TIdIRCChannel);
var
iUser: Integer;
iIndex: Integer;
pState: TIRCUserStates;
begin
for iUser := 0 to AUsers.Count - 1 do begin
// Zoek de gebruiker...
if AChannel.Find(AUsers.Items[iUser].Nick, iIndex) then begin
// Even een sneaky 'hack' om de status te krijgen
pState := SneakyGetUserState(Integer(AChannel.Names.Objects[iIndex]));
if ircOp in pState then begin
// Het is een Operator!
end;
if ircVoice in pState then begin
// Het is een Voice ofzo!
end;
end;
end;
end;
Bookmarks