Золотник не отображает информацию об изменении во время ошибки - PullRequest
0 голосов
/ 09 июля 2019

У меня есть несколько строк в файле, который был загружен в список. В файле есть строка, которая начинается с EKO-1223 ... Я хотел бы получить эту строку, поэтому я использую цикл while и перебираю строки из списка. Я использую nPos = StrFind(svLine, "EKO"), но nPos <0, поэтому он не находит результат, почему? </p>

1 Ответ

0 голосов
/ 11 июля 2019

Если вы хотите получить хороший ответ, вам нужно предоставить более подробную информацию о том, как вы получаете текст из файла в svLine, а также все, что вы знаете о кодировке файла и т. Д. (Если вы ничего не знаете Что касается кодировок, то для его идентификации может быть достаточно шестнадцатеричного дампа первых нескольких байтов файла, а также тех, которые содержат EKO.)

Полагаю, либо вы неправильно загрузили svLine, либо кодировку неправильно определили, и, таким образом, svLine содержит что-то вроде "E\0K\0O\0..." или "䭅ⵏ" (то есть "\x4b45\x2d4f" в нотации C ). Вы можете подтвердить это с помощью окна сообщения или в отладчике?

Одна из альтернатив, которую вы могли бы рассмотреть, это вызвать FileGrep . Это может помочь, если ваш код вообще не загружает файл, но вряд ли будет лучше обрабатывать кодировки. Если это неправильно определенная кодировка, и вы можете изменить файл, убедитесь, что файл имеет правильную спецификацию для своей кодировки. Но если вы не контролируете файл, я не уверен, что рекомендовать. Бинарные чтения и ручное декодирование (возможно, с использованием Kernel32.MultiByteToWideChar ) могут быть вашими лучшими ставками.

...