Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 10/18/24 in all areas

  1. Lars Fosdal

    Delphi 12.2 Patch 1

    Make sure to uninstall the Parnassus plugins before installing the patch.
  2. The problem is that TBlahFrame is only a declaration of a TFrame descendant and not a designable TFrame. This way the IDE cannot detect that TFrame1 has to be treated as TFrame by the designer. You either need to make TBlahFrame a proper TFrame with a dfm and the corresponding entries in the dpr and dproj, or you declare an alias for TBlahFrame with the name TFrame and use that as the parent class for TFrame1. TBlahFrame = class(TFrame, IBlah) procedure Foo; virtual; abstract; end; TBlahFrameClass = class of TBlahFrame; type TFrame = TBlahFrame; uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, intf; type TFrame1 = class(TFrame) private
  3. Remy Lebeau

    HTTP/1.1 400 Bad Request

    The JSON spec allows whitespace between tokens. Any parser that can't handle that is broken.
  4. Angus Robertson

    Delphi 12.2 Patch 1

    It would be good if GetIt kept a 'previously installed' list when it uninstalls stuff, which is not cleared during a new install, and that list had a re-install button. It would also be good if GetIt properly uninstalled Parnassus and FmxLinux so the new install does not just fail with a load of DLL errors. Angus
  5. Because aDialog is not assigned when an exception is raised inside TMyDialog.Create. That causes Free called for an uninitialized variable inside the finally block. A workaround would be to set aDialog to nil before the try, but the cleaner way is to move the Create outside the try-finally.
  6. pyscripter

    SynEdit now supports mulit-caret, multi-selection editing

    In case you want to influence future development of SynEdit, vote in this poll.
  7. pyscripter

    Delphi 12.2 Patch 1

    Please see Delphi 12.2 available for download - Delphi IDE and APIs - Delphi-PRAXiS [en] (delphipraxis.net)
  8. PeterBelow

    Strange effect in TRichEdit: CTRL+I outputs TAB

    You have to use OnKeyPress and check for Ctrl down there. The behaviour you see is perfectly OK, by the way. Ctrl-<letter> combos have created control characters since the ancient days of DOS, and ^I (#9) is the TAB character...
  9. Uwe Raabe

    Delphi 12.2 available for download

    MMX V15.1.11 works in all Delphi 12 versions, but V15.1.12 was compiled with Delphi 12.2 (without Patch 1) and thus suffers from this problem.
  10. Uwe Raabe

    Delphi 12.2 Patch 1

    A suitable version for MMX is available now.
  11. Uwe Raabe

    Delphi 12.2 available for download

    A suitable version for MMX is available now.
  12. Ian Branch

    Delphi 12.2 available for download

    It is also a breaking change for all those 3rd Party libraries that you get their source code for and install by building their files. I have spent a couple of hours rebuilding libraries I had the source for that needed to be re-installed as, presumably, their existing .bpl/.dcp/.dcu files were no longer compatible. Also the existing installed plug-ins - GExperts, Eurekalog, MMX & cnWizards won't load. I rebuilt GExperts and is OK but I will have to wait for the other 3.
  13. Remy Lebeau

    Simulate blocking mode to send Email

    A more efficient approach would be to wait on both your EventSignal and the RTL's Classes.SyncEvent at the same time, calling CheckSynchronize() only when SyncEvent is signaled (ie, when there are sync requests pending). This way, when neither condition is true, your calling thread can actually go to sleep instead of running a busy loop. For example: uses ..., Classes, Windows; var Handles: array[0..1] of THandle; begin ... // Simulate blocking Handles[0] := oOutLook.EventSignal.Handle; Handles[1] := Classes.SyncEvent; repeat case Windows.WaitForMultipleObjects(2, @Handles[0], False, Infinite) of WAIT_OBJECT_0: Break; WAIT_OBJECT_0 + 1: CheckSynchronize; else RaiseLastOSError; until False; ... end;
  14. Remy Lebeau

    Delphi 12.2 Patch 1

    https://blogs.embarcadero.com/rad-studio-12-2-athens-inline-patch-1-available/
  15. Vandrovnik

    Identifying Third-Party and Custom Components

    For Delphi, I would use "grep" on .dfm files, searching for lines starting with "object" and may be "inherited": object ActionList1: TActionList From this lines, component type can be extracted. Remove duplicates, may be count occurencies... It does not tell from which unit that component comes, but I suppose most of them could be identified.
  16. Remy Lebeau

    Identifying Third-Party and Custom Components

    AFAIK, there are no such tools. You just have to analyze your project sources yourself. Identify which components your project uses, and which package each component comes from. Then determine whether each package comes with the IDE, was developed in-house, or was obtained from a 3rd party. It might be worth writing a small tool yourself to help you parse your DFMs/code looking for component names and use RTTI to extract unit/package information for each one. But I don't recall right now whether the RTTI in C++Builder 5 was rich enough to have that kind of information. I'll have to look next time I'm at my computer.
  17. Uwe Raabe

    creating a frame at runtime

    It is even possible at design time. Setting an empty name to a component will remove the corresponding field in the class. It is often used with TLabel instances that only exist to display some static text, but won't be accessed in the code. It reduces code cluttering a bit.
  18. Also SetKey is buggy !!! and not only ! procedure TCREncryptor.SetKey(const Key; Count: Integer); begin SetKey(TBytes(@Key), 0, Count); // TBytes(@Key) instead of TBytes(Key) end; procedure TCREncryptor.SetKey(const Key: TBytes; Offset, Count: Integer);
×