C++ Boot Camp Friday: Stepping Up to Mobile

Posted by on in Programming

Thanks for joining us for C++ Boot Camp


 

Thanks!

 

Q&A Logs

1st Session

Q: How can I add communication to a serial port? (rs232)

A: Turbo Pack - Roman keeps them up to date - including Turbo Async Pro - runs on windows - works with 10.1 Berlin all editions - http://blog.kassebaum.eu/?p=456

 

Q: Is Embarcadero committing to keeping C++ Builder as up-to-date on features as Delphi has been?  Is there a team that is focused on developing each package simultaneously?

A: Yes

 

Q: As I see most of all the samples are missing and the last package includes only last examples, can you re-edit all samples for the Berlin and  pack all in packages iOS, VCL, FMX, Android etc.? There should be Samples for Beginners too. Maybe day by day examples.

A: Samples are also on SourceForge at https://sourceforge.net/p/radstudiodemos/code/HEAD/tree/branches/RADStudio_Berlin/

 

Q: by talking about c++ builder starter ed - am I able to compile MySQL libraries in and use them for database connection? Did you mean just the vcl components that are not in?

A: Starter includes VCL and FMX. Regarding using C or C++ libraries - if they are DLLs for Windows with exported C functions or they are built with C++BUilder (C++ Name mangling issues may cause a problem finding functions) - then yes.  If they are standard C libraries - they need to be a format that works with Clang compiler or C++Builder Win32.

 

Q: There are big communities and companies who supports their developer with their SDK's. Most SDK's are compatible with Visual C or C# but not with C++ Builder, e.g. SteamSDK. Do you think to contact with them and cooperate with them to add C++ Builder examples? Or at least doing API's compatible with rules of C++ Builder ?

A: Yes! Also, please contact us with a list of useful SDKs that you would like to see.  I'd be very interested in getting them all officially supported. Many can you probably use anyway - it's all C++ - but inbuilt "official" support would be great, please let me know which are important to you.

 

Q: I may have missed it in a previous day: is C++ Builder using the official Clang front-end to LLVM, or is it a fork of Clang that you've modified to add extensions of some sort?

A: We add our C++ extensions to the official clang compiler. The C++ team also gives back any clang code that we fix.  We keep our extensions up to date and the team goes to Clang/LLVM meetings and interacts with the global team. Our C++ clang extensions are created to support Windows-isms (especially exception handling, GUID support), and Delphi language interop.  http://docwiki.embarcadero.com/RADStudio/Berlin/en/C%2B%2BBuilder_Keyword_Extensions

 

Q: The game examples you showed yesterday can be downloaded?

A: Source code is available now at:

https://github.com/EmbarcaderoPublic/CppArcadeGames

 

Q: Can a project developed in Delphi 2007 be built in Delphi Berlin without any issues?

A: You will need to deal with the Unicode string changes that took place in Delphi 2009. We have several videos/webinars on migrating older Delphi and C++Builder code - on our Embarcadero YouTube channel. you will find additional info on our Unicode Migration page at https://www.embarcadero.com/rad-in-action/migration-upgrade-center

 

Q: Would a program created in C++ work in Linux and Windows?

A: Once Linux support is released you can compile the same console or server app for Windows and Linux.

 

Q: Problem with distributing components in compiled form in the past for Delphi was that you had to rebuild them for each Delphi version. Is it still an issue or can you link against some library with only immutable interfaces (extended at later IDE versions) instead?

A: Components need to be built for each version - this is due to low-level interfaces and possible virtual table implementation that could cause problems in calling event handlers and methods - especially for virtual tables. There is also a possibility that there might be changes in the IDE APIs for property editors and component editors.

 

Q: This is confusing. If arc is only implemented in Delphi, how do I know what will be memory managed in?

A: ARC is implemented in the RTL inside TObject on mobile compilers including Delphi and C++Builder. It doesn't actually matter how ARC Is implemented - it is RTL code you can use when you inherit from TObject. http://docwiki.embarcadero.com/RADStudio/Berlin/en/ARC

 

Q: Where on the webpage do I find special offers like add-ons or libraries?

A: www.embarcadero.com/radoffer

 

Q: David Millington said, "You can control .... to jump to its method"... How do we jump to the method please ?

A: The Object Inspector has an Events tab; double-click any of them in the drop-down combo box and it will create one if necessary and jump to it. Double-clicking a button does that for the OnClick event, and that's what I did in the demo

2nd Session

Q: I've seen two files extensions:

".h",

".hpp"

what is the difference?

Are both for header files?

A: Both are header files. There's no real difference - for us, .hpp files are autogenerated, .h files pair with .cpp in your own code. But this is not standardized elsewhere in the C++ community, there's a mix of several extensions there.

 

Q: Did Eli ever explain the 36ms timer loop?

A: yes ­ human eye can see 25 fps ­ so 36ms gives the games close to that fps. the game dev replay webinar will appear in the next 3 hours on YouTube channel C++ Boot Camp playlist

 

Q: If you divide one second by 27, then you get 37 milliseconds :)

A: Exactly.

 

Q: Is the FMX open source or is it proprietary only for Embarcadero?

A: It's proprietary to Embarcadero - it uses a lot of compiler extensions, too, there's a lot that can't be achieved with plain C++. We're very proud of it.

 

Q: If, as a longtime developer, I am comfortable managing pointers, at what point should I abandon my experience and trust these "black box" pointer managers?

A: They're well documented and predictable, so not black boxes (they're very precisely specced in the C++ spec), you can feel confident in what they do when you understand their behaviour. Lots of good articles about them too. Look up David I's post in the chat log, a PDF about them.  I would say, at what point - now :)  Once you start using them, you won't go back. I am happy using pointers too... but smart pointers are so much nicer :)

 

Q: What is a smart pointer? Is a unique_ptr a smart pointer?

A: Smart pointers is a generic term for a set of C++ pointer types - a good document to read is http://www.umich.edu/~eecs381/handouts/C++11_smart_ptrs.pdf

 

Q: Can I deploy an app as Windows UWP?

A: Not currently. Microsoft with the new release of Windows 10 Anniversary edition has a desktop migration utility that we are exploring to use.

 

Q: How to update the Android SDK from 24 to 25.

A: C++Builder comes with an SDK Manager for Android - it is included in the Windows menu when you install C++BUilder. called Android Tools - there is a batch file in the c:\users\Public]Documents\Embarcadero\Studio\18.0\PlatformSDKs\android-sdk-windows\tools\android.bat

 

Q: Is the VCL library being phased out?

A: NO - VCL will be around as long as there is a Windows SDK and API :) We are continuing to enhance VCL. In 10.0 Seattle we added Windows 10 extensions as components - notifications and sharing contracts - new VCL UI components too.

 

Q: I use normal pointers to save them in a vector<my_pointer*> and use them until program ends and then delete them myself via delete all vector items.Is this no good programming? I don't want the pointers to be freed by going out of scope. I want to keep using them in my vector during the program and only delete them manually at the end of the program. Is this wrong and what other pointers can I use to put in the vector, and keep using them during the program running.

A: In modern C++ it is easy to leak memory. If you want complete control you have to take control (with great power comes great responsibility). Smart pointers (there are several) can help you avoid common memory mistakes/leaks.

 

Q: I appreciate the material shared here and links are super helpful. I'm very new to C++ development I'm wondering why is it so difficult to find physical books on C++ Builder? Why can I find physical materials?

A: There are many books on C++ programming. There are several books on FireMonkey programming (written in Delphi).  We do have online C++ Developers Guide on our docwiki at http://docwiki.embarcadero.com/RADStudio/Berlin/en/C%2B%2BBuilder_Developer%27s_Guide  and a mobile application tutorial eBook (for C++ and Delphi for iOS and Android) at http://docs.embarcadero.com/products/rad_studio/radstudioBerlin/Mobile_Tutorials_en.pdf

 

Q: Do you know of a better physics engine, I'm using Box2D but the collision detection is not working as it should.

A: Newton Game Dynamics is also available.  there is also Bullet and Open Dynamics Engine

 

Q: There are many available training options available for Delphi but nothing for C++ Builder.  Can you guide me to some training that I might be able to get my programmers into for c++ builder training?

A: Stay tuned for some education things we are considering and working on.  If you want to go back to the XE3 days - you can check out David I's "Getting Started in Windows and Mac Development" 9 video course with workbooks. Even though it is older version - the concepts are still the same - uses FMX too. I am looking to see how long it will take me to update it to 10.1 Berlin :D you can send an email to This email address is being protected from spambots. You need JavaScript enabled to view it. and I will point you in the right direction.

 

Q: Having the server side on Windows based PC and having the client running on Android. What database would you recommend? One that does not need a license for each location/server. Thanks! :)

A: SQLite, IBLite

Q: Which are the better cloud databases ?

A: NoSQL databases - MongoDB, Amazon S3, Cassandra, Azure Tables, Hadoop, etc. FireDAC supports MongoDB. Of course, you can run SQL databases in the cloud as well.  FireDAC MongoDB support - http://docwiki.embarcadero.com/RADStudio/Berlin/en/Connect_to_MongoDB_Database_(FireDAC)

 

Q: Does there exist any tutorials for C++ Builder database apps?  Some of us are beginners and don't know where to start :(

A: There are FireDAC database appdev tutorials on the FireDAC DocWiki - start with getting started, and then move down the topics on the FireDAC docwiki home page - http://docwiki.embarcadero.com/RADStudio/Berlin/en/FireDAC

 

Q: So glad C++Builder is being developed. I've been a fan since Borland C++Builder 3,  as a student.

A: Great! Yes, very much still developing - very very actively right now too

 

.Q: The vector I use is itself also a pointer, so it is a vector<my_pointer*>* should this vector also be a smartpointer?

A: Yes :)

 

Q: Don't forget Code Rage in November

A: November 15-17 (Tuesday to Thursday)

 



Comments

  • Chris S6428
    Chris S6428 Saturday, 13 August 2016

    When is Friday's content going to be available here?

  • Please login first in order for you to submit comments
  • Page :
  • 1

Check out more tips and tricks in this development video: