

EugeneK
-
Content Count
107 -
Joined
-
Last visited
-
Days Won
1
Posts posted by EugeneK
-
-
3 hours ago, dwrbudr said:function Detour_UuidCreate(out guid: TGUID): Longint; stdcall; begin guid := Default(TGUID); Result := 0; end; procedure TForm68.Button1Click(Sender: TObject); var myguid: TGUID; begin InterceptCreate('rpcrt4.dll', 'UuidCreate', @Detour_UuidCreate); CreateGUID(myguid); end;
So the above code does not work?
On my side it works if I put a breakpoint in Detour_UuidCreate
Thanks! I did not know that you can use this form of InterceptCreate
-
7 hours ago, Vincent Parrett said:Intercepting functions for unit testing is a terrible idea. A better option would be to create abstractions and a concrete implementation (ie actually calls UuidCreate), that abstraction can be easily mocked using Delphi Mocks or Spring4D for uinit tests. The same applies to code that relies on things like Now or NowUTC - e.g - https://github.com/VSoftTechnologies/VSoft.System.TimeProvider
I mostly use abstractions, but using abstractions for Now feels like an overkill, that's the only one I use DDetours for so far. Also until Spring4d uses namespaces I'm not using it.
-
I'm using DDetours to intercept Windows functions for unit testing purposes, but don't know how to intercept UuidCreate function because its declaration is hidden in implementation section of System.SysUtils unit. Is there a way to do it?
-
Looks like there is commercial solution that implements AMQP 1.0, https://www.esegece.com/websockets/protocols/amqp/amqp-1-0-0
I wonder if anyone tried it?
-
8 hours ago, Die Holländer said:Maybe there is something possible with Python4Delphi and Pika...
It seems to be for AMQP v0.9.1, there is Delphi implementation for it here https://github.com/felipecaputo/delphi-amqp
-
16 hours ago, fastbike said:HI, did you get anything to work - I'm looking at using Azure Relay to expose some functionality on our network to another Azure service.
No, I'm trying to reverse engineer it. It uses AMQP 1.0 over WebSockets
-
Yes getIt was down, it hanged IDE when I tried to open it, I killed IDE from taskmanager and it somehow completely deleted my license, so now I can't use IDE at all, and can't login to the portal to get my license number.
-
Hi
Does my.embarcadero.com works for anyone right now? Cannot login to it.
-
I think more consistent with Embarcadero style will be following, since there could be multiple consts/types/vars
TClass = class(TObject) private FSomeField: integer; private const SomeConstant = 5; SomeOtherConstant = 6; private type SomeType = integer; SomeOtheType = string; private class var SomeClassVar: integer; SomeOtherClassVar: string; end;
-
1
-
-
10 hours ago, Remy Lebeau said:This is actually as designed, managed records (including records with strings) cannot be use for generics restricted to records (where record is in fact traditional memory managed records). It's a restriction from the past, done to avoid bugs
But this is simply not true because managed records can be used for generics restricted to records in 12.2 and before. I had a lot of code broken because of this change that worked perfectly fine.
-
Can anyone explain rationale why the suddenly change this and closed my ticket about this as by design? https://embt.atlassian.net/servicedesk/customer/portal/1/RSS-3043
This pisses me off they they randomly change compiler behaviour and not even in major version. And don't provide any explanation.
-
Just now, DelphiUdIT said:TRecordLoader<T> = class sealed class function Get: T; static;
If you use full generic declaration it works.
Yes I'll probably use it as a workaround, but that kind of defeats the purpose
-
Happens when record field has an attribute
unit UTestGenericsBug; interface uses System.Rtti, Data.DB; type DBField = class(TCustomAttribute) strict private FFieldType: TFieldType; FLength: Integer; public constructor Create(const AFieldType: TFieldType = ftUnknown; const ALength: Integer = 0); property FieldType: TFieldType read FFieldType; property Length: Integer read FLength; end; TTestRecord = record private [DBField(ftString, 20)] FTerminalName: string; public end; TRecordLoader<T: record> = class sealed class function Get: T; static; end; implementation constructor DBField.Create(const AFieldType: TFieldType = ftUnknown; const ALength: Integer = 0); begin end; class function TRecordLoader<T>.Get: T; begin Result := Default(T); end; function Get: TTestRecord; begin // error here Result := TRecordLoader<TTestRecord>.Get; end; end.
😒
-
Hi
Anyone else have this error in 12.3
[dcc32 Error] Type parameter 'T' must be a non-nullable value type
Works fine in 12.2, trying to isolate it now, seems to work in some places but not the others.
-
15 minutes ago, Angus Robertson said:What is the benefit of keeping the internal TLS keys? Wireshark?
Yes, for Wireshark, in next release OpenSSL adds logging directly in the library, but you need to configure it at build time, with these callbacks you can log it with regular build
-
Hi
It would be nice to add keylog callback functions to OpenSSL interface, https://docs.openssl.org/master/man3/SSL_CTX_set_keylog_callback/
-
You can check System.Diagnostics.TStopWatch it is cross platform and high-precision
-
Hi
Some protocols require Sec-WebSocket-Protocol header to be set when connecting, I made a patch to allow it in OverbyteIcsWebSocketCli.pas
-
37 minutes ago, Anders Melander said:Supposedly compiles faster...?
Also it forces unified style across all the code and improves readability.
-
In my projects I don't have anything in 'Unit Scope names' and 'Unit aliases', so it won't compile if I just add it as is. All other 3rdparty libraries that I use have it, so I don't want to add it back.
-
2
-
-
Hi
Is there any chance that namespaces will be added in Spring4d code? e.g. System.SysUtils instead of SysUtils
-
3 hours ago, Kazantsev Alexey said:Press [Update Local File Cache] in SDK Manager after libgtk-3-dev installed.
Thank you! that was the problem.
-
9 hours ago, havrlisan said:Have you installed the gtk library on the linux machine?
sudo apt-get install libgtk-3-dev
Yes, but it fails during build, not when deploying, so I don't think it matters. It have to be somewhere on Windows machine
-
Hi
I'm trying to use FmxLinux in Delphi 12.2 and deploying to WSL, all samples work apart from GtkWindow, it has following code
procedure gtk_window_set_title(window: Pointer; title: PUtf8Char); cdecl; external 'libgtk-3.so.0'; function gtk_widget_get_window(widget: Pointer): Pointer; cdecl; external 'libgtk-3.so.0'; procedure gdk_window_process_updates(window: Pointer; update_children: Boolean); cdecl; external 'libgdk-3.so.0';
and fails with this error when building
[DCC Error] E2597 C:\Program Files (x86)\Embarcadero\Studio\23.0\bin\ld-linux.exe: error: cannot find -lgdk-3 C:\Program Files (x86)\Embarcadero\Studio\23.0\bin\ld-linux.exe: error: cannot find -lgtk-3
How can I make Delphi find these libraries?
Delphi 13 beta
in Delphi IDE and APIs
Posted
Delphi 13 beta announced https://blogs.embarcadero.com/update-subscription-customers-invited-to-join-rad-studio-ganymede-beta/
Have anyone received invites? Apparently they sent to premium and regular subscription licenses this time. I'm on regular subscription and did not get any. Getting regular marketing emails, though.