Разрывная структура ввода в VB6 - PullRequest
1 голос
/ 05 декабря 2011

У меня есть файл с разделителями-запятыми

Текстовый файл:

"some_key_1", "Translation 1"
"some_key_2", "Translation 2"
"some_key_3", "Translation 3"
"some_key_4", "Translation 4"
"some_key_5", "I am a very long line of text that has decided to cause an issue for the programmer, I have thus far laughed at his futile attempts to fix me."


Private Sub ImportFile()
Dim strEmpFileName As String
Dim intEmpFileNbr As Integer
Dim strTranslationKey As String
Dim strTranslation As String
Dim error As String

strEmpFileName = "C:\Files\test_file_1.asp"
intEmpFileNbr = FreeFile

Open strEmpFileName For Input As #intEmpFileNbr

Do Until EOF(intEmpFileNbr)
    Input #intEmpFileNbr, strTranslationKey, strTranslation
Loop

End Sub

Код назначает строки текста очень хорошо, пока не дойдет до some_key_5, даже если он думает, чтотекст в новой строке, даже если это новая строка из-за переноса слов, а не из-за того, что я не нажимаю клавишу ввода.

Есть ли способ обойти это?Сокращение линии на самом деле не вариант.

Ответы [ 4 ]

2 голосов
/ 05 декабря 2011

Я думаю, что вероятная проблема - запятая в элементе перевода. Я бы посоветовал вам лучше всего прочитать файл с

Line Input #my_file, my_string

заявление и разобрать его вручную. Подробнее см. здесь

1 голос
/ 06 декабря 2011

Скорее всего, у вас проблема с завершением строки, и у вас фактически есть CR, когда он перестает читать. Я бы предложил воссоздать файл с помощью блокнота или посмотреть на него в текстовом редакторе с шестнадцатеричным режимом (который может сказать вам, если у вас также есть действительно длинная строка, если ваш реальный файл имеет строку, которая превышает несколько K) на самом деле может быть проблемой).

Я проверил ваш код по предоставленным вами данным, с помощью msgbox, дающего длину и правильные 10 символов строки, и это сработало. Это также сработало, когда я увеличил длину поля второй части до 721 символа.

1 голос
/ 05 декабря 2011

Вы можете использовать регулярное выражение для сопоставления всех строк внутри "", а затем поместить их в пары.

Что касается разрывов строк, вы можете просто заменить все из них на пустую строку перед выполнением соответствия регулярному выражению.

0 голосов
/ 26 апреля 2012

Я решил использовать объект файловой системы, и он отлично работает с теми же данными. Это не могла быть запятая, поскольку она просто отлично прикрепила бы данные из файла к переменной и включала бы информацию после запятой. Затем он добавил бы элемент на следующей строке в качестве нового ключа. Я не мог пройти мимо этого, пытался даже удалить запятые из оскорбительного элемента, и он все равно сломался бы. Но после того, как я переключил его на объект файловой системы, он отлично работает с теми же данными, мне просто нужно разделить его вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...