-
Content Count
1217 -
Joined
-
Last visited
-
Days Won
25
Posts posted by Sherlock
-
-
You are aware of TStringLists DelimitedText property?
StrList := TstringList.Create; StrList.Delimiter := ','; StrList.StrictDelimiter := True; AddValuesToList(StrList); CSVString := StrList.DelimitedText; // No trailing comma, no hassle, easy to read, not hard to explain..even 10 years from now
Have not measured time on this yet, but unless you are processing strings in the millions, no worries.
-
15 hours ago, Yaron said:But how do you apply it to use with Delphi which in the docs says that the PAserver needs to be in a local network?
Is there some help/docs on Delphi integration with such services for iOS development?
This is very old, but should still be valid (at least the connection part):
https://www.youtube.com/watch?v=zORe2voUHIU
Please note that the prices may be outdated. And a first glance showed, they have an XE8 PAServer preinstalled, nothing newer.
-
For a start this should be right for you: https://www.macincloud.com/
Later on you may find that a Mac Mini for 900€ is not half bad. It can be put in some rack or closet and just host your PAServer, or you can use it work with and host a windows VM.
-
-
40 minutes ago, Neutral General said:But there are going to be updates to the application. So in order to not have to shut down the whole service, the service is modular and can just temporary unload a DLL, update and then reload it.
It is always good to try and be better than the hosting OS, and if the service is that vital, I'm sure you made risk assessments leading to counter measures for DLL-injection and the overall adverse effects of DLL-Hell. If you did it just because you could...I strongly advise to reconsider.
But we are drifting away from the topic. Sorry for that.
-
14 hours ago, David Heffernan said:Build a monolithic executable and then the problems disappear.
Considering you'll have to compile all the DLLs with every new release anyway in order to avoid at least part of DLL-Hell I fullheartedly agree. Furthermore DLLs are quite a security issue:
https://www.youtube.com/watch?v=HVigruKph74 -
-
We are a peculiar kind, that expects simple but prefers to do complicated.
-
DelphiPRAXiS
in FMX
Oh, thanks. I thought there was an article on FMXExpress. I'm sad to say I don't have time to inspect code that comes without any explanations regarding purpose, function or instructions. So I wont be looking into this, but thanks anyway.
-
DelphiPRAXiS
in FMX
Do you have a link for the original? Can't seem to find it on FMXExpress.com. Thanks.
-
OT: JSON is cool and all, but it also promotes dropping all kinds of junk in it without thinking. Well maybe a little: "Let the next guy take care of this"
Sherlock
-
While I believe performance benefits to be true, I wonder how often this is checked and verified. The compiler team may indeed have sped up things in the more recent releases.
-
Correct! Luckily I have very few records and if I need a list of them I use generic lists and the readability is just fine.
Edith also feels the need to mention I have no legacy code to deal with aside from Delphi (hahaha, small joke). So, of course Thomas' method is a very good and simple way to increase readability in such problematic code segments.
-
41 minutes ago, dummzeuch said:I consider this
Ptr := @SomeArray[SomeStructure.SomeIndex]; Ptr.bla := 5; Ptr.blub := 10; // and 10 more lines like this
as more readable than
SomeArray[SomeStructure.SomeIndex].bla := 5; SomeArray[SomeStructure.SomeIndex].blub := 10; // and 10 more lines like this
And I would identify the type behind @SomeArray[SomeStructure.SomeIndex] which you would have to do for that typed pointer you're using anyway and gotten a variable of that type. Making this just as readable without explicit use of pointers:
Element := SomeArray[SomeStructure.SomeIndex]; Element.bla := 5; Element.blub := 10; // and 10 more lines like this
I am very well aware, that there are pointers floating around behind the scenes all the time. But I prefer developing with a high level language also because I wont have to deal with them.
-
Aside from performance I have never considered pointers to be an improvement for readability, it's something that's messed up in my brain I guess. And the way it was taught back in the day: Calling it "pointer arithmetic" really did not help understanding the simple things that are going on there. Luckily there is no syntactical need for pointers in Delphi anymore. Been living free of ^ and @ for years now. Of course sometimes some API smuggles in PBytes or PChars, but its nicely encapsulated.
- 1
-
My 2Cents:
Storing all kinds of (overall) useless information into the registry is a nuisance. It is like back in the day where everyone stored useless information into the win.ini increasing boot time severely. Which forced MS to up the game and introduce the registry. Of course, the registry is much more performant and flexible, but it still is actually something used by the OS for the OS. It is MSs fault to actually let all the hoodlums in and manipulate it. Nowadays reading and writing registry items can cost a noticeable amount of time. And considering that 90% of the applications that write into the registry don't bother deleting their entries at deinstallation time (at the latest), it is full of dead stuff (hence the registration cleaners, that tend to break stuff). So I applaud the idea to store size and position information into a simple, easy to find and delete, file.
-
Please consider RSS together with an appropriate App.
For RSS details check this thread
-
11 hours ago, ertank said:That is latest Community Edition 10.3. There was 10.2.3 Community Edition which is already running on my system.
As I have understood the licensing statements, the 10.2.3 CE will no longer be working, once the serial expires.As usual, I understood nothing...carry on.
-
I know how to populate a TListView, I just can't figure out how to collapse all entries for a header. Here is a mock up of what I mean:
Clearer now?
-
So I built a list of data grouped by devices where this data came from. Each device gets his own header in a TListView followed by its data. Pretty simple and straightforward. Now those lists may get long in total but also per device so I would like to be able to click on a header to collapse its list of data. I'm pretty sure VCL.TListView can do that. FMX.TListView...not so much. At least not that I'm aware of. I'm already having a hard time at getting the click event from a header. All TListViewItems with Purpose set to TListItemPurpose.Header sadly wont fire the OnItemClick event.
Did I overlook something or other in the documentation? Anybody have a suggestion as to how this can be accomplished. Thanks in advance.
-
In http://docwiki.embarcadero.com/RADStudio/Rio/en/What's_New see the chapter "Fix Pack improvements":
QuoteFix Pack Improvements
RAD Studio 10.3 Rio includes some of Andreas Hausladen's “IDE Fix Pack” fixes and improvements. Most of the incorporated fixes are focused around the IDE and include the following:
- High resolution timer caused by using Virtual Treeview.
- FindHInstance optimisations.
- Debugger using CREATE_DEFAULT_ERROR_MODE when creating the process.
- TStringList IndexOf and Name optimisations.
So nothing connected to the compiler. Way to go that extra mile, EMBT.
-
Just gotta love those hi res pics 😄
- 2
-
Simple and great! Thanks for that.
-
1 hour ago, Rollo62 said:+1
Minor hint on that subject: That is what the heart in the lower right corner is for.
- 1
CCR.EXIF: Rio throws E2574
in RTL and Delphi Object Pascal
Posted
When you edit your post, just place the cursor before the <OT> then press Backspace (<-) till the empty quote is gone.