Jump to content

Remy Lebeau

Members
  • Content Count

    2684
  • Joined

  • Last visited

  • Days Won

    113

Everything posted by Remy Lebeau

  1. Remy Lebeau

    Format a Float field text using another field value

    I would not use any global variable at all. The TField has access to the DataSet that owns the current record's fields, eg: Text := Format('%.*f', [Sender.DatSet.FieldByName('decimals').AsInteger, Extended(Sender.Value)]); Alternatively: Text := FloatToStrF(Sender.Value, ffFixed, 18, Sender.DatSet.FieldByName('decimals').AsInteger);
  2. Remy Lebeau

    mciSendCommand and MCI_WAIT...

    Perhaps the MCI_BREAK command can help you? CTRL+Break is the default for aborting am MCI wait operation, but you can specify a different key, or even disable breaking.
  3. EPSV is not limited to just IPv6, it can be used for IPv4 as well. But also, EPSV has another benefit even for IPv4 - it has a well-defined machine-parsable response text, whereas PASV does not. PASV responses are harder to parse since different servers use different formats for their reply text, and there are quite a few different formats in use in practice.
  4. That makes more sense. I just looked at the latest 9.3 source code, and no, I do not believe it does. For one thing, it is not checking if the server actually supports EPSV before sending that command. And second, it does not appear to switch to PASV when EPASV fails.
  5. What is "auto passive mode"? Do you mean "Active" mode? "Active" (server connects to client) and "Passive" (client connects to server) are the 2 modes defined by the FTP protocol, and "Active" is the default. "Active" mode is not friendly to NATs, which are commonly used nowadays, so it is best to just always use "Passive" mode only.
  6. That's the way I usually do it when I need an event handler without an object instance.
  7. Remy Lebeau

    Cannot pass a procedure to another

    In general, RTL types named TXXXMethod refer to non-static class methods, and TXXXProcedure types refer to anonymous procedures.
  8. Remy Lebeau

    Visible Application List

    Try using PROCESS_QUERY_LIMITED_INFORMATION instead. And do try using GetProcessImageFileName() or QueryFullProcessImageName() instead of GetModuleFileNameEx(). This approach should be more compatible with elevated processes.
  9. You can't edit a post after some time has passed. And you can't delete a post, but you can flag a post and ask a moderator to delete it for you.
  10. Remy Lebeau

    Visible Application List

    What exactly have you tried that is not working for you? Please show some code. Which API are you using to enumerate running processes? CreateToolhelp32Snapshot(), EnumProcesses(), EnumWindows()? Have you tried APIs like GetModuleFileNameEx(), GetProcessImageFileName(), QueryFullProcessImageName()?
  11. Remy Lebeau

    Delete First & Last Character

    The SysUtils unit in Delphi's RTL has AnsiDequotedStr() and AnsiExtractQuotedStr() functions for that exact purpose.
  12. Winsock error 10014 is WSAEFAULT. I don't know ICS's internals, but presumably fSender.ReceiveFrom() calls Winsock's recvfrom() function, whose documentation says: Your lFromLen variable is uninitialized, so your code is passing an indeterminate value to recvfrom() which exhibits undefined behavior. Sometimes the value is too small, sometimes it is not. You need to initialize your lFromLen variable to specify the size of your lFromSock variable before calling fSender.ReceiveFrom(). On a side note: you are treating lCount=0 as an error condition, but it is not. Unlike TCP, UDP messages can be 0 bytes in size. You should be calling WSAGetLastError() only if lCount is SOCKET_ERROR (-1).
  13. Remy Lebeau

    ShowModal on a form makes it maximized for some reason

    Does the host application display any UI windows of its own before the DLL's VCL form is displayed? If not, then does GetStartupInfo() report that the 1st window shown should be maximized?
  14. Remy Lebeau

    Sending Email VIA Google.

    All of the major OAuth providers - Google, Microsoft, etc - should have full documentation about their workflows.
  15. Remy Lebeau

    Simplified "Attach to Process" debugging

    When I debug a service, I simply run the service normally in the SCM, and have its OnStart event pause execution until the debugger is attached.
  16. Remy Lebeau

    Sending Email VIA Google.

    Geoffrey's demo uses Indy's TIdSMTP component to send email with an OAuth2 token. Indy has a TIdHTTPServer component (or TIdSimpleServer if you don't need a full-blown HTTP server).
  17. Windows has enough resources to run thousands of threads in parallel. 10 is nothing. So something else is likely causing the error. The Scheduler manages only threads that it creates. It can't manage threads created by TIdThreadComponent. But again, the Scheduler doesn't limit threads that are running, only threads that are idle. When the Scheduler needs a thread, it pulls one from the pool if available, otherwise it creates a new one. When a thread is finished, it is put in the pool if there is room for it, otherwise it is terminated.
  18. I don't really understand what you're trying to do. But the Scheduler components are not intended to be used standalone, they are meant to be used with TIdTCPServer and derived components. That being said, the pool size only effects the number of threads that are sitting idle in the pool. Not the number of threads that are actively running.
  19. Remy Lebeau

    Sending Email VIA Google.

    Why are you connecting to localhost? What exact steps are you doing to reach this error? What API are you using to access Google?
  20. Remy Lebeau

    Help!

    DPKs for Delphi 7 are available in Indy's GitHub repo: https://github.com/IndySockets/Indy You have to compile the DPKs yourself to get BPLs, Indy does not provide pre-compiled DCUs/BPLs: https://github.com/IndySockets/Indy/wiki/Updating-Indy OpenSSL DLLs that are compatible with Indy are available in Indy's GitHub repo: https://github.com/IndySockets/OpenSSL-Binaries Indy 10 currently supports up to OpenSSL 1.0.2u (but support for 3.x is in the works).
  21. Remy Lebeau

    OAauthV2 on Android or iOS Is there example?

    Again, in what context, exactly? Indy recently got some new SASL components for OAuth authentication for SMTP/POP3/IMAP. There is no direct OAuth support for HTTP at this time, though. In general, you are responsible for implementing OAuth protocols yourself depending on your chosen OAuth provider. But once you have a login token, there are ways to use it with Indy. Can you provide more detail about your specific use-case?
  22. Remy Lebeau

    Android. FileUriExposedException: file:///

    If it is not already in one of the RTL's 'Androidapi.*.pas' units (did you try grepping for it?), then you'll have to import it manually using Java2Op or similar tool, or use a 3rd party unit that imports it (like this one). Also, this statement: StringToJString('com.embarcadero.EMail.fileprovider') should be this instead: StringToJString(JStringToString(TAndroidHelper.Context.getApplicationContext.getPackageName) + '.fileprovider')
  23. Remy Lebeau

    12.3 or 13/14 as next?

    Anyone who would have such info would be under an NDA not to discuss it until Embarcadero announced it publicly first.
  24. Remy Lebeau

    Multi-Threading Example Code

    Did you read the documentation yet? Writing Multithreaded Applications Simply get rid of the @ symbol, pass the method by name only. Synchronize(UpdateUI); // Update UI safely from the main thread
  25. Remy Lebeau

    Multi-Threading Example Code

    The non-static Synchronize() method has always been protected. That is perfectly fine when calling it from within the thread's Execute() or DoTerminate() methods. There are also static Synchronize() methods available which are public and can be called outside of a TThread object. This is not a VCL vs FMX issue, since TThread is common to both of them.
×