Borland®
Shop
Products Downloads Services Support Partners News & Events Company Community
Delphi
Documentation
Support

Additional Resources
Technology Partners
Books
Community

 DELPHI DEVELOPER SUPPORT

Delphi 5 fixes and known issues
COMPILER SECTION

Areas of concentration under: compiler


Area: compiler\delphi

Reference Number: 71218
Status: Fixed in Delphi 5
Date Reported: 9/17/99
Severity: Serious
Type: Crash

Problem:

If you type in a comma instead of a period and use 
Ctrl+ Space to invoke the code completion feature 
you will see an AV in dcc50.dll.

Area: compiler\delphi\code generation\optimization

Reference Number: 41259
Status: Open
Date Reported: 11/2/98
Severity: Serious
Type: Crash

Problem:

This code gets an internal compiler error.
unit u41259;
interface
uses
  Windows,
  SysUtils;
implementation
function Parse(var aa: ShortString; const bb: 
ShortString): ShortString;
begin
end;

procedure FSplit(aa : ShortString; var bb: 
ShortString);
begin
	bb := ExtractFileName(aa);
	bb := Parse(bb,'.');
end;
end.

Workaround:

This is a register allocation problem. The 
work-around is to turn off optimizations around the 
routine.

Area: compiler\delphi\code generation\optimization

Reference Number: 49257
Status: Open
Date Reported: 5/11/99
Severity: Serious
Type: Crash

Problem:

The code shown below causes an  Internal compile 
error: C738.  DynamicArray and  AnsiStrings have 
the same problem.

procedure TForm1.DecodeAData;
var
  i,sz : integer;
  a :integer;
  bda : array[0..100] of Byte;
  tbl : array of byte;
begin
   sz := 100;
   setlength(tbl, sz);
   a := 0;
   for i := 0 to 0 do
   begin
       // this is the code that causes the problem
       bda[0] := a - tbl[a mod 100] * tbl[a mod sz];

   end;
end;

Workaround:

Change expression in the FOR loop to two 
statements.

       bda[0] := a - tbl[a mod 100];
       bda[0] := bda[a] * tbl[a mod sz];

Doing this will allow compilation to succeed.


Area: compiler\delphi\code generation\optimization

Reference Number: 62554
Status: Fixed in Delphi 5
Date Reported: 6/21/99
Severity: Serious
Type: Crash

Problem:

Passing an empty non-const open array as a 
parameter causes a stack overflow.

This problem also exists in Delphi 4.

Workaround:

Declare the array parameter as const.

Area: compiler\delphi\code generation\optimization

Reference Number: 65700
Status: Open
Date Reported: 7/20/99
Severity: Infrequently Encountered
Type: Basic Functionality Failure

Problem:

Compiler is reporting incorrect debug line info so you 
can not stop at what should be a valid breakpoint.  
The example is creating 521 classes based on 
TObject, if you comment out the 521st class, the 
debug info will then be correct.

Area: compiler\delphi\code generation\optimization

Reference Number: 67714
Status: Open
Date Reported: 8/5/99
Severity: Infrequently Encountered
Type: Crash

Problem:

Defining properties for old-style objects are allowed 
by the compiler, but trying to use such properties 
causes AVs from the generated code (directly or 
indirectly).

Area: compiler\delphi\code generation\optimization

Reference Number: 67715
Status: Open
Date Reported: 8/5/99
Severity: Infrequently Encountered
Type: Crash

Problem:

The compiler does not correctly initialise (old-style) 
objects typed consts.

Workaround:

 Add a constructor to the object type, and call it 
before calling any virtual method

Area: compiler\delphi\code generation\optimization

Reference Number: 69419
Status: Test Case Error
Date Reported: 8/23/99
Severity: Infrequently Encountered
Type: Minor Functionality Failure

Problem:

The compiler does not report an error when I 
attempt to do an illegal goto into another block 
when the block is in a nested procedure.

--- original text ---
Goto generates incorrect JMP instruction. The 
"goto X" statement jumps into the Inner procedure, 
but the actual code destination is in the middle of 
an instruction. This results in an EPrivilege 
exception.

Area: compiler\delphi\errors and warnings

Reference Number: 69477
Status: Open
Date Reported: 8/24/99
Severity: Infrequently Encountered
Type: Minor Functionality Failure

Problem:

Calling Low(S) where S is a string produces an 
incorrect error: HIGH cannot be applied to a long 
string.

Area: compiler\delphi\errors and warnings

Reference Number: 73104
Status: Open
Date Reported: 10/15/99
Severity: Infrequently Encountered
Type: Basic Functionality Failure

Problem:

Internal Compiler Error: C1141

unit Unit1;
interface
uses SysUtils;
type
  AA= class
    EE: Exception;
    destructor Destroy;
  end;
implementation
destructor AA.Destroy;
begin
  raise EE;
end;
end.

Area: compiler\delphi\execution

Reference Number: 64185
Status: Open
Date Reported: 7/7/99
Severity: Extremely Rare Case
Type: Crash

Problem:

Introducing properties into BP7 style objects causes 
an access violation at compile time.

Area: compiler\delphi\interfaces

Reference Number: 47191
Status: Open
Date Reported: 3/24/99
Severity: Serious
Type: Crash

Problem:

Compiler doesn't generate a temp for interfaced 
objects constructed and passed to const params.  

Area: compiler\delphi\language\dynamic arrays

Reference Number: 44870
Status: Fixed in Delphi 5
Date Reported: 1/18/99
Severity: Infrequently Encountered
Type: Basic Functionality Failure

Problem:

Copy function does not check to make sure the 
source array is non-nil before trying to get its length.

Area: compiler\delphi\other compiler

Reference Number: 68236
Status: Open
Date Reported: 8/11/99
Severity: Infrequently Encountered
Type: Crash

Problem:


Compiler dies and hangs with data loss on compiling

  asm
    ä
  end;

Area: compiler\delphi\other compiler

Reference Number: 69314
Status: Open
Date Reported: 8/20/99
Severity: Infrequently Encountered
Type: Crash

Problem:

Internal error C1903. The problem is probably due to 
the strange use of Result.  Code to reproduce:

program Bug040;
function RoundUp: Int64;
asm
  push offset Result
end;

Area: compiler\delphi\thread local storage

Reference Number: 73019
Status: Open
Date Reported: 10/14/99
Severity: Infrequently Encountered
Type: Basic Functionality Failure

Problem:

Delphi & BCB apps can fail to load on the checked 
(debug) build of Windows 2000.

System / Sysinit unit does not test the result of 
TLSAlloc correctly.  It tests for less than zero, but 
an error is only indicated by a value of -1.  On the 
checked build of Windows 2000, TLSAlloc can 
return a valid negative index.  This causes the 
startup code to fail.
NOTE: These listings are for informational use only. It is not intended for use when calling Borland's Developer Support Department.
If you have any suggestions or complaints about these 'Delphi Enhancements and Fixes' pages, please contact the Delphi Administrator. This e-mail address is not intended for support issues.
 
Site Map Search Contact