Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 11/15/22 in all areas

  1. Carlo Barazzetta

    StyledButton and StyledDialog

    After the preview at IT-DevCon 2022 in Rome, I'ts time to release a new Open-Source project for Delphi-VCL, which will surely help to modernize "legacy" applications (support up to Delphi XE6 version). StyledButton is a completely customizable VCL "button": thanks to its versatility it is possible to use it in multiple ways, like a classic Delphi button, but with the freedom to define the border, color, aspect (rectangular, circular, squared), or as an "Icon" or "FAB", but above all it is simple to configure thanks to the many templates that "mimic" the behavior of the Bootstrap and Angular buttons, for example... StyledTaskDialog offers the possibility to completely customize the messages of your app, completely replacing the system TaskDialog, and also providing support for animations (using Skia4Delphi of course). With handy demos and examples showing most of the features... please click on the "star" if you like the project! github.com/EtheaDev/StyledComponents Any suggestions or requests for improvements are always welcome!
  2. bit Time Professionals s.r.l., a software company based in Rome (IT) with branches in Europe, is looking for 5 Delphi Developers. We have availability for both for contract work or permanent positions. Mandatory qualifications: - In-depth and current knowledge of Delphi (recent versions, at least from Delphi 10 Seattle onwards) - Excellent knowledge of OOP, OOD and design pattern - Knowledge of SQL and interfacing with relational databases - Knowledge in RESTful API design and development - Autonomy and problem solving attitude - Knowledge of Italian and/or English Appreciated optional skills: - DelphiMVCFramework - Python - C# - Javascript/TypeScript - React, Angular, Vuejs or similar Other information: - Work office in Rome (italy) or fully remote - Frequent Internal trainings - Fringe benefit Remuneration commensurate with the experience and knowledge demonstrated during the technical interview. Gross Annual Salary starting from 32K (will be discussed after tech interview) Company website https://www.bittimeprofessionals.com/ Send CV to professionals@bittime.it
  3. Angus Robertson

    TSuperObjectIter ObjectFindFirst problem

    Thanks for the code, added to my local copy, will be in SVN later this week. Angus
  4. PizzaProgram

    TSuperObjectIter ObjectFindFirst problem

    PS: Thanks for notifying me, and your patients ! 😉
  5. PizzaProgram

    TSuperObjectIter ObjectFindFirst problem

    No, can not EDIT. That function is Disabled. Maybe that was the problem before >> it showed the Edit button on that day, but did not really allow it. Here is it again: function SearchInAll(inWhat: ISuperObject; const findThis : string): string; // returns '' if not found var JsonSearch : TSuperObjectIter; i : integer; begin Result := ''; if inWhat = nil then Exit; if ObjectFindFirst(inWhat, JsonSearch) then begin repeat if JsonSearch.key = findThis then Result := JsonSearch.val.AsString else if JsonSearch.val.DataType = stObject then Result := SearchInAll( JsonSearch.val, findThis ) else if JsonSearch.val.DataType = stArray then begin for i := 0 to JsonSearch.val.AsArray.Length -1 do begin Result := SearchInAll( JsonSearch.val.AsArray.O[i], findThis ); if Result <> '' then Break; end; end; if Result <> '' then Break; until not ObjectFindNext(JsonSearch); end; ObjectFindClose( JsonSearch ); end;
  6. Anders Melander

    How to 'disconnect' a TFDQuery keeping the datas.

    Read the documentation. Search for FireDAC offline
  7. Rollo62

    Getting FireMonkey iOS development off the ground

    We have all the same goal in mind, but Apple does its best to keep this goal as far and impossible as it could be 🙂 I'm afraid you have to work through all the docs and threads that are out there, all the time. Embarcadero has a quite good explanation of the whole process for the start, but it may break easily at every little step in every little building block involved (MemberCenter certificates/provisioning, key chain old/double provisioning files, Macos setup, Macos updates, Macos version, Platform CPU, iOS version, iOS/Macos off-sync. versions, XCode version, SDK-Versions, SDK-Missing internal parts, network/wifi connection, Transporter version, AppStore, certificate, DeviceID, Device image, PAServer, Delphi version, ...). Even XCode itself sometimes cannot resolve everything smoothly, you will have to dive deep into all those forums. It would help if you would present a failure message you've got, to get more insights. Usually the best way is to prepare a new ID, certificates, devices in the MemberCenter manually and to use XCode to prepare iOS device for development, starting an empty project on iOS, it can manage provisioning files to some degree. Once it works, usually it stays quite stable for a long time. When you leave it alone for two or three weeks, you might see some provisioning issues and need to re-establish the connection sometimes (at least I have such experience here).
  8. Why are you trying to send JSON? That is not what Microsoft's documentation tells you to send: https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow#redeem-a-code-for-an-access-token The body is NOT to be JSON at all. It needs to be a '&'-delimited list of 'name=value' pairs instead. The TIdHTTP.Post() method handles the 'application/x-www-form-urlencoded' format for you, but only if you give it a TStrings (like TStringList), not a TStream, eg: requestBody := TStringList.Create; requestBody.Add('grant_type=client_credentials'); requestBody.Add('client_id=xxx'); requestBody.Add('client_secret=_xxx_'); requestBody.Add('scope=https://graph.microsoft.com/.default'); url := 'https://login.microsoftonline.com/' + TenantID + '/oauth2/v2.0/token'; FLastResult := IdHTTP.Post(url, requestBody);
  9. Stefan Glienke

    Array size 64bits

    The difference in performance is clear - accessing a dynamic array which is a field inside the class is two indirections while accessing a static array which is a field inside the class is only one indirection. If you inspect the generated assembly code you will see that every access to the dynamic array has more instructions. This is the case every time you have repeated access to a field inside a method because the compiler does not store it away as if it was a local variable and then directly reads it but basically does Self.Table every time. For this exact reason I have explicitly written code that first reads the dynamic array into a local pointer variable (to avoid the extra reference counting) and then operate on that one via hardcast back to dynamic array (or via pointermath). That way the compiler could keep that in a register and directly index into it rather than dereferencing Self every time to read that dynamic array. To try out, add this code to your Button1Click: {$POINTERMATH ON} Table: ^DWord; {$POINTERMATH OFF} begin SetLength(Self.Table, NbPrime); Table := @Self.Table[0]; Now the code accesses the local Table variable which most likely is stored in a register.
  10. Remy Lebeau

    Sender of TAction.OnHint Event?

    Unfortunately, you can't, at least not from the event itself, anyway. You will have to instead use a different event handler for each action, making them call a common method if they need to share code, eg: procedure TForm1.Action1Hint(var HintStr: string; var CanShow: Boolean); begin DoActionHint(Action1, HintStr, CanShow); end; procedure TForm1.Action2Hint(var HintStr: string; var CanShow: Boolean); begin DoActionHint(Action2, HintStr, CanShow); end; procedure TForm1.DoActionHint(Sender: TObject; var HintStr: string; var CanShow: Boolean); begin ... end; .
×