Ja, hatte es ausprobiert, aber war wohl scheinbar ein anderes Problem.
Der Versuch das über die History zurückzusetzen und nochmal hinzubekommen schlug Fehl.
Auch in einem Testprojekt kann ich es noch nicht reproduzieren.
Hätte die
IDE wohl besser nicht zwischenzeitlich neu starten sollen.
Delphi-Quellcode:
{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([vcPublished]) PROPERTIES([vcPublished,vcPublic]) FIELDS([])}
{$ZEROBASEDSTRINGS ON}
function TestA(
const S:
string; i: Integer): Char;
inline;
// praktisch TStringHelper.GetChars
begin
Result := S[i];
end;
{$ZEROBASEDSTRINGS OFF}
function TestB(
{const} S:
string; i: Integer): Char;
inline;
begin
//Result := S.Chars[(i - 5) div 2];
Result := TestA(S, (i - 5)
div 2);
end;
{$IFDEF NEXTGEN}
{$ZEROBASEDSTRINGS ON}
{$ENDIF}
procedure TForm3.FormCreate(Sender: TObject);
var
S:
string;
i: Integer;
C: Char;
begin
S := '
12345';
i := 5;
C := TestB(S, 3 * 2 +
{i}5);
if S[3 + Low(
string)] = C
then
Beep;
end;