Jump to content

Sonjli

Members
  • Content Count

    94
  • Joined

  • Last visited

Everything posted by Sonjli

  1. Hello. In this source unit Unit2; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Spring.Collections; type IScarafuglio = interface(IInvokable) ['{8E5CC1F0-8759-4965-BF83-0C2DC5E1153C}'] function Nome: string; function cognome: string; function Eta: Integer; end; IPippo = interface(IInvokable) ['{C6B11B79-F08C-47D0-9E21-EBE4788E43E1}'] function PlutoList: IReadOnlyList<IScarafuglio>; end; TForm2 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); var a: IPippo; begin // Use the RTTI in Unmarshal a := Unmarshal<IPippo>( ''' { "PlutoList": [ { "Nome": "Eddy", "cognome": "Mazzarini", "Eta": 22 }, { "Nome": "Luca", "cognome": "Vecchiato", "Eta": 56 } ] } ''' ); ShowMessage(a.PlutoList[1].Nome); // AV because IScarafuglio instance is nil end; end. the interface IScarafuglio is never found with Context.FindType('Unit2.IScarafuglio'); The result i always nil. But if I add a simple field or anything else that reference the IScarafuglio in interface, then everything is fine: unit Unit2; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Spring.Collections; type IScarafuglio = interface(IInvokable) ['{8E5CC1F0-8759-4965-BF83-0C2DC5E1153C}'] function Nome: string; function cognome: string; function Eta: Integer; end; IPippo = interface(IInvokable) ['{C6B11B79-F08C-47D0-9E21-EBE4788E43E1}'] function PlutoList: IReadOnlyList<IScarafuglio>; end; TForm2 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } XYZ: IScarafuglio; // From now everything is fine and RTTI "know" who IScarafuglio is... public { Public declarations } end; implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); var a: IPippo; begin // Use the RTTI in Unmarshal a := Unmarshal<IPippo>( ''' { "PlutoList": [ { "Nome": "Eddy", "cognome": "Mazzarini", "Eta": 22 }, { "Nome": "Luca", "cognome": "Vecchiato", "Eta": 56 } ] } ''' ); ShowMessage(a.PlutoList[1].Nome); // WORKING!!! end; end. Why this behaviour? Thanks
  2. Very strange you never heard about FidoLib: the best library after the invention of programming (and Sprign4d, for sure ) jokes apart, Thanks for your help!
  3. Yes. The code is in FidoLib (I collaborate in the project). The file is this: https://github.com/mirko-bianco/FidoLib/blob/develop/source/Json/Fido.JSON.Marshalling.pas
  4. This was not the point, for me. I just would like to know why the RTTI doesn't know nothing about IScarafuglio until it is declared. Anyway I am looking for the use of that prop in my code.
  5. I stepped on shit... ok, I clean my shoe and Wirth can go back to rest in peace...
  6. It would be nice to add inline methods writing in classes. I mean declaration and implementation all in the class. Example: // Inline implementation type TMyClass = class private procedure DoSomething; begin ShowMessage('Hello guys!'); end; public end;
  7. Sonjli

    FireDAC SQLite MetaDefCatalog

    Hello, I am trying to execute this SQL with FireDAC in D12 ent: create table if not exists mydb.mytable (name varchar(100) unique not null); With FDConnection.ExecSQL(...); These are the params I pass to the connection: DriverID=SQLite Database=mydatabase.db MetaDefCatalog=mydb CreateDatabase=True As I read in Embarcadero docs: https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Connect_to_SQLite_database_(FireDAC) Well, the SQL with the "mydb" alias does not work. If I use "MAIN" (look at next sql) then it works, whatever "MetaDefCatalog" value I set! create table if not exists MAIN.mytable (name varchar(100) unique not null); -- <-- WORKS! create table if not exists mytable (name varchar(100) unique not null); -- <-- WORKS! create table if not exists mydb.mytable (name varchar(100) unique not null); -- <-- DOESN'T WORK! Thanks, Eddy
  8. Sonjli

    FireDAC SQLite MetaDefCatalog

    FYI everything works like a charm. Thanks again
  9. Sonjli

    FireDAC SQLite MetaDefCatalog

    wooo, never used this feature... thank you!
  10. Sonjli

    FireDAC SQLite MetaDefCatalog

    Thank you very much. I try.
  11. Sonjli

    FireDAC SQLite MetaDefCatalog

    I use a multi database framework that need to do its queries using the schema name. It supposes that I can have many dbs and that I can mix tables in SQL, like all schema-based db does (SQLServer, Oracle, etc.) example: select dbusers.dbo.users.name, dbauth.dbo.athentications.read, etc.
  12. Sonjli

    FireDAC SQLite MetaDefCatalog

    How do you make it work with FireDAC? Do you use two connections? Can you better explain with examples? Thanks
  13. Sonjli

    Format function params

    Hi, Embarcadero will probably no more support the .net formatter, so the GExperts one is the best on the market. I am studying it and looks very good, with some small lacks. Method params Is it possible for the formatter to format method parameters one per line? The Delphi default formatter can do this. Example: // not formatted procedure myproc(const a: string; b: integer); // formatted one per line procedure myproc( const a: string; b: integer); Blank lines Is it possible to remove these lines? // not formatted procedure myproc(const a: string; b: integer) var a: integer; begin end; // formatted, the blank line remains procedure myproc(const a: string; b: integer) !!! <---- var a: integer; begin end; Thanks (more to come... )
  14. Sonjli

    A lot of data...

    Hello, I have a Firebird table with hundred millions of record as time series. For example: DateTime: 01-01-2023-10:00 Data: Some fields with amazing data 🙂 Now I have to made some analysis on them and I am looking for a good system to extract data and build some "datamart" or snapshots or whatever you want. I was looking for Apache Hadhoop that looks great for my scope, but I have not experience and I'd prefer some Delphi-istic solution. Great ideas appreciated, Thanks
  15. Sonjli

    LSP processes

    Premise: this is a question on "how to" and not specifically about the IDE. I see that IDE runs some separated processes of the LSP server. - How is this made? - How can IDE "talk" with these sub-processes? - I can also kill these processes and the system continues and also re-run them, how can it be? Thanks in advance
  16. Sonjli

    LSP processes

    Thank you. My question is more stupid and generic. I am not specifically interested with LSP... How can I run my Process with "children" processes as the IDE does with LSP? I am usual to run tasks or threads but I don't see them in Windows "Task manager"
  17. Sonjli

    COM: OleCheck() in polling

    Hello, I hope not to be out of topic... I have a COM client (developed as NTService) that every 5 minutes need to reconnect to server (don't ask me why... the COM server kick out clients for "security" every 5 minutes). In every "connect" I do this: OleCheck(CoInitializeEx(nil, COINIT_MULTITHREADED)) Can this be a problem? I see that sometimes, after 30/40 reconnections, the COM server seems "locked". No other clients can connect correctly to the server until I kill my NTService. It is not fault of the "security" system, because I still tested that. Any ideas? Ask me for infos if you need. Thanks in advance, Eddy
  18. Sonjli

    FMX Default style in TStyleBook

    Hi, I search for this topic all along the forum without success, so I ask here hoping someone answer me... I make a simple one form application in FMX (HD form, not 3D) I add TStyleBook Set the UseStyleManager := True Download a style from GetIt (for me "Stellar") Double click on SB Open the style editor Load the (Android) stellar style First question: The stellar style has a file .style for every platform, why? I want one style for all platforms I copy and paste the Android platform style to the default style and delete the android one Here for many times, when I close and reopen the project the IDE says "Android style not found"... why? I start the app in Win32: every form is perfectly styled I start the app in Android: all messed up No controls at all or, sometimes, default android style, why? If I re-add the android platform to style then Android goes well Windows platform uses the "windows" style if present, else the "default" style Android platform uses the "android" style if present or nothing. The default style is not taken at all I have D11.3, Android 11/12/13 on some oppo phones. That is. This is a stackoverflow thread from the well known Dalija Prasnikar mvp: https://stackoverflow.com/questions/61534033/what-is-the-purpose-of-the-default-platform-marker-in-the-list-of-tstylebook-s Thanks for any help Eddy
  19. Sonjli

    FMX Default style in TStyleBook

    I understand. I opened a .style (thanks, I didn't know now they are text...) and found the "target". It is clear. So this means that is always better to keep separated TStyleBook for different platforms or maybe always to have separated platforms in a TStyleBook. This also means that "default" platform is pretty useless... do you agree with me?
  20. Hello, I need to override the constructor of the main form of my FMX application. The problem is that the mechanism that fmx uses to select the main form is very strange and the constructor of the main form is never called. Anyone knows why this behaviour? Thanks! Eddy
  21. Sonjli

    Override the constructor of Main form

    I am very sorry. I will close this post. I found my horrible mistake... shame on me
  22. Sonjli

    Formatting method

    Hello, I have a strange behaviour when I add a new parameter in a method. My method has 2 params like this procedure TForm1.Test( const par1: Integer; const par2: string ); begin // ... end; I add the new param with The result is a wrong formatted code: procedure TForm1.Test(const Par1: Integer; const Par2: string; const NewParam: Integer); begin // end; The more params there are, the worst is the formatting... I would like to maintain the same formatting for my params. Any hint? Thanks, Eddy
  23. Hello, I attach a stupid D11.2 project with FD on MySQL compiled in 32 and 64 bit windows. Simple connection to mysql using libmysql.dll 32 and 64. With 32 everything is ok, with 64 it is not working. Before you ask: - FDDrivers.ini is located only in one place with nothing inside (it is the base embarcadero file) - In the source you can see my connection params - I don't use TFDPhys... because I want my exe to use local (same exe path) DLLs - I followed Embarcadero guidelines (vs2015 runtime, etc.) - I tryed with libmysql.dll from 8.x and 5.x (also the 5.7.29 as Embarcadero says), but same bad results Link to archive: https://we.tl/t-8ydNpkhi5u (If link is gone, tell me!) Any idea? Thanks
  24. Sonjli

    D11.2 + FireDAC + MySQL 64 bit not working

    Hi, Thanks. Did you try to download the 7z archive and run the executable at Win64? It is not running on any machine. I did the VC2015 setup and set the VendorLib, too, but nothing changes. Win32 is ok, Win64 give the error: [FireDAC][Phys][MySQL]-314. Cannot load vendor library [libmysql.dll]. The specified module could not be found. Check [libmysql.dll], which is located in one of the PATH directories or in application EXE directory.
  25. Hello. I am using RTTI to loop trough attributes. If I do this I get FALSE with the IS operator. I premise that "Attribute" is surely and absolutely "MyAttributeOne" class. if Attribute Is MyAttributeOne then IsMyAttributeOne := True But if I do this if Attribute.ClassNameIs('MyAttributeOne') then IsMyAttributeOne := True Then I get a wonderful TRUE. Any idea about this? Thanks Eddy
×