-
Content Count
523 -
Joined
-
Last visited
-
Days Won
6
Posts posted by Vandrovnik
-
-
4 minutes ago, David Heffernan said:I'm sure that a first pass to define record type layouts followed by a second pass for everything else would not be costly.
Something like a record helper 🙂
I always wonder why there can be just one class/record helper...
-
19 minutes ago, David Heffernan said:Yeah, should be using '%p' format string
Or NativeInt(pointer(... or NativeUInt(pointer(...
Just when I see this typecasting pointer to integer, I can't help thinking that 64 bit IDE is far away 🙂
-
44 minutes ago, David Heffernan said:Amazing that they can't produce a 64 bit IDE....
64 bit IDE would probably require all design time packages to be 64 bit, too...
I was surprised to see typecast "integer(pointer(..." in https://blog.marcocantu.com/blog/2020-may-custom-managed-records.html ...
-
2 hours ago, Mike Torrettinni said:Is there any situation when this might trigger some unexpected issues?
With this info in mind, for bad customers you can start programming like that:
const _ = 1; _____ = 2; x = _____ + (_-_-_) + 0 + _+0-0+_ ;
- 1
- 10
-
-
tDictionary alone will not allow you to store more values for the same key (it seems you need it: "I get all values of (TKey1 = 1) for the data. ").
You could use two dictionaries:
tDictionary<tKey1, tObjectList>
tDictionary<tKey2, tObjectList>
In these object lists, there will be all objects with corresponding values of the tKey1, resp. tKey2.
-
It happens to me +- once every two weeks, too.
-
4 minutes ago, Remy Lebeau said:What does that code have to do with TListBox/TListView? Their Sort() methods are quite different than TObjectList's Sort() method.
Sorry, I did not read carrefully the title.
-
You mean something like this?
type tSledovaniVykonuSeznamVysledku=class(tObjectList<tSledovaniVykonuVysledky>) ... var Cmp: IComparer<tSledovaniVykonuVysledky>; begin Cmp:=tDelegatedComparer<tSledovaniVykonuVysledky>.Create( function(const Left, Right: tSledovaniVykonuVysledky): Integer begin result:=CompareStr(Left.Nazev, Right.Nazev); end); Sort(Cmp);
-
Thank you, AsmProfiler suites the best.
-
Hello,
Please can you advise a profiler for Win32/Win64 applications (made in Delphi)? Free, when possible (I do not need the profiler often).
What I have found using Google was expensive or quite outdated or buggy.
Kind regards,
Karel
-
I have just tried to download it using Chrome (Czech version 81.0.4044.122 (Oficiální sestavení) (64bitový) ), downloaded without problems, browser allowed me to start the downloaded .exe.
-
7 minutes ago, David Schwartz said:This is running inside a VM and I cannot install Delphi in it, so the debugger cannot be used.
What about remote debugging?
-
This compiles, but I have not tested, whether it works as expected 🙂
ToField<T> = class(tObject) private fData : T; protected procedure SetFromVariant(const aValue : Variant); end; procedure ToField<T>.SetFromVariant(const aValue: Variant); var val: TValue; begin val := TValue.FromVariant(aValue); fData := val.AsType<T>; end;
- 2
-
Do you have an idea, how many users really need new functions for old versions of Delphi? If there are not many of them, I would suggest to drop support for old versions - you can probably spend your time better than keeping code compatible with old Delphi...
-
Probably the same problem as in Project Window https://quality.embarcadero.com/browse/RSP-27182 It is reported, but when it will be fixed...
-
What about DirectWrite? It should support OpenType fonts.
-
Does AV happen on one computer, or all? Every query, or just some (with parameters? with string result? with only integer result? etc.)?
-
2 hours ago, Cristian Peța said:I don't understand. Have you reproduced this on your machine? Then you can debug and see the call stack.
If not, then as @Lars Fosdal said: get MadExcept or EurekaLog and don't waste your time.
I dot't know how EurekaLog is but with MadExcept you need only to install it and check the checkbox that you want it in your app. That's all. Then you will have a full call stack to see where this happens in your code.
But he wrote that error happens in external .dll when he opens a query, not in his code.
- 1
-
Installing components after each IDE update is a pain for me, so I created a .bat script, which recompiles all components (Win32 runtime, Win64 runtime, Win32 design time). It writes a list of created .bpl files to a text file.
The only manual part then is to add them to the IDE: Component, Install packages, Add, paste the path to the .bpls. I still did not try to add all bpls in one step, may be it works :-), but I enter them one by one.
-
I have not seen this problem, but I also almost do not debug Win 64 apps, because it is much slower on my PC. So I debug 32 bit versions and just occasionally test 64 bit versions.
-
I guess in the IDE, you draw for example 12 px box, but whole IDE is scaled by Windows, so that it is displayed as 24 px (example).
In running application, if your application is HDPI enabled, than Windows does not do the scaling. So original checkbox is drawn 24 px, because it is able to do it by itself, but your component is drawn 12 px, because it does not calculate proper size.
- 2
-
Can you compile to one big .exe for debugging and to packages only for release?
-
I think till now they store database password in plain text in a config file and now they want something better, so that their users cannot read password from it. If they store password xored with a secret key, it would help against "normal" users. If they do not want to store that secret key in .exe, they can generate it on the fly - for example, using a random number generator set to a specific seed and obtaining generated values. It will not be hacker-proof, but it will be curious-user-proof, which is probably good enough for a legacy application.
Record Circular References
in Algorithms, Data Structures and Class Design
Posted
If size was the only problem, I can imagine something like this ("human preprocessor"):
type tRecordA = record of size 8; tRecordB = record ... function Test: tRecordA; end; tRecordA = record x, y: integer; end;