Jump to content

Brian Evans

Members
  • Content Count

    295
  • Joined

  • Last visited

  • Days Won

    4

Posts posted by Brian Evans


  1. 8 minutes ago, aehimself said:

    Aaaaand jackpot! Adding Application.SingleBufferingInRemoteSessions := False solves the issue for good, no more dimmed memo is visible through RDP!

     

    The only question which I have remaining - if DoubleBuffered is false everywhere in the test application, how come enforcing single buffering makes a difference? Shouldn't that be the default, if .DoubleBuffered is false on the form and on the frame?

    Likely interacts with the WS_EX_LAYERED style in some way as that style does do some extra work (composes and repaints layered windows and the windows of underlying applications).

     

    Window Features - Layered Windows - Win32 apps | Microsoft Learn

    Extended Window Styles (Winuser.h) - Win32 apps | Microsoft Learn


  2. More than just not ideal. Logging should have minimal impact which means introducing lock contention is counterproductive. The locks will change the runtime behaviour of the processes introducing coupling, uncertainly and variance. Performance issues will have admins turn off logging in production then when issues need to be investigated turning it back on means the processes behave differently frustrating attempts to reproduce those issues. 

     

    Most go with one of:

    1) One log file per process + read them into a combined view as needed. 

    2) A logging process of some sort that other processes send log message to.   


  3. 1 hour ago, Steve Maughan said:

    @Cristian Peța you found it!! When I disable the ASLR in Delphi 11.3 it also runs fine in 64 bit mode. That makes sense.  MANY THANKS!

     

    Now the question is, how do I make it work with ASLR enabled.

     

    — Steve

     

    It will crash if the top thirty-two bits of any pointer handled by the buggy code are not all zeroes. That just happens more often if ASLR is enabled or all the time if ASLR + the high entropy allocator is enabled. 

     

     

    • Like 1

  4. The History tab the IDE editor shows them and lets you compare between the different versions.  At the bottom right there are Code Design and History tabs. When the History tab is active there are Contents, Information and Differences tabs on the bottom left.  

     

    There is also an Autoreover feature that will periodically save changes to modified files (default every 10 minutes) to a _recovery directory in case the IDE crashes. IDE -> Saving and Recovering. 


  5. With a few exceptions for debugging purposes lower integrity processes cannot mess with higher integrity processes. That includes sending input or paste operations. 

     

    The quick example for why this is not allowed would be a command window with Administrator privileges - not a good thing security wise if all other apps could paste whatever they wanted into it.  

     


  6. The Delphi ecosystem contracted over the years and a lot of third-party component developers had to increase prices or fold / exit the market. One that is still around is Developer Express (as somebody already mentioned) whose VCL components have good support and include a VCL Spreadsheet control: VCL Spreadsheet Inspired by Excel - Delphi, C++Builder (devexpress.com).  The also have a VCL Layout & UI Design Control which you could add controls to for auto-layout: VCL Form Layout Control for Delphi and C++Builder Developers (devexpress.com).   

     

    They have both 30-day trials and a demo program that does an excellent job of showing what that the various controls do and how they behave. 

    Main page: VCL UI Components for Delphi & C++Builder | DevExpress scroll down for smaller packages with a subset of the components. 


  7. Which LKS-92 coordinates? There are LKS-92 XYZ (spatial rectangular co-ordinates), LKS-92 BLh (geospatial co-ordinates on rotational ellipsoid) and LKS-92 TM (Transverse Mercator projections in plane co-ordinates). One (BLh) is already in long and latitude.

    Quote

    8.2. as geospatial co-ordinates on rotational ellipsoid, designated with LKS-92 BLh, where:

    8.2.1. northern latitude is designated with B; 8.2.2. eastern longitude is designated with L;

    8.2.3. geodetic (ellipsoid) height is designated with h;

    8.2.4. northern latitude and eastern longitude is expressed in degrees (°), minutes (’) and seconds (");

    8.2.5. height is expressed in metres

    Ref:  Republic of Latvia Cabinet Regulation No. 879 Adopted 15 November 2011 Regulations Regarding the Geodetic Reference System and the Topographic Map System

            found at: Ministru kabineta (fao.org) (from Food and Agriculture Organization of the United Nations (FAO) website)

    Note: some latter revisions but they do not appear to have been translated (This document has not been officially translated by the State Language Centre.). Main ref site:

       Ģeodēziskās atskaites sistēmas un topogrāfisko karšu sistēmas noteikumi (likumi.lv)

     


  8. In Windows command line Find searches for text in files.

     

    In BASH it does look more like your find command, it would need to be run with WSL.EXE not CMD.EXE if you are using Windows Subsystem for Linux. The path probably needs to be put in double quotes in case it contains spaces and be fixed up to be what it would be looking for the Linux side.

  9. pdf417


    Looking at the source code and the error it looks like it tries to use text mode which then fails since that mode supports a limited set of characters. It uses some internal functions to test what mode it should use based on the input string but gets it wrong with your strings. 

     

    The component does support an extended syntax where the bytes can be represented directly in the string using escape codes \ddd so you could convert the whole string to a UTF8string then build a string to input by escaping each byte value in the UTF8 string into the input string. Not as easy as it sounds due how Delphi tries to help with strings. No luck trying to get this to work either- Delphi really fights too hard and the docs do not help any. 

     

    Copied St2DBarC.pas to the project directory and modified the GoodForNumericCompaction and GoodForTextCompaction by commenting out everything but the first line's Result := False; This forces binary mode. Still making sure the correct bytes are encoded seems iffy as the barcode looks too wide after passing in just \196\140. 


  10. It is not unheard of for others to confirm they also encounter, make comments on, and find a way to reproduce a bug. An example would be: https://quality.embarcadero.com/browse/RSP-34111 which followed this pattern and a bug that was around for several Delphi releases was fixed. For those without QC access: it was about a dangling scroll bar sometimes seen in the IDE, fixed in Delphi 11. 

     

    As for this one - looks like something is overdrawing just the color name on top of the color box + name that should be there.  

    image.thumb.png.a8bfdfd93de36cfd3d9cf3e46d17edaf.png

     


  11. I stayed on Delphi XE Professional or a long time - until buying a license for Delphi 10.2 Enterprise about 9 years later. I had no issues getting a bump when needed and being able to re-install the aging versions of Delphi, Developer Express VCL and NexusDB Standard Edition as needed over those nine years contributed to my decision to upgrade and have active subscriptions for all three today. Not sure that would be the case if I encountered friction in installing any of them during the close to a decade I did little paid Delphi development. 

     

     


  12. You can also re-arrange fields to minimize the gaps added for alignment. A re-arranged second version of the record is also 8 bytes. 

      TBloodyTColor2 = record
       aColor: TColor;
       aVar: smallint;
       aVar2: smallint;
      end;

    So why is it 12 bytes in your second version?

    1. aVar takes 2 bytes.

    2. Padding of 2 bytes to a 4-byte boundary since next member is 4 bytes wide

    3. aColor takes 4 bytes

    4. aVar2 takes 2 bytes.

    5. padding of 2 bytes to make total record size a multiple of 4 (the largest member size).

     

    As described in the documentation: Internal Data Formats - Record Types (Delphi) - RAD Studio (embarcadero.com)


  13. 5 hours ago, Lars Fosdal said:

    You can move to FireDAC while still using DBase.  I know, not your goal - but at least you would have made the first step.

    https://blogs.embarcadero.com/firedac-odbc-for-paradox-and-dbase-tables/

    The Microsoft ODBC support for Paradox and dBase always seemed to be more for data extraction than full database use.  Useful to pull data for reports or when migrating to a different database but not to replace the BDE for a production application. Data dictionary changes and database maintenance are two weak areas.  
     

    During a migration of a single user application from Visual dBase (16 bit, used the BDE) to Delphi + Flash Filer we used a third-party library to access the DBF files for migration purposes instead of the Microsoft ODBC solution. Fewer dependencies on what a user had installed locally meant fewer support issues. (was SoftSci's  TOPAZ (softsci.com))

    • Like 1

  14. Some still get by with a simple multiuser shared file database like Paradox through the BDE. The popularity of SQLite shows simple databases are still popular and BDE/Paradox fits that niche as well with more data types and multiuser support. 

×