-
Content Count
1148 -
Joined
-
Last visited
-
Days Won
106
Everything posted by Dalija Prasnikar
-
Saving a large project takes soooo Loooonnnnggg..
Dalija Prasnikar replied to Ian Branch's topic in General Help
The only other ideas I have is trying to disable themes - they slow down opening and closing process - https://dalijap.blogspot.com/2019/05/disable-delphi-rio-ide-theme.html And the other culprit is Welcome screen - https://quality.embarcadero.com/browse/RSP-21973 https://quality.embarcadero.com/browse/RSP-22257 You can either close Welcome tab and try saving... or rename Welcomepage folder -
Also post with comments from product management https://community.idera.com/developer-tools/b/blog/posts/may-2019-rad-studio-roadmap-commentary-from-product-management
-
10.3.1 has been released
Dalija Prasnikar replied to Martin Sedgewick's topic in Delphi IDE and APIs
Different people have different issues. For me and my eyesight not using any dark theme is imperative. After only few minutes of looking at dark themed IDE or web site I experience colored visual artifacts similar to those when you look at bright light. After 10-15 minutes I can no longer read anything dark theme or light theme and I need hour or two to recover. -
Increasing registration count not possible without active maintenance support
Dalija Prasnikar replied to Leif Uneus's topic in Delphi IDE and APIs
There was an answer andout activating XE license with basically the same response from Embarcadero as posted here by @cupwalker posted 20 hours ago there... it is deleted now because it was not an answer... -
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;
-
It works for me, but I am already logged in. Embaradero had some problems with servers this weekend and this is maybe some residual effect. Issues should be solved now, but if you still have problems maybe you should contact Embarcadero letting them know not everything works as expected.
-
Very slow access to class parameters by properties
Dalija Prasnikar replied to ŁukaszDe's topic in Algorithms, Data Structures and Class Design
First, this sounds like premature optimization. Yes it is 6 times slower, but you are talking about milliseconds for huge number of objects. Next, if you really need to optimize for speed, you can completely remove getter and setter methods. That is the beauty of Delphi - it does not need them at all and you can freely add getter and setter methods later on (if needed) without breaking the public API. Inline approach can solve the immediate problem, but keep in mind that inline directive is just recommendation for the compiler and under some circumstances such methods will not get inlined (though compiler will give you hint in those cases). Essentially you are writing a whole a lot of code for nothing. -
Jumping to methods via procedure list does not expand region
Dalija Prasnikar replied to Stefan Glienke's topic in GExperts
If you care about quality it does not really matter where the bug was reported. What matters is that people who need to know are aware of the bug. -
It is not what you wrap, but how you wrap it. There were some issues with SourceTree related both to embedded version of Git and GUI itself. I don't know all the details, but the latest version works fine again, and yes it was never really lightning fast.
-
Jumping to methods via procedure list does not expand region
Dalija Prasnikar replied to Stefan Glienke's topic in GExperts
Nitpicking... at least you can jump... -
The Android 64bit deadline warnings have started
Dalija Prasnikar replied to Yaron's topic in Cross-platform
Can't argue that... Problem is that expansion to other platforms started as customers request. If we all knew then what we know now, maybe things would play out differently.... on the other hand, maybe not... when you have need to support other platforms and your toolset does not have them, you have to find some that does... when you start moving away, sometimes you may be inclined to move away completely. Also, development team shrinking process happened after expansion to other platforms... Quite unexpectedly, if I may say, because at that point it should have been obvious that more platforms means more work and more work requires more people, not less. We can argue here until the end of the world, but how can you argue anything when actual events (decisions) defy all logic. For all we know, maybe even without additional platforms Windows side would be in similar position as it is now. -
The Android 64bit deadline warnings have started
Dalija Prasnikar replied to Yaron's topic in Cross-platform
Lack of resources, maybe... they have to provide proper support for platforms they have expanded to, Apple and Google have their requirements and their own toolsets and don't care much about other people's problems - with notable exceptions - but again only when it is in their own interest. In that light... Windows can wait for any improvements, regardless of how many customers would actually benefit from better Windows support. -
The Android 64bit deadline warnings have started
Dalija Prasnikar replied to Yaron's topic in Cross-platform
Maybe somebody at Unity didn't have to ask because there is huge number of Unity Android games with large distributions out there. Google knows what kinds of applications they host and how many don't support 64bit. -
The Android 64bit deadline warnings have started
Dalija Prasnikar replied to Yaron's topic in Cross-platform
How is poll going to help? Whatever Embarcadero has planed, it is far too late to make any meaningful rescheduling. -
The Android 64bit deadline warnings have started
Dalija Prasnikar replied to Yaron's topic in Cross-platform
In latest roadmap it was newer scheduled for 10.3, but for some 10.3.x update Android 64bit is scheduled for 10.4 AFAIK, this roadmap as far as those compilers are concerned is still valid. When exactly any of those releases will actually hit the road, anyone's guess is as good as mine. macOS 64-bit is needed not just for developing macOS apps, but also internally for iOS development toolchain and supporting iOS 11 and iOS 12 simulators. Last year, there was public beta for Delphi developers on active subscription that allowed publishing Android applications built with beta on Google Play store. If nothing else similar scenario can be expected for Android 64 bit compiler. I know this is far from ideal... but... To be on the safe side... anyone should prepare for the worst and release any major updates before August deadline... -
No. It could not lead to freeing object that is still in use. But there is another thing that can happen here. Under ARC compiler all object references (variables) including local ones are initialized to nil before they are used and you can safely call Free on nil object. In first example, if TMyObject constructor fails and raises an exception obj.Free will be called on uninitialized reference. If that uninitialized reference is nil by any chance, you will get lucky, if not you will trigger AV. But that does not fully explains random AVs, unless it happens after your "expected" exception from constructor.
-
DisposeOf is only ever needed on ARC compiler. There using Free or DisposeOf are different things. On classic non-ARC compiler DisposeOf translates to Free, so it does not matter which one you use, it will behave the same. Access violations mean that you are accessing object instance that is already released. There are two likely scenarios: 1. you are calling Free somewhere on object you are still using. On ARC compiler such instance would be kept alive (because Free just nils the reference and does not destroy the object if you have another strong reference(s)) 2. you are calling DisposeOf on object you are still using, which on ARC compiler does not fully destroys the object (just calls destructor) but the object instance memory is accessible and intact so you can call methods on it (as long as you have some strong reference to that instance), or access fields without causing AV, unless you access something that has been explicitly destroyed in destructor. Random behavior complicates things... such errors can be caused by threading issues.
-
How to avoid calls to invalid events?
Dalija Prasnikar replied to chkaufmann's topic in OmniThreadLibrary
If you invalidate flag sitting inside interface when form is going to be destroyed, then you know form is no longer valid and you can skip calling methods on invalid reference. -
How to avoid calls to invalid events?
Dalija Prasnikar replied to chkaufmann's topic in OmniThreadLibrary
Your idea with reference counted object (you have to pass it as interface and not as const to increase its reference count) and invalidating a flag will serve the purpose. I don't use OmniThread library, so I don't know if there are some built in mechanisms to take care of such cases. -
Android officially does not have splash screen support. Various frameworks only simulate splash screen while they load... so just use sizes Delphi asks and that should be it, The best is to use simple logo centered on black background (similar to default FMX splash). It is the least intrusive and will look good on various setups. If your application needs longer initialization, then make main FMX form as light as possible and then implement proper splash inside that can show progress and can be better customized.
-
Add support for High-DPI gdiScaling
Dalija Prasnikar replied to Tom Mueller's topic in Delphi IDE and APIs
Well, MDI applications were deprecated a long time ago and Delphi IDE is seriously lagging behind in getting proper high DPI support. What I mean is that actively developed applications should be eventually updated to fully and properly support high dpi and not rely on this fix. I know, it takes time to do so... Now, it is much clearer. Can you please add that picture to your QP report. -
Add support for High-DPI gdiScaling
Dalija Prasnikar replied to Tom Mueller's topic in Delphi IDE and APIs
Maybe, but this setting is merely a quick fix for seriously outdated applications. I am not sure how much sense it makes to add such support in IDE. Again, dpiAware and dpiAwareness elements and their values are separate from gdiScaling element and setting that appears in application properties dialog. If I understood you correctly you would like to add gdiScaling element automatically when "System Aware" option is selected, but that might have negative impact on some applications that use such setting. I am saying might because I don't have any particular example where it will fail, but if that setting would be completely compatible, then MS would not introduce additional flag, they would just apply enhanced scaling to all applications with corresponding dpiAware or dpiAwareness settings. -
That part solely depends on a parser.
-
It means that if (more like when) data definition/structure changes, it is harder to provide backward compatibility support for JSON comparing to XML. Simplest example: { "id": 1, ... id is integer here... if you cannot easily change it to string. <id>1</id> - format stays the same, you can parse it like integer or like string. Of course, you cannot just parse "abc" as integer, but... Also, XML structure can be more easily verified and you have greater options to manipulate and transform its content without parsing it first. You can also more easily pull only chunk of data and parse just that part. All that is probably not highly important for settings because that kind of data is usually not too complex or too large. I don't want to hijack this thread... so... just wanted to say that choosing between JSON and XML is not as simple as it may look. It is not "JSON is always better" situation.
-
But not very resilient to changes.