Xojo MacOs Vs. Окна? Выпуск EndOFLine - PullRequest
1 голос
/ 22 мая 2019

Итак, я создал программу для Xojo (MacOS), которая анализирует абзацы с помощью EndofLine. Однако, когда я запускаю его в операционной системе Windows, он вообще не анализируется. Распознает ли операционная система Windows EndofLine или Chr (10) + Chr (13) в Xojo?

Ответы [ 2 ]

1 голос
/ 22 мая 2019

Константа Xojo EndOfLine действительно отличается в зависимости от платформы, для которой вы ее используете.

У вас есть два варианта решения этой проблемы:

Явно используйте специфическую для платформы константу:

EndOfLine.Windows gives CR+LF
EndOfLine.Unix gives LF

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

normalizedString = ReplaceLineEndings (importedString, EndOfLine)

Теперь вы можете использовать EndOfLine с normalizedString, например, разбить его на отдельные строки:

dim lines() as String = normalizedString.Split (EndOfLine)

Когда вы напишете эту строку обратно, она автоматически будет уже в системном формате.

Однако, когда вы экспортируете свой текст в систему, где, как вы знаете, он ожидает их в определенном формате, преобразуйте его обратно в этот формат, например так:

// E.g, if you export them for a Mac:
outputString = ReplaceLineEndings (internalString, EndOfLine.Unix)
1 голос
/ 22 мая 2019

EndOfLine всегда зависит от платформы, поэтому в случае Windows его значение равно chr(13)+chr(10), а в macOS - chr(10). Вы можете напрямую получить эти значения для конкретной платформы, используя EndOfLine.Windows и EndOfLine.OSX.

Чтобы нормализовать окончания строк в строке, вы можете использовать функцию ReplaceLineEndings().

...