Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 584203
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 13, 20262026-05-13T14:52:23+00:00 2026-05-13T14:52:23+00:00

I’ve written a custom SDL GUI toolkit (source is on http://sourceforge.net/projects/lkgui/files/ ) and I’m

  • 0

I’ve written a custom SDL GUI toolkit (source is on http://sourceforge.net/projects/lkgui/files/) and I’m having an issue with an inherited object.

When the object is within the main program, the constructor isn’t called hence the program doesn’t properly initialise the object and it crashes after some commands (Specifically, TStartGameButton inherits from GUI_Canvas inherits from GUI_Element and anything that is not defined in GUI_Element crashes the program with an EAccessViolation). When the object is placed within a unit, this problem goes away.

I understand that I could just leave it in the unit, but it will lead to some ugly code that could hopefully be avoided.

Has anyone any idea why this might be happening and how I may avoid it?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-13T14:52:24+00:00Added an answer on May 13, 2026 at 2:52 pm

    Old-style Delphi objects have been broken since the release of Delphi 2, perhaps earlier. They do not do inheritance well when they have fields of compiler-managed types, such as string or dynamic arrays. There was a discussion about it in 2004 on comp.lang.pascal.delphi.misc. Here was the code to reproduce it:

    type
      TBase = object
      public
        s: string;
      end;
    
      TDerived = object(TBase)
      end;
    
    procedure test;
    var
      obj: TDerived; //okay for TBase!
    begin
      assert(obj.s = '', 'uninitialized dynamic variable');
    end;
    

    And in fact it’s only OK for TBase by accident because of how the function’s prologue code happens to be generated. Putting additional code in that function can make it crash anyway.

    Indeed, it’s exactly as you’ve observed — old-style objects don’t get initialized properly. Their string fields don’t start out holding an empty string; instead, they hold garbage, and so it’s not even possible to initialize them yourself without using something like FillChar.

    This appears to be due to the variables being local variables. Unit-scope (“global”) variables seem to work OK. Variables that are declared at unit scope but only used by the unit’s initialization section, or at program scope and used only in the DPR file’s main begin-end block, are treated by the compiler as local variables, so they’re not set to all-bits-zero like their global counterparts. When you move your variable declaration to a unit but continue to use it in your DPR file, it’s elevated to “global” status.

    Your TGUI_Element type has a string member called DbgName, and it looks like that’s the only string field you have in the type hierarchy. Take that out, or change it to ShortString, and I’ll bet your crashes go away, at least temporarily.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 364k
  • Answers 364k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer Without having any code to read I would guess that… May 14, 2026 at 3:41 pm
  • Editorial Team
    Editorial Team added an answer Simplify. Save the excel spreadsheet as a plain text .csv… May 14, 2026 at 3:41 pm
  • Editorial Team
    Editorial Team added an answer Well I found the solution seconds after posting the question.… May 14, 2026 at 3:41 pm

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.