Hello Ionut, Change it like this:
in the main function: ..... Rec := PrepareRec(true); Rec.AllDist := Rec.AllDist - Dist; Rec.count := RecCount; Send(@Rec, SizeOf(TRec)); Query.Next; ..... in OnDataSent: ..... if not Query.Eof then begin Rec := PrepareRec(true); Rec.AllDist := Rec.AllDist - Dist; Rec.count := RecCount; Send(@Rec, SizeOf(TRec)); Query.Next; end; ..... --- Rgds, Wilfried [TeamICS] http://www.overbyte.be/eng/overbyte/teamics.html http://www.mestdagh.biz Monday, February 6, 2006, 11:26, Ionut Muntean wrote: > Hi Wilfried, > I've changed the code to this: > in tha main function: > ..... > Rec := PrepareRec(true); > Rec.AllDist := Rec.AllDist - Dist; > Rec.count := RecCount; > Send(@Rec, SizeOf(TRec)); > Query.Next; > repeat > ProcessMessages > until SentOk; > ..... > in OnDataSent: > ..... > if Query.Eof then > begin > SentOk := true; > exit; > end > else > begin > Rec := PrepareRec(true); > Rec.AllDist := Rec.AllDist - Dist; > Rec.count := RecCount; > Send(@Rec, SizeOf(TRec)); > Query.Next; > end; > The code is still entering 2 times ... :( > / Ionut Muntean > Wilfried Mestdagh wrote: >> Hello Ionut, >> >> >>>The code is executed from OnClientDataAvailable of an TWSocketServer. >>>When the execution reach the "repeat .. until SentOk", on >>>ProcessMessages the code is reentered a second time. >> >> >> This is normal. When you start looping processmessages then your code >> can be reentered because messages ar pumped. This is also bad design. >> You can easy change your code event driven, just call Send there with >> the first record. On OnDataSent you send your next record, etc, as Dod >> already mentioned. >> >> --- >> Rgds, Wilfried [TeamICS] >> http://www.overbyte.be/eng/overbyte/teamics.html >> http://www.mestdagh.biz >> >> Monday, February 6, 2006, 10:49, Ionut Muntean wrote: >> >> >>>Hi, >>>Please look at the code below. >>>. >>>. >>>. >>> try >>> try >>> Query.Open; >>> OnDataSent := DataWasSent; >>> // DataWasSent sets "SentOk" to True >>> while not Query.EOF do >>> begin >>> Rec := PrepareRec(true); >>> Rec.AllDist := Rec.AllDist - D; >>> Rec.Count := RecCount; >>> SentOk := false; >>> Send(@Rec, SizeOf(TRec)); >>> repeat >>> ProcessMessages; >>> until SentOk; >>> Query.Next; >>> end; >>> except >>> on E: Exception do >>> Display(ExecuteCommand1 - %s', [E.Message]); >>> end >>> finally >>> Query.Close; >>> OnDataSent := nil >>> end; >> >> >>>The code is executed from OnClientDataAvailable of an TWSocketServer. >>>When the execution reach the "repeat .. until SentOk", on >>>ProcessMessages the code is reentered a second time. >> >> >>>What am I doing wrong? >> >> >>>10x, >>>Ionut Muntean >> >> -- To unsubscribe or change your settings for TWSocket mailing list please goto http://www.elists.org/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be