.procedure TWriteThread.Execute; var I: Integer; LFailed: Boolean; LBytesToSend: TBytes; LClientSocket: TBluetoothSocket; begin inherited; While not Terminated do begin if FStringsToWrite.Count > 0 then begin FDevice.GetServices; LClientSocket := FDevice.CreateClientSocket(FGUID, False); try LClientSocket.Connect; // if LClientSocket.Connected then begin TMonitor.Enter(FLock); LFailed := False; try for I := 0 to FStringsToWrite.Count - 1 do begin try LBytesToSend := TEncoding.UTF8.GetBytes(FStringsToWrite[I]); LClientSocket.SendData(LBytesToSend); if Assigned(FOnTextSent) then FOnTextSent(Self, FStringsToWrite[I], FName); except LFailed := True; Break; end; end; if not LFailed then FStringsToWrite.Clear else if Assigned(FOnTextSent) then FOnTextSent(Self, FStringsToWrite[I] + ' "failed to send"', FName); finally TMonitor.Exit(FLock); end; end; finally LClientSocket.Close; FreeAndNil(LClientSocket); end; end; Sleep(500); end; end;
----------------------------------------------
-