a couple of questions regarding Indy TIdNNTP
Hello,
I've got a couple of questions that deal with the TIdNNTP component.
1. I would like to get the new messages from a server that does not
support the
"GetNewNewsList" command. Currently to get messages I'm using
SendXOVER(IntToStr(NNTP.MsgLow) + '-' + IntToStr(NNTP.MsgHigh), sl);
but that procedure downloads messages I already have. There has got to
be a way to get new messages from this server because I do it in Forte
Agent all the time.
2. I created a thread to do misc indy tasks, like getting messages
from server. Then
I passed the thread to TIdNNTP tag ,ie - NNTP.Tag := Integer(Self);
The problem is in the
TidNNTP.OnStatus in which I'm trying to get the pointer to the thread
that passed it. This code work the first 2 times it's called, but
after that it tells me the TIdIOHandlerSocket.Owner is nil.
procedure TForm1.ThreadStatus(ASender: TObject; const AStatus:
TIdStatus;
const AStatusText: string);
var
Thread: TThread;
Node: PVirtualNode;
data: pStatusTreeData;
s: string;
io: TIdIOHandlerSocket;
nntp: TIdMessageClient;
begin
io := TIdIOHandlerSocket(ASender);
nntp := TIdMessageClient(io.Owner); //works fine first 2 times
after that returns nil
if nntp <> nil then
begin
Thread := TThread(nntp.Tag);
Node := FindStatusNode(Thread);
data := StatusTree.GetNodeData(Node);
Data.msg := AStatusText;
Statustree.InvalidateNode(Node);
end;
end;
Please Help Me.
Thank you
Josh Sanford