Jump to content

c0d3r

Members
  • Content Count

    129
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by c0d3r

  1. HI, All I'm getting a strange issue, the following codes were trying logout users when Windows is going to sleep mode. For some reason, it works for some laptops, but it doesn't work for others: procedure WMPowerBroadCast(var Msg: TMessage); message WM_POWERBROADCAST; procedure TMainForm.WMPowerBroadCast(var Msg: TMessage); begin if (Msg.wParam = PBT_APMSUSPEND) or (Msg.wParam = PBT_APMSTANDBY) then begin try Signout; except end; Msg.Result := 1; end; end; Got the report from my client, the signout routine didn't get called when some laptops went to sleep (leave them opened and auto entered Sleep mode or Hitting Power button to force sleeping), but other laptops/PCs were working just fine.
  2. Something must be changed, was told it was working just fine on the same computer, and then stop working. They are using Windows 10.
  3. Works for some, won't work for others (not only 1), and they are on Windows 10
  4. The WM_POWER message is obsolete. It is provided only for compatibility with 16-bit Windows-based applications. Applications should use the WM_POWERBROADCAST message.
  5. HI, All Using Delphi 10.4.2, just wondering if TCompressionStream and TDecompressionStream in System.Zlib unit thread safe or not? Thanks.
  6. Thanks, I meant thread-personal instances, no shared streams.
  7. During last whole week, I tried to find what could be possible to cause my Windows service timeout while calling TidTCPServer.Active := False, I'm using Delphi 10.4.1, codes were working fine in Delphi 2007 with Indy 9+ until we migrated to 10.4.1: procedure TMyService.OnStop(...) begin TransportServer.Close ; <-- Error 1053 occurs. end; TransportServer is a type of TkbmMWTCPIPIndyServerTransport, the Close method internally was just calling TidTCPServer.Active := False; I can't figure it out because if i don't stop the service, it would serves the client requests/responses without any issue for weeks until at the point the users want to stop the service.
  8. @Remy LebeauAlthough we still can't figure it out after weeks (we don't deal with any TCP/IP socket codes), we found a workaround: kbmMW's Server component has a property called 'DisconnectAfterResponse'. By setting it to True, Most of our clinic customers don't have any TCP/IP socket close freezing issues, however few were still having the problem, they were the large and busiest clinics. We are planning to use Indy Github version to see if it helps, I'm just wondering whats difference between GitHub version and the one comes with Sydeny?
  9. c0d3r

    [firebird] Converting DB from one charset to other

    Here you go, this is how I did exactly what you wanted: https://github.com/zedalaye/fbclone
  10. Anyone has the same problem? Delphi 10.4.2, Press Ctrl+Shift+F on any word, Find in Files screen pops up, After a bit frozne, crashed the IDE. The workaround I can only found is that: It works fine after disabling Refactor menu.
  11. c0d3r

    Delphi 10.4.2 first impressions

    Another problem (Error Insight): ds is inherited from TDataset. The wave warning: 'Txxxxxxx does not contain a member named: 'FieldByName'/'Open'/'Free'.
  12. c0d3r

    Annoying IDE behavior changes in 10.4.2

    I can confirm all as well, went back to Classic, don't see why I should use LSP.
  13. c0d3r

    Object Inspector issue in 10.4.2??

    No issue on VMWare 16.1.0, Win10, 4K, 100%, Delphi 10.4.2
  14. c0d3r

    Delphi 10.4.2 first impressions

    It said the problem would occurs when using offline installer, but I was using web installer, still my 64bit LIBRARY (Windows) paths were wiped out.
  15. c0d3r

    WM_CHANGEUISTATE

    I saw the code in Delphi 10.4.2, but I don't see any forms flickering in Window 10.
  16. Yeah, all my win64 component paths were wiped out. Luckily, I had backup the registry before upgrade, so re-import the registry solves.
  17. @Remy Lebeau I would like to give the codes, but I'm not allow to, they are kbmMW codes, all socket threads related things are done by kbmMW components internally. What we did was just wrote codes in one of its OnRequest event handler to deal with client request by the given request name, and set the return Result. For each request, We made 100% sure to have try--finally--end blocks to have objects created get freed properly, each LockList to has a matched UnlockList to access thread string lists, ..., etc. Anyway, Thanks for your time to anwser all my questions, really appreciated! The codes in ProcessRequest event: @ServiceMethod := MethodAddress(AClientRequestName); if Assigned(ServiceMethod) then begin Result := ServiceMethod(Self, ClientIdent, Args); Handled := True; end; This one of the request codes we wrote (in published section): function TMyService.GetSequenceValue(const ClientIdent: TkbmMWClientIdentity; const Args: array of Variant): Variant; var ds: TkbmMWDataset; SeqName, Step: string; SeqList: TStringList; i: Integer; begin Result := -1; if not PrepareQuery(SEQUENCE_GETVALUE, ds) then Exit; try SeqName := VarToStr(Args[0]); Step := VarToStr(Args[1]); SeqList := FSequences.LockList; try i := SeqList.IndexOfName(SeqName); if i < 0 then Exit; SeqName := SeqList.ValueFromIndex[i]; finally FSequences.UnlockList; end; ds.Query.Text := Format(ds.Query.Text, [SeqName, Step]); ds.Open; if not ds.Eof then Result := ds.FieldByName('ID').AsInteger; finally ds.Free; end; end;
  18. @Remy Lebeau Thanks, I totally agree it. just not sure how to find. Any workarounds we can do? Is there any properties/methods in TidTCPServer that can let all these socket threads being terminated gracefully before calling FSocket.Active := False;
  19. Sorry, I didn't make it clear. its the kbmMWTCPIPIndyServerTransport that use its FSocket: TidTCPServer, to handle everything using some private/protected/public methods, including Execute event. e.g. TransportServer.Listen -> FSocket.Active := True; TransportServer.Close -> FSocket.Active := False;
  20. No Disconnect/StopListen method, only Listen and Close, and the codes were there for 10+ years since 2007, people who use our old app (built with Delphi 2007, Indy 9) are still working great. Its those people who upgraded to our new app (built with Delphi 10.4.1, Indy 10) are having the issue.
×