![]() |
|||||||||||||||||
|
|
|||||||||||||||||
|
|
|||||||||
|
Delphi |
DELPHI DEVELOPER SUPPORT
Areas of concentration under: compiler
Area: compiler\delphi 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 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 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 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 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 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 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 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 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 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 Problem: Introducing properties into BP7 style objects causes an access violation at compile time. Area: compiler\delphi\interfaces Problem: Compiler doesn't generate a temp for interfaced objects constructed and passed to const params. Area: compiler\delphi\language\dynamic arrays 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 Problem:
Compiler dies and hangs with data loss on compiling
asm
ä
end;
Area: compiler\delphi\other compiler 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 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. |
|
|
|
|||||
| Made in Borland® Copyright© 1994-2003 Borland Software Corporation. All rights reserved. Report Piracy, Legal Notices, Privacy Policy | |||||