Поэтому я создал программу на Xojo (MacOS), которая анализирует абзацы с помощью EndofLine. Однако, когда я запускаю его в операционной системе Windows, он вообще не анализирует его. Распознают ли операционные системы Windows EndofLine или Chr(10)+Chr(13) в Xojo?
Xojo MacOs против. Окна? Проблема EndOFLine
Ответы (2)
Константа 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)
EndOfLine
всегда зависит от платформы, поэтому в случае Windows его значение равно chr(13)+chr(10)
, а в macOS — chr(10)
. Вы можете получить эти значения для конкретной платформы напрямую, используя EndOfLine.Windows
и EndOfLine.OSX
.
Чтобы нормализовать окончания строк в строке, вы можете использовать функцию ReplaceLineEndings()
.