xml - падает...

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
yantux
постоялец
Сообщения: 133
Зарегистрирован: 29.10.2007 15:02:33
Откуда: Санкт-Петербург
Контактная информация:

xml - падает...

Сообщение yantux »

Если делать всё по доке http://wiki.freepascal.org/XML_Tutorial#Examples , то всё ок работает.

А если в TDOMElement(parentNode).SetAttribute('id', '001'); подсовывать не 'id' и '001', а переменные типа string то падает, т.е. аля сегментайшен файулт. Как с этим бороться?
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

yantux писал(а):Если делать всё по доке http://wiki.freepascal.org/XML_Tutorial#Examples , то всё ок работает.

А если в TDOMElement(parentNode).SetAttribute('id', '001'); подсовывать не 'id' и '001', а переменные типа string то падает, т.е. аля сегментайшен файулт. Как с этим бороться?

Если у тебя строковые переменные пусты то будет эксцепшен.
yantux
постоялец
Сообщения: 133
Зарегистрирован: 29.10.2007 15:02:33
Откуда: Санкт-Петербург
Контактная информация:

Сообщение yantux »

В данном случае падало, потому что у ктроки была по видимому не корректная длина и поэтому захватывало левые символы после конца строки. А так xml работает, надо разбираться почему портится длина строки.

Добавлено спустя 2 часа 17 минут 4 секунды:
xml падал, потому что в строке были русские буквы utf8 ессно, в окошках эти же буквы отображаются корректно. Т.е. при работе с xml я ограничен использованием только английских букв? Это правильно?
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Нет, пакет fcl-xml основан на WideString и поэтому английскими буквами ни разу не ограничен. При использовании строк в кодировке utf8, нужно использовать ф-ции utf8decode() и utf8encode().
Стоит отметить, что в linux с utf-8 локалью оно будет работать и без преобразований, но в windows - не будет.
Ответить