不过我当然清楚CodeIndex>Length(Code)越界了,然而如果只是写如下: if CodeIndex<=Length(Code) then begin CurrentChar := Code[CodeIndex]; {$IFDEF DEBUG} currentCode := PChar(@Code[CodeIndex]); {$ENDIF} end;
procedure TSourceContext.IncSrc; var len: Integer; begin if CurrentChar = #10 then begin Inc(LineNum); ColNum := 1; end else Inc(ColNum); Inc(CodeIndex); len := Length(Code); if CodeIndex<=len then begin CurrentChar := Code[CodeIndex]; {$IFDEF DEBUG} currentCode := PChar(@Code[CodeIndex]); {$ENDIF} end else CurrentChar := #0; end;
function TSourceContext.ReadStr(UntilChars: TSysCharSet): string; 加上: if CurrentChar = #0 then Break;
----------------------------------------------
-