Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Clément last won the day on July 1 2022

Clément had the most liked content!

Community Reputation

129 Excellent

Technical Information

  • Delphi-Version
    Delphi 11 Alexandria

Recent Profile Visitors

2205 profile views
  1. Clément

    When will we have a 64-bit IDE version ?

    If I could guess, I would say, 64 bit IDE is not in their short term plans. BUT.... They have been working hard to "clean up" some features. ( Some still need some love) All that work will payoff, and among other things, the availability of 64 bits ( I'm an optimist, shoot me!). <SpyVsSpy> I'm almost certain some fellow developer is trying to compile "the project" in 64 bits and hopefully the hints, warnings and errors are getting lower. </SpyVsSpy>
  2. Clément

    New Grep Expert in GExperts - need a name

    Grep'oMania Greppsody VelociGrepXpert
  3. I'm still reading and trying to figure some aspects of this projects. May be I just need to learn a little more to be able to ask my friend the right questions.
  4. This is one of my strongest arguments against this projects. But since it's a friend, I want to make sure I can explain the "why, hows, and don'ts" He considered other applications ( I will ask him about WireGuard ), and most have "extra features" that are not required. He just wanted a "plain old simple VPN" that works without extra features that goes way beyond what he requires. When some specs uses the word "simple", it just makes me run the other way. The problem in this case is the "friend" part. He would have asked if didn't required it. So.. Now that I learned a little more to be scared, I think I can get him scared too .
  5. As far as I can tell, a VPN ( no system-wide local network ) , a "basic" secure channel... I'm gathering information for our next meeting.
  6. N in VPN (local network between peers connected through the channel) I was just talking with a friend, and he would to have his own VPN integrated solution. He asked me if I could do it (write both VPN server and Client in Delphi). And I said that I have no idea! If possible, I would like to use SSTP as protocol and ICS as Client and Server app. After googling up a little and found some python implementation of a "simple VPN server". I found C samples to open a Private Network in windows. Some code (in Python) of a VPN server, and some client application In C too... Unfortunately nothing in Delphi (or pascal). I'm just hoping not to find the word "Driver" in the specifications Anyway, I hope to find a way to implement the basics
  7. Hi, I googled to find some hints on how to create my own VPN solution. I'm still researching and I found nothing in Delphi (or pascal) that covers this subject. Some C examples are in linux, but I would like to focus on windows only. Any ideas? TIA
  8. Clément

    Click a link in EDGE Browser

    JS is scary! Goes against everything that is safe and sound. I really can't say who ( or what) wrote that code. It be can be a person, a framework or ChatGPT. They prefer to use a "Desktop application" to handle filtering and selection rather than modify the code. This should raise some red flags.
  9. Clément

    Click a link in EDGE Browser

    Just managed to do it in plain JavaScript! I navigate to the corresponding row using DOM, found the <a> tag and called click..... So easy!
  10. Clément

    Click a link in EDGE Browser

    In this project I'm downloading a page in EdgeBrowser. My application is extracting the main table, and displays it nicelly in a TreeView structure. The HTML table has several rows, and the last cell has a "ng-click" which I need to click. My TreeView already has a button, when the user clicks that button, I must click the corresponding "ng-click" and download detailed information about the product and display it. The last cell information looks like this (This is the last cell HTML code.) I have no idea how to reach that "ng-click" fellow: <a href="" class="btn btn-transparent" ng-if="::thisProductInventory.availableBallast && thisProductInventory.isAvailable" ng-class="{'btn-block':$root.mediaQueries['$res-phone-mid-landscape']()}" ng-click="ProductInventory(thisProductInventory, $event)"> There's no Click, onClick or any other option which I'm familiar with. It appears to be some Angular stuff. Can shed some light? I'm using DOM to navigate / extract data from the page. So ideally id would be perfect to reach something like "element.click()". (I have no way to modify the javascript code. All I can do is "interact" through Delphi /Edge with the page.) TIA
  11. Clément

    Use case or if else ?

    In order to decide between them I usually check a few things: 1. "Staticness" : How often will upper bound change. Is the Index "Static". 2. "Filledness" : How well will the structure be filled. 3. Missed Index : How often will I hit one of those empty index, and if I hit what happens ( How easily can I deal with it ) 4. Element Owner : If the elements are instances "Who" will created them. "Who" will free them. Will "Who" be the same? 🙂 Indexed array is a great structure. Can be both performant and low size. "Dictionary" has it's weight. I'll use them whenever it's benefit outweigh this cost. Anyway.. I often use TDictionary or (TObjectDictionary) because I rarely have static index. ex: GUID is the key to another structure. In the example I gave, it is possible to add decoders at runtime ( from a DLL, or a database). And it wouldn't required a recompilation. Which very cool!
  12. Clément

    Use case or if else ?

    I would also register my methods. They all seems to have the same signature. unit Unit121; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Generics.Collections, Vcl.StdCtrls; type TMyDecodeProcedure = procedure ( aDoc, aCdn, aRequestCorrelation, aMessageText : string ) of object; TForm121 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } fDecoders : TDictionary<String, TMyDecodeProcedure >; procedure RegisterDecodeFunc; procedure DecodeExportAcc( aDoc, aCdn, aRequestCorrelation, aMessageText : string); procedure DecodeExportErr( aDoc, aCdn, aRequestCorrelation, aMessageText : string ); procedure DecodeExportReg( aDoc, aCdn, aRequestCorrelation, aMessageText : string ); public { Public declarations } function Execute( aDecoder, aDoc, aCdn, aRequestCorrelation, aMessageText : string; var aErrMsg : String ) : Boolean; end; var Form121: TForm121; implementation {$R *.dfm} procedure TForm121.FormCreate(Sender: TObject); begin fDecoders := TDictionary<String, TMyDecodeProcedure >.Create; RegisterDecodeFunc; end; procedure TForm121.FormDestroy(Sender: TObject); begin fDecoders.Free; end; procedure TForm121.DecodeExportAcc(aDoc, aCdn, aRequestCorrelation, aMessageText: string); begin // end; procedure TForm121.DecodeExportErr(aDoc, aCdn, aRequestCorrelation, aMessageText: string); begin // end; procedure TForm121.DecodeExportReg(aDoc, aCdn, aRequestCorrelation, aMessageText: string); begin // end; function TForm121.Execute(aDecoder, aDoc, aCdn, aRequestCorrelation, aMessageText: string; var aErrMsg : String): Boolean; var lDecoder : TMyDecodeProcedure; begin Result := fDecoders.TryGetValue(aDecoder, lDecoder); if Result then lDecoder( aDoc, aCdn, aRequestCorrelation, aMessageText ) else aErrMsg := Format('Decoder not found: %s', [aDecoder] ); end; procedure TForm121.RegisterDecodeFunc; begin fDecoders.Add('EXPREG', DecodeExportReg ); fDecoders.Add('EXPACC', DecodeExportAcc ); fDecoders.Add('EXPERR', DecodeExportErr ); { ... } end; procedure TForm121.Button1Click(Sender: TObject); var lErrMsg : String; begin lErrMsg := ''; Execute('EXPREG','1','2','3','4', lErrMsg); end; end. And you can add decoders more easily too..
  13. Clément

    Delphi Professional Database Connectivity

    FireDac has restrictions in Professional and Community edition. Check this: https://www.embarcadero.com/docs/rad-studio-feature-matrix.pdf
  14. Clément

    Migrating projects from Delphi to .Net

    How productive is you customer using you application? That's the question you should ask yourself. You can take whatever IDE you like... and what? Clone you exact application UI, behavior and functionality. All the fancy .NET stuff would still be under the hood. So.. what does he need.... exactly! Ah! He wants something new, which means something different. What exactly? less clicks? More "live" information on screen? Dashboards? Notifications? Users wants productivity. Developers wants fast time to market, One excludes the other
  15. It doesn't seem to be a dproj or dpr related, but how old is your .dproj ? Have you create a new one for 11.x? Are all your .pas files in you dproj? if not, make sure your are deleting all dcus files manually prior to rebuild. For example, if you select "CLEAN" the IDE will delete only the files present in your dproj, you might get some old dcus in your built! If this is the case, third party dcus are the first you need to check.