Leaderboard
Popular Content
Showing content with the highest reputation on 12/23/20 in all areas
-
ANN: Parnassus Parallel Debugger
dummzeuch replied to Dave Millington (personal)'s topic in Delphi Third-Party
I second that, but as always I would prefer text + screen shots over a video because it's searchable and I can easily jump between the parts that are currently important for me. -
A new IDE plugin aimed at helped debugging multithreaded apps! https://blogs.embarcadero.com/new-ide-plugin-parnassus-parallel-debugger/ The plugin: Displays all thread call stacks next to each other Lets you step over, run, etc a thread by itself, not the whole process Shows CPU usage by thread Editor integration to see where threads are executing, so you can easily see what other threads are in the same area of code and more... This has taken me five years to write! That said, most of that was downtime due to working too much time to spend time on this - this release is the result of working weekends since August. It's version 1, and I plan to add some more features over the next few months.
-
ICS V8.65 has been released at: http://wiki.overbyte.eu/wiki/index.php/ICS_Download ICS is a free internet component library for Delphi 7, 2006 to 2010, XE to XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio and 10.4 Sydney, and C++ Builder 2006 to XE3, 10.2 Tokyo, 10.3 Rio and 10.4 Sydney. ICS supports VCL and FMX, Win32, Win64 and MacOS 32-bit targets. The distribution zip includes the latest OpenSSL 1.1.1i win32, with other versions of OpenSSL being available from the download page. Major Changes in ICS V8.65 include: 1 - The ReadMe8.txt file has a new 'Getting Started with ICS' section listing the types of projects ICS may be used for, and suggesting the correct components to use, and their related sample applications for testing. This is recommended reading for anyone doing new ICS development since it discusses all the new high level components like TSslHttpRest added in the last few years which can reduce development effort considerably. It may also be viewed at: http://wiki.overbyte.eu/wiki/index.php/ICS_Getting_Started 2 - Added new TIcsRestEmail component that provides basic support for Google and Microsoft Outlook email REST APIs including OAuth2 login and refresh to get an access token for SMTP and POP3 XOAuth2 and 0AuthBearer authentication. TIcsRestEmail has methods to send and read email, to list IDs in a mailbox, read headers and message bodies by ID, send emails and delete emails. 3 - The SMPT, POP3 and MailQueue samples all now support XOAuth2 and 0AuthBearer authentication using the TIcsRestEmail component. The low level component call an event to get the authentication access token, which is provided by IcsRestEmail, together with a refresh token which is saved instead of a password. 4 - To access email using REST APIs or OAuth2/SMTP/POP3 an 'application account' needs to be created though the Google or Microsoft provider console. 5 - Added a new TIcsTwitter component and sample, requires a developer account from Twitter. Includes login to Twitter, send tweet, search tweets and get specific tweets, all responses are Json which the application needs to untangle. 6 - Improved TRestParams allowing them to save more Delphi types correctly without conversion to strings, and to save parameters in new formats. 7 - There are various OAuth2 improvements to make it easier to implement. Added several TOAuthUri records designed to set-up common OAuth2 account settings for providers like Google, Twitter, Microsoft and Sipgate, by using the LoadAuthUri method. 8 - TSimpleWebSrv continues to get less simple, it has aWebSrvIP2 property for a second address so it can listen on IPv4 and IPv6 at the same time, with and without SSL if necessary. Setting WebSrvIP to localhost sets both 127.0.0.1 and [::1] so the browser OAuth2 redirect can choose IPv4 or IPv6. 9 - Made some improvements to SuperObject, used for Json creation and parsing. When parsing Json there are new functions that return a sensible error message about parse errors and the location. There is a new object type DateTime or DT which reads or writes TDateTime to avoid the application needing to do the ISO string conversion. Json can now be parsed to a depth of 64 levels. 10 - Rewrote and improved the way ICS reads SSL/TLS certificates and bundles, simplifying code that has got partly duplicated over the years as new methods were added, and improving error handling so the infamous stack error should no longer appear, instead more useful messages. All certificate files are now written with the UTF8 character set for the added comments that may include non-ASCII characters. 11 - All the ICS root bundles are now created cleanly by an application, rather than mostly manually by copy and editing, to reduce errors. This fixed four corrupted root certificates in the older bundles, see http://wiki.overbyte.eu/wiki/index.php/FAQ_SSL/TLS_Certificate_Authority_Root_Stores 12 - Previously the Jose unit offered functions primarily for client JWS/JWT REST applications, it now includes extra functions for REST servers to check and verify the JWS/JWT sent by clients. The Jose sample application has new tests for JWS/JWT, and to parse and display Json. 13 - Added a new Multi Host FTP Server sample using IcsHosts. Really designed to be a Windows service application. It supports multiple SSL hosts with multiple listeners, can order it's own SSL certificates and will create self signed certificates for any missing, and will email status information and errors to an administrator. 14 - Fixed a long term external SSL session cache issue in some components and samples that meant if an SSL handshake fails due to a bad certificate or chain, it is necessary to remove the SSL session from cache so an immediate retry does not succeed by skipping the certificate checks. This is only a short term issue, because the cache is usually cleared after a few minutes. This will effect any client applications using the external SSL session cache including HTTPS. 15 - Increased the TCP send and receive buffer size to 64K in all components and samples, and generally don't allow it to be set lower. Unfortunately the default buffer size never kept up with faster internet speeds which meant some components transferred data slowly. 16 - Made some improvements ordering SSL/TLS certificates. Made Windows Server DNS updating using WMI more robust so wild card Acme orders work reliably. 17 - Made some internal changes loading OpenSSL, to avoid the two DLLs being loaded from different directories and to give better exceptions if they are missing. More detailed release notes are at: http://wiki.overbyte.eu/wiki/index.php/ICS_V8.65
-
After reading Python documentation I do not understand, how it can work in Delphi. Move _stream := TMemoryStream.Create(); try _stream.Write(P^, Len); _stream.Position := 0; Image1.Picture.Graphic.LoadFromStream(_stream); finally _stream.Free; end; before finally Py_XDECREF(pResult); end; P will be reference to internal buffer in pResult and Py_XDECREF(pResult); frees that memory.
-
ways to organize related code in a form?
Pat Foley replied to David Schwartz's topic in General Help
Again thanks, It very big of you to point it out and share. Its odd to just listen first for a change. -
ANN: Parnassus Parallel Debugger
Dave Millington (personal) replied to Dave Millington (personal)'s topic in Delphi Third-Party
With this plugin, it will still pause in the same place (it won't wait for execution to move) but if there is a call stack entry which is in your source, which calls the code that is in, eg, Windows, it will show you that line. Ie it tries to show you the bit of your app you have control over when you pause. This plugin handles this too - unless there is a reason to pause and make a non-main-thread thread the current thread (eg an exception was thrown in a thread) then when you pause, it will show you the main thread by default. You can control this: it's called the 'thread of interest', which is the thread that will become the current thread when the process is paused. It just defaults to the main thread if it hasn't been set another way. Each thread's call stack has its own pause button, and clicking that makes that thread the thread of interest when pausing - ie, the function is "pause in this thread". Super, super cool. I agree, difficult to implement. I can think of a couple of ways - run until return in a loop, until the top call stack entry is in your source; or examining the stack and placing a breakpoint where it returns (hard, because you have to figure out where it will return to, ie the next instruction.) It is worth thought. Thanks for the suggestion. -
ways to organize related code in a form?
Mike Torrettinni replied to David Schwartz's topic in General Help
It's fascinating how many kids go through forced medication for false diagnosis. You, luckily, escaped it 🙂 -
HelpViewer implementation for the eWriter online help format
Alexander Halser posted a topic in Delphi Third-Party
This is an implementation of the eWriter help format as a replacement for HTML Help (.chm) files in Delphi applications. EWriter eBooks are the modern alternative to the obsolete CHM format for local application help. They offer full support for context-sensitive help and file links. They combine the benefits of CHM and WebHelp and eliminate the disadvantages of both. To create eWriter eBooks, you can either use our freeware HTML compiler eWriter Creator or our commercial help authoring tool Help+Manual, which creates this format out of the box. The package includes the unit Vcl.EwriterHelpViewer.pas which implements support for the eWriter help format in Delphi’s help system. Applications currently using CHM files for application help can switch to eWriter help with basically no changes. The distributable eWriter viewer is included. The package is available from the download link below and from the GetIt Package Manager. Alternative download link: https://www.helpandmanual.com/downloads_delphi.html Compatiblity: Delphi XE upwards Alexander Halser EC Software GmbH www.helpandmanual.com -
"natural" compare function for sort
Uwe Raabe replied to Tommi Prami's topic in Algorithms, Data Structures and Class Design
TStringHelper.Compare has an overload where you can give the option TCompareOption.coDigitAsNumbers for this purpose. -
"natural" compare function for sort
FPiette replied to Tommi Prami's topic in Algorithms, Data Structures and Class Design
Look there: https://stackoverflow.com/questions/5134712/how-to-get-the-sort-order-in-delphi-as-in-windows-explorer -
ANN: Parnassus Parallel Debugger
mvanrijnen replied to Dave Millington (personal)'s topic in Delphi Third-Party
Looks good so far, sometimes a liitle bit slow with repainting the windows, but very usefull! That there are some issues matches the host application 🙂