Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 05/22/19 in Posts

  1. Its easy to build an automated "training device" with this Bluetooth stuff, RadServer for IoT, GIT and a CI-Server. https://www.amazon.com/PetSafe-Smart-Bluetooth-Training-Collar/dp/B01K73MUTI (If you google somewhat deeper you will find versions with high voltage electroshock too ). (I like to get one for myself sometimes, to get a shock whenever I did something wrong).
  2. I am not sure they would get away with that - at least here in Germany. As long as the customer actually paid for the perpetual license (this excludes the CE), the ability to use it legally cannot be prohibited just because there is no current support contract. At least a reasonable fee for the registration bump would perhaps be acceptable, but definitely not denying it completely.
  3. Sometimes your program needs to block the screen saver from automatically kicking in. My use case was that the program was recording data and whenever the screen saver was active, the data was lost (No idea why, it probably had something to do with the way HID is implemented in Windows.) So I was looking for a way to fix that without forcing the user to turn off the screen saver. The methods that used to work under Windows XP no longer work in Windows 7 and later (I don’t care about Vista), so I googled and found this question on StackOverflow. The Windows API functions PowerCreateRequest + PowerSetRequest mentioned in the highest voted answer looked promising. Unfortunately they don’t seem bo be available in Delphi read on in my blog post
  4. Edwin Yip

    Git UI tools

    Well, I'm just coming backup to report that, for my tasks GitExtensions works better than TortoiseGIT, thanks for this discussion :)
  5. I checked the German license and there is no such thing that would a) mention any registration limit in the first place or b) state that increasing that limit is actually part of the support.
  6. As an aside to this. What happens if Emba goes bust? are we all just locked out of the software? I have an active subscription but I'm of the opinion that this change makes using Delphi a very risky choice as Emba seem prepared to cut us off from using the software we own. Why can't we just move an activation from one machine to another without needing to go through the process of phoning in to ask permission?
  7. PeterPanettone

    Delphi for HUAWEI OS?

    If HUAWEI is going to (forced to) replace Microsoft Windows OS and Apple OS on their devices with HUAWEI OS then I want Delphi for HUAWEI OS!
  8. The history of stupid licensing conditions in the USA is as old as shrink-wrapped EULAs. The one ray of hope was the original Borland "just like a book" policy.
  9. Sherlock

    FastMM4 and False Positives

    Peer pressure FTW!
  10. It's not only git which uses this kind of annotations. svn and probably many other SCMs do too. So how can it be that somebody commits stuff like this? One option for dealing with this kind of stupidity is setting up a continous build server and slapping everybody who commits stuff that does not compile. But this requires somebody with authority to do the initial slapping.
  11. If this is true, then Embarcadero is not anymore a Partner you can trust.
  12. That is outrageous. Especially for older versions which were sold as a perpetual license. Now it seems that customers cannot legitimately continue to use software they own and have paid for. Is Delphi ransomware now?
  13. Dalija Prasnikar

    FastMM4 and False Positives

    Problem with TComponent (and subsequently its descendants) is that it implements interfaces but has reference counting disabled in _AddRef and _Release methods so it can be used like regular class. However, people often forget that in such cases _AddRef and _Release calls even though they don't do any counting will still be inserted by compiler and called for any interface reference to such object instance. So if there is alive interface reference to the object after calling Free that interface reference will contain dangling pointer and when such interface goes out of scope _Release will be called on already nuked object. While you may get away with such call without FastMM debugging mode, if it is turned on it will correctly identify the problem. Simple test case that will blow with FastMM in debug mode procedure TestComponent; var Comp: TComponent; Intf: IInterface; begin Comp := TComponent.Create(nil); Intf := Comp; Comp.Free; end;
  14. In addition, in XE7+ the compiler has an (undocumented) GetTypeKind() intrinsic function: function GetTypeKind(T: TypeIdentifier): TTypeKind; So you can do this instead: procedure TCSVSchemaBuilder.BuldSchema<T>(SchemaTemplate: T); begin FSchemaItems.Clear; FNumRequired := 0; case GetTypeKind(T) of tkClass: BuildSchemaFromClass(...); tkRecord: BuildSchemaFromRecord(...); tkInterface: BuildSchemaFromInterface(...); else raise EImportSchema.Create('Cannot create schema by type'); end; if FSchemaItems.Count = 0 then raise EImportSchema.Create('Schema is missing critical information. Cannot proceed'); end; Prior to XE7, you can replace GetTypeKind() with this instead: case PTypeInfo(TypeInfo(T)).Kind of Either way, the advantage is that T's Kind is known at compile time, which allows this code to optimize out unused code branches at compile-time, whereas the original code does not allow that since the Kind is being queried dynamically at runtime.
  15. See this answer from Embarcadero to a customer who wants to increase the registration count: Reinstalling Windows without re-registering Delphi Update : The linked message was deleted by a moderator. Only visitors with enough reputation can view the original message.
  16. I often wonder how many issues in a mature product are actually the misuse of Version Control..
×