Xojo MacOs против. Окна? Проблема EndOFLine

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


person Ayah Al-Harthy    schedule 22.05.2019    source источник


Ответы (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)
person Thomas Tempelmann    schedule 22.05.2019

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

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

person awagner    schedule 22.05.2019