Hola CM6ISG.
Cita:
Empezado por CM6ISG
...
A la hora de compilar me da el siguiente error
Project Catsimulado.exe raised exception class EStringListError with message ‘List index out bounds (1)’. Process stopped. Use Step or run to continue.
|
El error que mencionas es debido a que intentas acceder a una posición inexistente de la lista. Es muy probable que sea debido a un cambio en el formato de la línea recibida y no contemplado en el caso que has planteado.
Lo primero es ver que valor contiene la cadena,
Str, que obtuviste en la línea
Código Delphi
[-]
ComPort1.ReadStr(Str, Count);
eso lo podes hacer con un simple ShowMessage.
Lo segundo y principal es verificar que no estes indizando posiciones inexistentes, eso lo podes verificar del siguiente modo:
Código Delphi
[-]
...
ExtractStrings(['#'], [], PChar(Str), lCampos);
ShowMessage(IntToStr(lCampos.Count-1));
Si el valor mostrado es menor a 4, valor que utilizas en la línea:
Código Delphi
[-] FTR := Copy(StrList[4],3,Length(StrList[4]));
se producirá ese error. Si es menor a 3 será en la anterior y así sucesivamente.
Un caso que produciría el error que mencionas se puede ver en este ejemplo:
Código Delphi
[-]
Str:= '#PO0' + #13#10 + '#SQS' + #13#10 + '#EM0' + #13#10 + '#FT0715000';
Como surge a simple vista luego de
Código Delphi
[-]
ExtractStrings(['#'],[' '], PChar(Str), lCampos);
obtendremos 4 cadenas que serán agregadas en el
TStringList en las posiciónes 0,1,2,3; cuando hagas referencia a
lCampos[4]... Piff !!!
Saludos