Thank you Wilfried,

I think I have found the Problem, but still not sure what to "Check" for,

I did a Stack Trace:

First event is 10053 : Socket Disconnected, then because I was sending Data,

this code then continues to be executed:

                            size := Swap4(DataStream.Size);
                            aThread.Send(@size, len);
                            aThread.Send(@b[0],DataStream.Size);
                            if aThread.ClientThread.ThreadAttached then //
has no Effect to catch Access Violation
                                aThread.TryToSend;

Is there a Way that I can Detect the LastError Code for the Current Thread:

as in

if  aThread.ErrorFree then begin
  // do my send operations.
end;


Thank you.

On Feb 6, 2008 11:09 AM, Wilfried Mestdagh <[EMAIL PROTECTED]> wrote:

> Hello wayne,
>
> Yes you probably access an object that never has created, or there is
> some pointer overwritten. When you have the exception view the call
> stack window to go to the offending code.
>
> ---
> Rgds, Wilfried [TeamICS]
> http://www.overbyte.be/eng/overbyte/teamics.html
> http://www.mestdagh.biz
>
> Wednesday, February 6, 2008, 09:32, wayne forrest wrote:
>
> > I have an Access Violation at address 00000, I googled on this and found
> > that this means a reference to a null.
>
> > Basically I have implemented my Application based on "ThrdSrvV2_1" demo
> > project,
>
> > The problem happens as Follows: The Client connects to the Server, then
> > requests data,
> > I then Close the Client Application (Terminate / end task).
>
> > the server then runs into this Routine: I am not sure where the Error is
> > precisely, I think it is when the Windows Message gets processed.
> > inside the "Forms unit" of delphi.
>
> > Any Ideas.
>
> > {* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
> *
> > *}
> > { We have to attach client socket to this thread's context and then
> > }
> > { process messages so that TWSocket events works.
> > }
> > procedure TClientThread.Execute;
> > begin
> >     if not Assigned(WSocket) then
> >         Exit;
>
> >     { Attach client socket to this thread
> > }
> >     WSocket.ThreadAttach;
> >     { Signal main thread that we've attached socket to this thread
> > }
> >     ThreadAttached := TRUE;
> >     { Now let main thread continue starting the connection.
> > }
> >     { This little avoid race condition.
> > }
> >     Sleep(0);
> >     { Let's block on critical section already owned by main thread
> > }
> >     EnterCriticalSection(FCritSect);
> >     LeaveCriticalSection(FCritSect);
> >     { Then process messages until WM_QUIT message is posted.
> > }
> >     { TWSocket is event-driven. So even when used within a thread, we
> > }
> >     { have to have a "message pump". Any message pump will do and there
> > }
> >     { is one built in TWSocket, so use it !
> > }
> >     WSocket.MessageLoop;
> >     { Be sure to have main thread waiting for termination before
> > terminating}
> >     Sleep(0);
> >     { Detach the hidden window from within the thread
> > }
> >     WSocket.ThreadDetach;
> > end;
>
> --
> To unsubscribe or change your settings for TWSocket mailing list
> please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
> Visit our website at http://www.overbyte.be
>



-- 
C: 076 337 4368
T: 021 880 2037
F: 021 880 2530
-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to