[fpc-pascal] Question: range checking for string indexing

Frank Peelo f26p at eircom.net
Thu Oct 30 17:51:30 CET 2008


Tom Verhoeff wrote:
> On Wed, Oct 29, 2008 at 09:58:10PM +0100, Vinzent Höfler wrote:
> 
>>Tom Verhoeff wrote:
>>
>>
>>>I am surprised that for ShortString, the range is not
>>>also 1 <= i <= Length(s).
>>>
>>>IIRC Turbo Pascal only allowed you to access s[0] when range checking
>>>was off, and similarly for s[i] with i > Length(s).
>>
>>No. See transcript:
> 
> 
> That looks rather convincing.
> 
> 
>>Borland Pascal  Version 7.0  Copyright (c) 1983,92 Borland International
> 
> 
> However, IIRC there were some differences between Borland Pascal
> and Turbo Pascal (as it was named before they marketed it as
> Borland Pascal).

IIRC the differences were in how big a program you could write. 
Accessing the length byte in a string did not change.

[digs out an old copy of Turbo.com -- TurboPascal version 3. Amazingly, 
it will run under WinXP.]

var
   x : String[50];
   i : Integer;

Begin
   x := 'Hello, World';
   for i := 0 to length(x) do
     write(ord(x[i]),' ');
   writeln;
   x[0] := #5;
   writeln(x);
end.

Outputs this:
12 72 101 108 108 111 44 32 87 111 114 108 100
Hello

so read and write access to element 0




More information about the fpc-pascal mailing list