Функция PowerBuilder Pos, Mid не работает после миграции - PullRequest
2 голосов
/ 07 марта 2012

Я перенес приложение Powerbuilder 9 в PowerBuilder 12.5.После миграции некоторые функции не работают.

Следующий код взят из функции с аргументом blob blobi.

long ll_position, ll_start, ll_end

ll_position=Pos(String(blobi),'~f@1~r~n',1) //does not work.

Приведенная выше строка не будет работать в новой версии.Я пытался проверить, какое значение я получаю из ll_position:

messagebox("ll_position: ", ll_position)

In PB 9, it returns 1
In PB 12.5 it returns 0

Следующий шаг:

ll_start=ll_position+5 

ll_end=Pos(String(blobi),Char(126),ll_start)  //does not work.

Я получаю следующие возвращаемые значения:

messagebox("ll_end: ", ll_end)

In PB 9, it returns 10
In PB 12.5 it returns 0

Следующий шаг:

dw_test.Object.numb[1]=Long(Mid(String(blobi),ll_start,ll_end -ll_start)) //does not work.

Я получаю следующие возвращаемые значения:

long abc 
abc = dw_test.Object.numb[1]

messagebox("dw value is: ", abc)

in PB 9 it returns an integer like 1234
in PB 12.5 it returns 0

Пожалуйста, помогите мне выяснить, в чем проблема с вышеуказанными функциями и как я могу изменить их для работы с PowerBuilder 12.5.Спасибо.

1 Ответ

4 голосов
/ 07 марта 2012

PowerBuilder 12.5 по умолчанию использует строки Unicode, поэтому ваша функция String () берет два байта для создания одного символа.Чтобы сохранить существующую функциональность, используйте

String (blobi, EncodingANSI!)

Удачи,

Терри

...