Posts

Threads in Delphi Applications.

Threads in Delphi Applications. I created an Empty Console application and in the Debugger I can see that 5 threads are running, all created before the first statement of the program. I then created an empty Vcl application and when the main form shows another 5 threads appear running, a total of 10 threads. Debugging does not show any thread creation except for 1 thread related to font handling. Does anybody knows what all these threads are doing?

Hi again ... with regards to my FireDac / DataSnap / FireBird question from earlier, I've done some testing and found that the problem seems to be happening when the DataSnap server is applying the updates and that one is not sending back the new field values to the client.

Hi again ... with regards to my FireDac / DataSnap / FireBird question from earlier, I've done some testing and found that the problem seems to be happening when the DataSnap server is applying the updates and that one is not sending back the new field values to the client. I did make a little sample project which shows 3 ways of working. First one is a simple TFDQuery with Insert / Post. After every post the new values appear correctly in the DataSet. Second one is a similar approach but this time we use Cached Updates on the TFDQuery. All records appear with a negative value for the ID field, but things get fixed when you ApplyUpdates. Once you do that ... all new records get their new values for the ID field automagically ... Now the FireDac DataSnap way of working. Data is fetched into a TFDMemTable by calling a method on a Server Module. Updates are done in the TFDMemTable and applied back to the server using another method. In the database they appear correctly ... but my que...

Moving to Windows Active Directory - gotchas?

Moving to Windows Active Directory - gotchas? Hello all, our IT department is moving all standalone Windows accounts to Active Directory. Our developers (of which I'm one) often work offline/offsite so we need to be able to work within and outside of the domain; I guess that means that we'll have two accounts each (one domain, one "regular"). I would be grateful if developers working under similar constellations would share their insight. Are there any gotchas? Do I need to re-register my Delphi versions? If I install components, are they available to all accounts on my PC or do I need to tweak any paths ?

The podcast is starting NOW! Live with several of us here at Embarcadero, all in one office!

The podcast is starting NOW! Live with several of us here at Embarcadero, all in one office! https://www.youtube.com/watch?v=sIaSADq5Bb0 https://www.youtube.com/watch?v=sIaSADq5Bb0

Question about FireDac / DataSnap / FireBird and Identity Fields.

Question about FireDac / DataSnap / FireBird and Identity Fields. I've been trying out a lot of things by now and I just cannot seem to get this working the way it should. I have a DataSnap server where I have a TFDQuery which I use to fetch / edit / add a single record in the CUSTOMERS table. The ID field in that TFDQuery is an Identity field in the underlying FireBird database and it gets recognised by delphi when I add a persistent field (it adds a TFDAutoIncField). I did add TFDUpdateSQL component to the mix in which I've set up the INSERT statement to be RERTURNING the ID Field. Client side I have TFDMemTables whith CachedUpdates, and I even set the AutoIncFields and KeyFields to 'ID'. Now ... when I edit / delete / add records through that dataset, they seem to be getting into the database correctly. As long as the record isn't posted, the ID field has a negative value. But once posted I find my record in my database with the correct ID field value. What I wou...

Join us today at 1:30 PM CDT [https://buff.

Join us today at 1:30 PM CDT [ https://buff.ly/2q2bWEo ] LIVE! on YouTube from the Embarcadero Austin office. https://buff.ly/2q05td2 https://buff.ly/2q05td2

Join us today at 1:30 PM CDT [https://buff.ly/2q2bWEo] LIVE! on YouTube from the Embarcadero Austin office. https://buff.ly/2q05td2

Join us today at 1:30 PM CDT [ https://buff.ly/2q2bWEo ] LIVE! on YouTube from the Embarcadero Austin office. https://buff.ly/2q05td2 https://buff.ly/2q05td2

3rd blog article around the Pascal/Delphi language is here!! Brought by Marcos Douglas B. Santos for tmssoftware.com : "Object Pascal: Redefining Classes"

3rd blog article around the Pascal/Delphi language is here!! Brought by Marcos Douglas B. Santos for tmssoftware.com : "Object Pascal: Redefining Classes" https://www.tmssoftware.com/site/blog.asp?post=448 https://www.tmssoftware.com/site/blog.asp?post=448

I am currently trying to address a couple of the remaining High DPI issues of the VCL in Delphi 10.2.3. As the test field is pretty wide I can only test for a fraction of the combinations. Thus I am looking for some testers with non-standard DPI layouts (i.e. at least one monitor set to something different than 100%).

I am currently trying to address a couple of the remaining High DPI issues of the VCL in Delphi 10.2.3. As the test field is pretty wide I can only test for a fraction of the combinations. Thus I am looking for some testers with non-standard DPI layouts (i.e. at least one monitor set to something different than 100%). The program to test comes in two flavors: One reference compiled with the standard VCL and HighDPI enabled in the project setting and the actual test version with my changes to the VCL code and a tweaked manifest. Testing requires to start the program and if available drag to a monitor with another DPI and back. The testing version should look more or less the same while the reference version will most likely show some problems. I am interested in any problems with the testing version. Unfortunately I can only provide a compiled exe and the sources of the project, but not the changes I made to the VCL (due to legal restrictions). So you better trust me here 😇. https://dr...

Oh well ...

Oh well ... https://tech.slashdot.org/story/18/03/27/1458204/oracle-wins-revival-of-billion-dollar-case-against-google ... will Android now be C-ified? https://tech.slashdot.org/story/18/03/27/1458204/oracle-wins-revival-of-billion-dollar-case-against-google

Originally shared by Jeroen Wiert Pluimers

Originally shared by Jeroen Wiert Pluimers Keeping compiler development teams busy: https://www.bloomberg.com/news/articles/2018-04-02/apple-plans-to-move-from-intel-to-own-mac-chips-from-2020?utm_campaign=socialflow-organic https://www.bloomberg.com/news/articles/2018-04-02/apple-plans-to-move-from-intel-to-own-mac-chips-from-2020?utm_campaign=socialflow-organic

Visualizing binary data, and how to debug.

Visualizing binary data, and how to debug. http://c4d.asuscomm.com/wordpress/2018/04/02/kbmmw-binary-parser-2/

I need some help from more experienced people to understand how reporting tools work.

I need some help from more experienced people to understand how reporting tools work. I downloaded FastReports but I suppose the logic is the same with other tools and I created some reports based on clientdatasets. Say I have two tables in a database T1 and T2. T1 has a one-to-many relationship with T2. Based on what I read, I create clientdatasets for T1 and T2, link the datasets together and supply them to the report. All works fine up to this point. At this stage, I've got two questions: 1. If I now have another table T3 which relates to T2, then I need to supply a new instance of clientdataset for T2 because of the relationship with T3, right? So, I end up with multiple datasets for T2 but with different links 2. I want the user to be able to create their own reports. If (1) is true, this means that I need to provide all the multiple instances available. This means that the user needs to have a significant knowledge of the database. Is this how it works? Shouldn't all the ...

Work on updating FM styles continues.

Image
Work on updating FM styles continues. Updated 5 more styles with new "tintedbutton" and "optionstoolbutton" objects for all platforms (Windows, macOS, iOS, Android and Linux): - "Stellar" https://www.delphistyles.com/fmx/Stellar.html - "Clear Gulf Stream" https://www.delphistyles.com/fmx/ClearGulfStream.html - "Regal Blue Clear" https://www.delphistyles.com/fmx/RegalBlueClear.html - "Material White Smoke" https://www.delphistyles.com/fmx/MaterialWhiteSmoke.html - "Material Oxford Blue" https://www.delphistyles.com/fmx/MaterialOxfordBlue.html

I recently downloaded and installed the Starter edition of Delphi, and I was going through one of the tutorials, "Using the IDE" (http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Tutorial:_Using_the_IDE) and ran into a few problems compiling it. I get the following errors:

I recently downloaded and installed the Starter edition of Delphi, and I was going through one of the tutorials, "Using the IDE" ( http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Tutorial:_Using_the_IDE ) and ran into a few problems compiling it. I get the following errors: [dcc32 Error] TextEditorUnit.pas(97): E2003 Undeclared identifier: 'TDeleteOption' [dcc32 Error] TextEditorUnit.pas(97): E2029 ']' expected but identifier 'MoveCaret' found [dcc32 Error] TextEditorUnit.pas(131): E2003 Undeclared identifier: 'TDialogServiceSync' [dcc32 Error] TextEditorUnit.pas(131): E2066 Missing operator or semicolon [dcc32 Error] TextEditorUnit.pas(184): E2003 Undeclared identifier: 'TDialogServiceSync' [dcc32 Error] TextEditorUnit.pas(184): E2066 Missing operator or semicolon [dcc32 Fatal Error] TextEditor.dpr(6): F2063 Could not compile used unit 'TextEditorUnit.pas' I've double-checked the spelling and I don't see any typos, it...

Platforms and Extension Manager Missing

Image
Platforms and Extension Manager Missing I came across another oddity after upgrading to Delphi 10.2.3. The Platforms and Extension Manager Missing option on the Welcome Page is missing. It's supposed to be listed underneath the Expand and Extend section. I installed all platforms except Delphi Linux 64-bit Enterprise. I Installed from the ISO. Does anyone else have this issue? Is there an alternate way to launch the Platforms and Extensions Manager?
Title

The handle exception in Delphi is completely inconsistent.

The handle exception in Delphi is completely inconsistent. There are two variables in system.classes: ApplicationHandleException: procedure (sender: TObject) object = nil; ApplicationShowException: procedure (E: Exception) object = nil; In help writen: Specifies the procedure that is called for the exception processing. Determines the type of function that is responsible for handling with the exception of E. and Specifies the procedure that is called when an exception is made. Determines the type of function that is responsible for displaying the exception E. If the other methods is assigned to this vars, It das not works. Delphi still call methods HandleException and ShowException from TApplication class in VCL.Forms and FMX.Forms. Resons: 1. in lot of place in exception part delphi still direct call TApplication.HandleException. 2 in lot of place is add call ApplicaitionHandleException but also in inconsistent way 3. in TApplication.Run method of VCL.Forms and FMX.Forms delphi direct...

Originally shared by Castle Game Engine

Originally shared by Castle Game Engine We are now officially Embarcadero Technology Partner! What this means, in simple terms, is that Michalis has full access to the latest Delphi version, with all the Delphi platforms (including Android and iOS), for free. This should be great news for… http://castle-engine.io/wp/2018/04/01/castle-game-engine-is-now-embarcadero-technology-partner/

Delphi 10.2.3: Tools > Options Click OK = Script Error

Image
Delphi 10.2.3: Tools > Options Click OK = Script Error I have another weird situation with Delphi 10.2.3. Anytime I open up the options and click OK I get a popup screen telling me there is a Script Error. How to produce the error: Click Tools > Option then click the OK button. It does not happen when I click the Cancel button. Has anyone ever seen this behavior?

...waiting for the englisch version

...waiting for the englisch version Originally shared by Yaroslav Brovin FGX native webinar. New crossplatform mobile native library for Delphi. https://youtu.be/iYaECY1DHZo

Konopka VCL Controls Loaded but GetIt Does Not Show as Installed

Konopka VCL Controls Loaded but GetIt Does Not Show as Installed I just upgraded to Delphi 10.2 Version 25.0.29039.2004. I used the GetIt Package Manager to install the Konopka VCL Controls. It told me that Rad Studio would need to be relaunched after the install. I clicked YES. It did the install and it hung after the component install window closed. The only way I could get out of GetIt Package Manager and Delphi was to end task from Task Manager. When I start Delphi 10.2 it tells me that the Konopka VCL Controls are loaded. However, when I load the "Installed" packages from GetIt Package Manager it does not show the Konopka VCL Controls as loaded. I've tried removing the packages from the IDE and re-installing and it hangs every time at the same step. Has anyone experienced this behavior? Is there a way to inform GetIt that a package is installed?

Hi, I've just checked in first revision of CrossVcl TWebView component. It is cross-platform web browser based on native web arch on each platform. It is very simple yet, but works and also it shows how to create custom-native controls for CrossVcl.

Image
Hi, I've just checked in first revision of CrossVcl TWebView component. It is cross-platform web browser based on native web arch on each platform. It is very simple yet, but works and also it shows how to create custom-native controls for CrossVcl. https://github.com/eugenekryukov/crosswebview P.S. There are only few hours when our 20% discount will expire.

There's a language enhancement I'd like to see in Delphi, but I'm not sure what exactly it is.

There's a language enhancement I'd like to see in Delphi, but I'm not sure what exactly it is. I can only point to where it shows up as a missing for me. Feel free to comment on what it is that I seem unable to point to directly. Perhaps it even has some kind of name; I really don't know. I was writing a bit of code where I needed to create a couple of methods that everybody runs into now and then: LoadXxxxFromYyyy and SaveXxxxToYyyy. Xxxx is usually an object of some kind and Yyyy is some kind of container object like a File, Stream, Ini, Form, Cache, Buffer, ... whatever. We've all written plenty of these, right? Now, since Xxxx is usually an object, the things that are being copied out and in are typically PROPERTIES -- and usually Public or Published properties at that. What I'd LIKE to see is the ability to write a single bi-directional copy method like this: CopyEx( aVal1 : T1; aCollection : T2; dirFlg : Boolean ); Unfortunately, this is impossible today b...

There's a language enhancement I'd like to see in Delphi, but I'm not sure what exactly it is. I can only point to where it shows up as a missing for me. Feel free to comment on what it is that I seem unable to point to directly. Perhaps it even has some kind of name; I really don't know.

There's a language enhancement I'd like to see in Delphi, but I'm not sure what exactly it is. I can only point to where it shows up as a missing for me. Feel free to comment on what it is that I seem unable to point to directly. Perhaps it even has some kind of name; I really don't know. I was writing a bit of code where I needed to create a couple of methods that everybody runs into now and then: LoadXxxxFromYyyy and SaveXxxxToYyyy. Xxxx is usually an object of some kind and Yyyy is some kind of container object like a File, Stream, Ini, Form, Cache, Buffer, ... whatever. We've all written plenty of these, right? Now, since Xxxx is usually an object, the things that are being copied out and in are typically PROPERTIES -- and usually Public or Published properties at that. What I'd LIKE to see is the ability to write a single bi-directional copy method like this: CopyEx( aVal1 : T1; aCollection : T2; dirFlg : Boolean ); Unfortunately, this is impossible today b...

Originally shared by Thomas Mueller (dummzeuch)

Originally shared by Thomas Mueller (dummzeuch) Starting with Delphi 2007 EmBorCodera switched to msbuild for the build system. The newly introduced .dproj file used since then is a valid build script for msbuild but unfortunately the format has changed between Delphi 2007 and 2009. This means that… http://blog.dummzeuch.de/2018/03/31/specifying-the-msbuild-configuration-for-a-delphi-project-on-the-commandline/

Originally shared by Thomas Mueller (dummzeuch)

Originally shared by Thomas Mueller (dummzeuch) Have you ever wondered which functions of GExperts you have used the most? Or how often at all? How much time it has saved you? Now you can find out: I just added Usage Statistics to GExperts which tells you exactly how often you have called each of the… http://blog.dummzeuch.de/2018/03/30/gexperts-usage-statistics/

Naming.

Naming. I am creating a command pattern hierarchy and one of the base classes is this: TDatabaseBoundCommand = class( TCommandBase ) strict protected function GetDataset : TD;virtual;abstract; function CommandSucceded( out MsgText : String ): Boolean;virtual;abstract; function Execute: TExecutionResult; override; property Dataset : TD read GetDataset; end; For perspective, TCommandBase implements this interface: TExecutionResult = ( erSuccess, erFail ); ICommand = interface ['{3A03CDCF-B9DB-46E7-8FBB-860DD909053B}'] function GetMessage: String; function Execute : TExecutionResult; property Message: String read GetMessage; end; In other words, it implements the message property and creates a virtual;abstract of the Execute method. My issue is that right now my TDatabaseBoundCommand class depends on TDataSet but I realised I want to jeep it flexible enough that - for example - a RemObjects or kbmMW client layer can be implemented, thus I nee...

TMS software collaborates with NexusDB

Image
TMS software collaborates with NexusDB (NexusDB v4.5) https://www.nexusdb.com/support/index.php Get TMS RemoteDB NOW: https://www.tmssoftware.com/site/remotedb.asp

Originally shared by Eivind Bakkestuen

Originally shared by Eivind Bakkestuen Ann: NexusDB v4.5 significant update - TMS RemoteDB support built in We are happy to announce that in collaboration with TMS, our newly released NexusDB v4.5 update adds built in support for the TMS RemoteDB library on the server side. The library is compiled into our standard server executable, which means that with the help of the TMS library, you can now use Rad Studio to create NexusDB database clients for Android, iOS and MacOSX in addition to the existing Windows support. And there is no need to recompile the server! Please note that NexusDB does not include the library in its distribution; TMS RemoteDB is a separate purchase from TMS. More info here: https://tmssoftware.com/site/remotedb.asp This release also has a number of other improvements. The full list of changes can be found at https://www.nexusdb.com/mantis/changelog_page.php Webshop here: https://www.nexusdb.com/support/index.php?q=pricing Our site: https://www.nexusdb.com Regards,...