-
Content Count
28 -
Joined
-
Last visited
Posts posted by Holger Flick
-
-
15 minutes ago, Tommi Prami said:That is not even close accurate analogy.
It is, because with software people always expect to get things cheaper and with discounts. Other things are just being paid for.
I'll get out of this thread. I also think the initial question has been answered.
Aurelius is a commercial alternative that offers a free-version without source that will help to get a better impression of the product.
- 1
- 1
-
1 hour ago, Tommi Prami said:How is so, I just suggested that I would not want to use FREE version and would like instead to PAY something.
So if you go into a restaurant you ask if you can pay less to pay for your meal? That makes no sense.
-
I would rather have a lot of things, but that's simply not how you can put food on the table.
4 hours ago, Tommi Prami said:I would rather pay little to get non commercial use license.
-
-
On 4/3/2019 at 4:11 PM, Remy Lebeau said:What is there not to understand? The TTabControl is transitioned to the desired Tab and a timer is started, then flow is returned to the main UI message loop. When the timer fires after 500ms, the ProgressBar is incremented and flow is returned to the main UI message loop. The timer fires again after another 500ms, and again, each time returning to the main UI message loop. Eventually, the ProgressBar reaches its Max and the timer is stopped.
You fixed the mistake. I was unclear if you were right, and then I was not able to understand how it should have worked. After the fix, I understand the code.
-
19 hours ago, Remy Lebeau said:This is definitely not the right way to write code. Avoid ProcessMessages() whenever possible. The example given can be replaced with a simple UI Timer instead, eg:
ProgressBar1.Value : =0; ProgressBar1.Max := 100; Timer1.Enabled := True; ... procedure TForm1.Timer1Timer(Sender: TObject); begin ProgressBar1.Value := ProgressBar1.Value + 1; if ProgressBar1.Value >= ProgressBar1.Max then begin Timer1.Enabled := True; Exit; end; //... end;
But, if your real project is using the ProgressBar to tracking status of actual tasks, those tasks should be done in the background, and updates to the UI synced with the main UI thread accordingly.
Remy,
shouldn't it be Timer1.Enabled := False; in Timer1Timer?
Otherwise, I do not understand how this code works. Example has been very helpful as I did it wrong as well so far!
-
23 hours ago, Mike Torrettinni said:I like the DLL option, but the client is not too happy about it as they don't want to have additional external files for deployment.
(I apologize as I did not see the posts initially that suggest exactly the same approach!)
Add the DLL as a resource into the exe and extract it into the user directory etc. when it does not exist on the system. So the customer still deploys only an exe file... You could even do that for many files that you zip and then put as a resource into your exe. RCDATA makes this very easy and there are functions in the RTL (SysUtils if I am not mistaken). Furthermore, Delphi RTL now has ZIP included that will also allow for the zip approach.
Is it crazy, yes, but it will make the customer happy and you can use a more recent version of Delphi.
-
6 minutes ago, Stefan Glienke said:Except when the framework is very naively written and adds a lot of unnecessary overhead and indirections. And yes, unfortunately for some situations IOUtils and other RTL units do exactly that.
That's why I consider your classes also part of the framework 🙂
-
6 minutes ago, chkaufmann said:So in the end I don't know where to search the error in a project with several hundred thousand lines of code. I use generic functions in different places, but having these removed is a "showstopper" for me.
Then, you should not have referred to that bug report if you are not certain what causes the error. Sadly, without producing a test-case, you will never get a resolution. This is sadly the case for commercial and open-source products.
It is painful, I agree, if a new version introduces unforeseen issues.
Again, there is a formal definition of a showstopper in QA. The term does not refer to your (or anybody's) ability to use the product or not.
- 1
-
Just now, Uwe Raabe said:and often more readable.
It also helps with code-compatibility long-term. If MS makes changes to the API, Embarcadero will amend the VCL/RTL accodingly. If you call the API directly, it will not work after that change. You use the framework, it'll be good long-term.
- 1
- 1
-
Switch to Daniel Wolf's wuppdi welcome page. Much lighter and structured and allows categories for favorites...
-
5 hours ago, chkaufmann said:What is the best way to get this fixed now? It's unresolved since 4 months now and having such a "show stopper" all the new fancy features in the IDE are just useless when such basics like the compiler don't work.
This does not qualify as a showstopper. You might feel like it, but it is not.
Especially as the error seems to be only appearing in certain situations, and it seems to be avoidable if you compile without the IDE.
In order to go ahead with your project, I would suggest to put the problematic class in a separate bpl and compile it using the command line. Then you can continue daily work inside of the IDE.
- 1
-
On 2/7/2019 at 8:24 PM, Remy Lebeau said:Using classes or records from a framework is too easy 🙂
- 1
-
What kind of application do you want to develop (platform/device)? TMS has component wrappers for Geocoding using the Google API which is available for many platforms.
-
On 11/28/2018 at 6:09 AM, dummzeuch said:Am I missing something? Is maybe GetFileAttributes actually faster than PathFileExistsA ?
There is the new unit IOUtils. What does TFile, TPath, or TDirectory use?
-
On 3/20/2019 at 12:54 PM, Daniel said:Absolutely.
But I tend to start with one single sub-forum for the TurboPower-components. When we come to a point that we have too many posts in there, we should go some steps further.
For me these components are there for compatibility to be able to compile old projects without migrating to new components. They have a rather outdated feel to me.
(BTW: Do I have to post below or above quote?)
-
4 hours ago, jbg said:The newest development snapshot should fix this bug.
Sadly, it still does not with other database-related component wizards from TMS. Would a stacktrace help even if it is vendor-specific?It's not related to IDEFixPack. Must be another plugin.
-
I recently read on the internet that UPX is not recommended to be used with Delphi VCL applications. I never had any issues, but I am also open to better alternatives.
Is there a better, free alternative?
-
Thanks Daniel! I was hoping for this move for a long time, ever since the original Borland forums 🙂 Still, I still miss my newsreader access. Notifications or no notifications 😉
-
Thanks, Andreas! Code navigation is finally working again!
Delphi’s TZipFile working on a stream
in Tips / Blogs / Tutorials / Videos
Posted
Great post! I THINK the reason why the Position is necessary is actually that you can put multiple ZIP archives into the same stream and it always has to point to the start when you load a TZipFile instance from a stream.