Error conversion from Char to String

2

I have the following code:

procedure TDM_Maquinas.IBQCons_MaquinasCOD_LINHAGetText(Sender: TField;
var Text: string; DisplayText: Boolean);
begin
  Text := Sender.AsString;
  if Text <> '' then
  begin
    case Text[1] of
    '1'   : Text := 'Linha 1';
    '2'   : Text := 'Linha 2';
    '3'   : Text := 'Linha 3';
    '4'   : Text := 'Linha 4';
    '101' : Text := 'Recebimento 1'; //aqui da erro
    '102' : Text := 'Recebimento 2'; //aqui da erro
    '201' : Text := 'Expedição 1';   //aqui da erro
    '202' : Text := 'Expedição 2';   //aqui da erro
    '203' : Text := 'Expedição 3';   //aqui da erro
   end;
 end;
end;

error:

E2010 Incompatible types: 'Char' and 'string'

How do I resolve?

    
asked by anonymous 25.08.2017 / 19:43

1 answer

3

In analyzing the pattern, we have cases that are always numbers, so we could convert the value of Text to integer , and thus solve your problem:

procedure TDM_Maquinas.IBQCons_MaquinasCOD_LINHAGetText(Sender: TField;
var Text: string; DisplayText: Boolean);
begin
  Text := Sender.AsString;
  if Text <>'' then
  begin
    case StrToInt(Text) of
    1   : Text := 'Linha 1';
    2   : Text := 'Linha 2';
    3   : Text := 'Linha 3';
    4   : Text := 'Linha 4';
    101 : Text := 'Recebimento 1'; 
    102 : Text := 'Recebimento 2'; 
    201 : Text := 'Expedição 1';   
    202 : Text := 'Expedição 2';   
    203 : Text := 'Expedição 3';   
   end;
 end;
end;

Edit: Just as @Reginaldo commented, using Text [1] will only have the first character of your string, so I also changed Text [1] to Text

    
25.08.2017 / 20:09