Avatar of Roger Alcindor
Roger Alcindor
 asked on

Delphi code error not understood

I am a total novice regarding Delphi. I am trying to build a package for eventual use in a C++ builder project (in which language I am not a novice).
I am using code that I have found for using Smart cards.
the following code fragment generates an error and I need assistance to understand why and correct it.
I am using Embarcadero RAD Studio 10.2 enterprise edition

var
  r : string;
  a : integer;
begin
  a := 1;
  while a <= Length(Input) do
    begin
    case Input[a] of
      #010       : if WantFormats then r := r + #10 else r := r + ' ';
      #013       : if WantFormats then r := r + #13 else r := r + ' ';
      #027       : if a < Length(Input) then
                     begin
                     Inc(a);
                     r := r + Extended[Ord(Input[a])+1];
                     end else r := r + ' ';
      #128..#255 : ; {<<<<<<<<< This line gerates the error }
      else r := r + Ascii[Ord(Input[a])+1];
      end;
    Inc(a);
    end;
Result := r;
end;


gives the following error message
[dcc32 Error] GsmHelper.pas(551): E2011 Low bound exceeds high bound

Open in new window

Delphi

Avatar of undefined
Last Comment
Sinisa Vuk

8/22/2022 - Mon
Geert G

try it with ord(Input[a])

  case Ord(Input[a]) of
      10       : if WantFormats then r := r + #10 else r := r + ' ';
      13       : if WantFormats then r := r + #13 else r := r + ' ';
      27       : if a < Length(Input) then
                     begin
                     Inc(a);
                     r := r + Extended[Ord(Input[a])+1];
                     end else r := r + ' ';
      128..255 : ; {<<<<<<<<< This line gerates the error }
     else r := r + Ascii[Ord(Input[a])+1];
    end;

Open in new window

Geert G

might also depend on the definition of input

is it ansistring or string ?
Roger Alcindor

ASKER
The error still persists even when no reference to Input is made and only the case range is used as per the code shown below ?


var
  r : string;
  a : integer;
begin
  a := 1;
  while a <10 do//<= Length(Input) do
    begin
      case a of //Input[a] of
      #128..#255 : ; {<<<<<<<<< This line gerates the error }
      end;
      Inc(a);
    end;
Result := r;
end;

Open in new window

Experts Exchange has (a) saved my job multiple times, (b) saved me hours, days, and even weeks of work, and often (c) makes me look like a superhero! This place is MAGIC!
Walt Forbes
ASKER CERTIFIED SOLUTION
Sinisa Vuk

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
Roger Alcindor

ASKER
Thanks for identifying the problem How far back in RAD Studio versions would I need to go to find that  AnsiStrings did exist in Delphi ?
Sinisa Vuk

Not sure but think from 10.2 ... Event before it is not recommend to use, but starting from 10.2 - AnsiString is not recognized any more as such..
Here is more info ...