Похоже, поле, длина которого вы пытаетесь найти, является фиксированным символьным полем, например
dmsg s 40a
Если мы сделаем eval msg = 'Hello, World!' тогда сообщение не содержит «Hello, World!» - он содержит «Привет, мир! «То есть он имеет кучу пробелов, чтобы заполнить его до 40 символов. Вот так по определению работают поля фиксированной длины.
% trimr () может очень хорошо работать с ними, и даже имеет дополнительный параметр, определяющий, какие символы должны быть обрезаны.
С другой стороны, если вы используете поле переменной длины
dmsg s 40a Varying
и затем сделал eval msg = 'Привет, мир!' тогда поле фактически содержит только назначенные ему символы. В этом случае не требуется% trimr (); % len () вернет текущую длину поля.