-
Content Count
348 -
Joined
-
Last visited
-
Days Won
5
Everything posted by Roger Cigol
-
Form still on display when property Visible = false
Roger Cigol replied to Roger Cigol's topic in General Help
I am not certain that I've single stepped into the VCL code before. But it doesn't seem to be working. Can anyone advise what I am missing, please? I have set project | options | Delphi compiler | compiling | use debug .dcus to true (all the options in this "debug" section are set to true or to their highest level) I have done a project "clean" I have compiled (ie full build) the Clang64 code with "debug" settings. When I run the code (under the IDE) it does stop at breakpoints ok. I wait for my code to get to the "faulty" state (ie with the form on the screen and Visible property set to false). I hit my recently added extra button and it breaks at my break point in the OnClick event handler ok. I can confirm that the "this" value matches the displayed value on my form. The event handler has the single line of code: Hide(); I now try to single step INTO this function and it just jumps over to the end of the event handler, rather than going into the VCL pascal which is what I was expecting (and wanting) it to do. -
Form still on display when property Visible = false
Roger Cigol replied to Roger Cigol's topic in General Help
Hi Remy - it's a 64 bit app - but other than that your advice is (as always) a good idea of what to try next. Thank you. I already have another "debug aid" button who's on click handler calls Hide() - and this doesn't cause the form to go away in this fault condition (it does "hide" it (ie make it non-visible) when i click on it when it is all working and expected to be visible)). This will provide a convenient entry point for the stepping as you describe. Might be a challenge to follow the thing through but I'll give it a go. -
Form still on display when property Visible = false
Roger Cigol replied to Roger Cigol's topic in General Help
Hi Brian, A good point (and accurate). But I think I am happy that this is not the problem because the same underlying message approach is used to update the form contents and on the "visible but Visible = false" form there is a tick counter being displayed (in TrashEdit->Text) and this IS seen to be updating. Also a debug aid button on the form works - in it's OnClick event I reset the trash counter to zero and this happens when I click it. I think this all means there is no block on the main VCL message loop. -
Form still on display when property Visible = false
Roger Cigol replied to Roger Cigol's topic in General Help
I have confirmed that the break point IS on the actual object being observed. void TTestStatusForm::DealWithState(void) { String IsVis = Visible ? String("Yes") : String("No"); Trash1Edit->Text = String(reinterpret_cast<__int64>(this)) + String(" Ex: ") + String(TrashExCounter) + String("Vis: ") + IsVis; if (!IsBusy) {// skip if still active from last tick IsBusy = true; try { DealWithStateMachine(); // !!! delete this ! int Trash = TrashEdit->Text.ToIntDef(0); Trash++; TrashEdit->Text = String(Trash); } catch (...) { // we don't want to lock up with IsBusy = true TrashEdit->Text = String(-999999); TrashExCounter++; } IsBusy = false; } } Trash1Edit is the blue box across the top of the screen shot. - DealWithState is called very 20ms (and the TrashEdit counter under the comment // !!! delete this is seen to be counting upwards). You can see that the status is showing that Visible = set to false and yet the form is still visible (hence I could do the screen shot). Note that the screen shot does not show the TrashEdit counter (this is off to the right) but this does count up. -
Form still on display when property Visible = false
Roger Cigol replied to Roger Cigol's topic in General Help
Hi Remy, Thanks for taking an interest here. You are right about limitation of code snippet but it's very difficult to give a "complete" example since I don't know what bits are required to make it "complete". Your guess is a very sensible lead. I think I need to add a display of the "this" address of the form - then I can check when I debug with a break point and confirm (or otherwise) that I am in the correct object. I will try to do this tomorrow. -
Or have two buttons in the same position on the screen and make only one visible at any one time....
-
Use of dynamic control names
Roger Cigol replied to Bart Verbakel's topic in Algorithms, Data Structures and Class Design
In C++ this is easy to do, provided you ensure that the five buttons are all in order in the header file for the form class. You then declare a pointer to the first button and then iterate through the series of buttons, incrementing the pointer each time until you reach the last button. Not sure of the equivalent in Delphi but I suspect there is one! I use this technique a lot. I listen to (and value) my learned colleagues advice here. It is correct. I have ran into this packing problem with structures / classes. This approach is "dodgy". As recommended below : need to create an array of pointers and iterate through this. Thanks to Remy and Sherlock for the benefit of their expertise. -
From a C++ perspective there are some really positive advances being talked about for version 12. But we wait to see (read the disclaimer) how much actually makes it into the official release. Delphi users may feel C++ is not important. I think the opposite. For the long term survival of the product Embarcadero must increase their customer base and having a good Firemonkey multidevice solution based on C++ is one obvious way to help achieve this.
-
Migrate an old app in Delphi 2009 to modren C++
Roger Cigol replied to Alkanium's topic in General Help
Hi Remy, I am interpreting "Delphi Units" to mean source code from the original Delphi project that Alkanium has been asked to convert to C++...... As always, what you say is correct. -
Migrate an old app in Delphi 2009 to modren C++
Roger Cigol replied to Alkanium's topic in General Help
What Brian Evans says is true for RAD Studio (where you have both C++ Builder and Delphi). If you only have C++ Builder version you cannot use Delphi units in your project (although it does, as he correctly states) still use Delphi for all the VCL RTL etc. -
Migrate an old app in Delphi 2009 to modren C++
Roger Cigol replied to Alkanium's topic in General Help
I'm not sure I totally agree here. Yes, if you use an automatic translation then old bugs will be converted to C++. But if you think whilst rewriting AND add unit testing for modules AND refactor if/when there are obvious weaknesses in the existing Delphi code structure then you can end up with a better system. But you need to be aware that it's a big task. -
Migrate an old app in Delphi 2009 to modren C++
Roger Cigol replied to Alkanium's topic in General Help
I don't know of anything that attempts to automatically translate delphi source code into C++. But Embarcadero RAD Studio C++ can use all the Embarcadero components that Delphi can use so if you use Embarcadero C++ you only have to (manually) translate the Delphi source codes specific to your project(s) into C++. I say "only" - this could still be a significantly complicated task. One bit of advice I always offer someone starting a new s/w project is to answer the question "how am I going to test it?" before you start. ("it" is both the overall project and each individual source code section). -
Embarcadero C++ Programmer for Engineering UK
Roger Cigol posted a topic in Job Opportunities / Coder for Hire
Anyone out there who is an Embarcadero C++ Programmer based in the UK (ideally SW England) with interest in engineering applications ? We could do with working with one (full time?) -
Behind the Build: RAD Studio and C++Builder 12.0 - Webinar Replay
Roger Cigol replied to stukelly1's topic in General Help
...But it is all very preliminary. Embarcadero state: "Please note that all comments and statements about potential new features are subject to change and should not be relied on until the GA release of a product is available." -
Embarcadero C++ Programmer for Engineering UK
Roger Cigol replied to Roger Cigol's topic in Job Opportunities / Coder for Hire
...or very few Embarcadero C++ are using Delphi Praxis -
Behind the Build: RAD Studio and C++Builder 12.0 - Webinar Replay
Roger Cigol replied to stukelly1's topic in General Help
Once this is up and running C++ builder may "come alive" again. I am cautiously optimistic ! -
Where is the link to register to the forum?
Roger Cigol replied to FPiette's topic in Community Management
Count me in as a volunteer too, if needed. -
Where is the link to register to the forum?
Roger Cigol replied to FPiette's topic in Community Management
This problem is always going to be with us. But we do need to keep the forum open. New members = new blood = new ideas. Without new members the forum has signed it's own death warrant (even if it is a slow death). -
Are local TGUIDS preinitialized?
Roger Cigol replied to Attila Kovacs's topic in RTL and Delphi Object Pascal
Writing a compiler is VERY complex. Speaking as someone who doesn't write compilers, I myself would be cautious about criticising my colleagues in the industry who do, particularly when given an explanation that does make some kind of sense (as in this discussion). I certainly agree with @Dalija Prasnikar there is nothing worse than a compiler warning that is wrong. It is hard to make them "go away" and they definitely can "hide" other useful warnings. -
How to open Firebird 3 Database in FireDAC Delphi 11 (64Bit)
Roger Cigol replied to Blavatsky's topic in Databases
The use of a 64 bit application talking to a 64 bit database is the one time I've found where the IDE being a 32bit app is a real pain. What it means is you can't use the same database settings for design time as you use for run time (and doing so is a really convenient feature when you develop 32 bit apps). I work on a large PostgreSQL project and PostgreSQL is only available as a 64bit database (and has been so for a long while - you have to go back several versions to get a 32 bit version). I just accept that I can't use the design time connectivity of FireDAC and just do all my debugging at runtime. It's not so convenient but I've got used to it!. Be sympathetic to the Embarcadero Team - changing the IDE to 64bit must happen but they need to make sure that there are 64bit versions (or equivalents ) for all the sub components (which come from many many places : just look at the IDE menu item: Help | About | Acknowledgements). It's not quite as straightforward job as you think. You also have the issue that it "breaks" all the design time features for the folk out there using FireDAC with 32 bit apps talking to 32 bit databases. These may well be used to seeing all the design time connection functionality. -
I've just noticed that there is no mention of the Delphi Coding Boot Camp 2023 on this Forum. Seems strange that no one else is aware of this! Delphi Code Boot Camp 2023
-
Delphi Coding Boot Camp 2023
Roger Cigol replied to Roger Cigol's topic in Tips / Blogs / Tutorials / Videos
That's interesting ! I haven't had a single e-mail about it. Sorry if you feel I have just added to the "swamping". -
Delphi Coding Boot Camp 2023
Roger Cigol replied to Roger Cigol's topic in Tips / Blogs / Tutorials / Videos
Am I blowing my own trumpet too much to let people know that I am presenting "Introduction to XML Mapper" in this bootcamp today at 20:00 hrs UK time = 14:00 hrs USA CST ? If the answer is "yes" than I apologise -
Paradox in FireDAC Delphi 11 Ent 32bit VCL App
Roger Cigol replied to Blavatsky's topic in Databases
In the unlikely but not impossible event that you have field names in your paradox tables that include the # symbol I point you to this posting: Upgrading paradox field names containing # symbol -
Paradox in FireDAC Delphi 11 Ent 32bit VCL App
Roger Cigol replied to Blavatsky's topic in Databases
I too migrated a system away from Paradox a long long time ago. Paradox was good in it's time but it's limitations (particularly for a multi-user interface to the database) are very significant. I would definitely migrate to a modern and supported database (there are several open-source type solutions that are only a free of charge download away....)