Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 07/11/23 in all areas

  1. D11.3 uses some additional linker option by default to enable the address space layout randomization (ASLR) feature. Try to disable that and see if it fixes the issue.
  2. Oh, relax. 😉 It's no bothering at all. In the end, there is now the information, that wibukey seems to be imcompatible to certain constellations with newer Delphi-projects. Not a Delphi-issue, but maybe an useful information for other wibukey-users.
  3. Wagner Landgraf

    support for login / auth for web apps

    One of the most famous authentication SaaS is Auth0. Never heard about descope before. While those tools are really full-featured, they can get expensive pretty fast if your app grows. TMS Sphinx is our (TMS Software) alternative Delphi library for those solutions, where you build your own "descope-like" or "auth0-like" server yourself: https://doc.tmssoftware.com/biz/sphinx/guide/ Things like "adding custom fields to user profile" would obviously not be an issue, since you have full control your authentication server. TMS Sphinx doesn't have all those enterprise features they offer, of course. But it's still OAuth2 compliant and has many features for an authentication server that servers most purposes, even for multi tenant, public SaaS services.
  4. Make minimal reproducible sample and send it to Wibukey support. You paid them money, let them do their job
  5. Lajos Juhász

    FireDAC Create table with TFDTable class at SQL Postgres 14

    I cannot help here. If you're going to feel better I have similar issues with auto generated SQLs on Informix. My solution is to generate SQL in my code and don't rely on auto generated statements.
  6. aehimself

    Hosting a console in a Delphi Application

    Minimum code I used is: procedure TForm1.FormCreate(Sender: TObject); Var windowstyle: Integer; appthreadid: Cardinal; cmdhandle: THandle; Begin cmdhandle := FindWindow('ConsoleWindowClass', 'Command Prompt'); // Hide title bars and borders of launched application windowstyle := GetWindowLong(cmdhandle, GWL_STYLE); windowstyle := windowstyle - WS_CAPTION - WS_BORDER - WS_OVERLAPPED - WS_THICKFRAME; SetWindowLong(cmdhandle,GWL_STYLE,windowstyle); // Attach the container applications input thread to the launched ones, so that we receive user input appthreadid := GetWindowThreadProcessId(cmdhandle, nil); AttachThreadInput(GetCurrentThreadId, appthreadid, True); // Docking. Change the parent of the launched application WinApi.Windows.SetParent(cmdhandle, Self.Handle); SendMessage(Self.Handle, WM_UPDATEUISTATE, UIS_INITIALIZE, 0); UpdateWindow(cmdhandle); // Make the docked window fill all the client area of the container SetWindowPos(cmdhandle, 0, 0, 0, Self.ClientWidth, Self.ClientHeight, SWP_NOZORDER); // This prevents the parent control to redraw on the area of its child windows (the launched application) SetWindowLong(Self.Handle, GWL_STYLE, GetWindowLong(Self.Handle, GWL_STYLE) Or WS_CLIPCHILDREN); // SetForegroundWindow(WindowHandle); // SetFocus(WindowHandle); End; This does not take care of resizing the docked window if the form resizes and you also have to keep an eye on if / when your docked application closes. Also it includes no error checking / handling. The result is as expected:
  7. tinyBigGAMES

    AskChatGPT

    Integrate with OpenAI's ChatGPT API seamlessly from Delphi. Features Easily access the GPT API from a single class Supports both GPT3 and GPT4 models API key can be read from ChatGPTApiKey environment variable if defined Automatically sanitizes input to minimize errors Ability to define proxy settings Adjust personality response with a precision range of 0-1, from precise to creative Stream responses just like in the ChatGPT web interface Usage Get your API Key: https://platform.openai.com/account/api-keys Define environment variable ChatGPTApiKey and assigned your API key. You may have to reboot your machine for it to take effect. // Basic example showing how to query ChatGPT uses AskChatGPT; var LChat: TAskChatGPT; begin LChat := TAskChatGPT.Create; try // set chat params LChat.Model := GPT3; // use the GPT3 model, or GPT4 for the GPT4 model LChat.Creative := 1; // 0-1, 0 being most percise and 1 being most creative // ask question LChat.Question := 'What is Delphi?' // print question PrintLn('Q: %s', [LChat.Question]); // process and print response if LChat.Process then PrintLn('A: %s', [LChat.Response]); finally LChat.Free; end; end; Media Download https://github.com/tinyBigGAMES/AskChatGPT
  8. vhanla

    borderless with aero shadow

    type TForm1 = class(TForm) Panel1: TPanel; procedure FormCreate(Sender: TObject); private { Private declarations } procedure WMNCCalcSize(var Msg: TWMNCCalcSize); message WM_NCCALCSIZE; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin // to hide white 1px line in top DoubleBuffered := True; Panel1.Align := alClient; Panel1.BevelOuter := TBevelCut.bvNone; Panel1.Caption := ''; // enable DWMApi Shadow GlassFrame.Top := 1; GlassFrame.Enabled := True; end; procedure TForm1.WMNCCalcSize(var Msg: TWMNCCalcSize); begin // to hide caption bar Msg.Msg := WM_NULL; inherited; end; I was playing with this in Windows 10/Rio. I don't know if on other versions requires more adjustments (I guess so), but this was short code to achieve that. And it keeps system context menu, aero snap response too. I tried painting canvas to remove the 1 pixel white line at the top, no success, but `doublebuffered` set to true along a component occupying that part was enough.
×