Как присвоить символ TAB в текстовое поле...

Автор Uukrul, Жовтень 13, 2009, 10:09:11 ДП

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

Uukrul

В общем это, есть поле типа DATA: l_char(1) type c. Надо в него занести символ табуляции с кодом 09h, что-то у меня не вышло, вроде как то ли константа какая есть, то ли еще как это сделать?

DiVo


Uukrul

Цитата: DiVo від Жовтень 13, 2009, 12:10:50 ПП
вот так не подойдет?
Подойдет наверное... просто я этот класс, зараза склероз замучил, никак найти не мог... Спасибо!

Uukrul

Мда, а таки нет.. в 4.6 зараза, этих классов нет... вот почему я тут ничего не нашел... тут вроде как что-то другое есть для TAB.

DiVo

тогда может просто тупо присвоить?


DATA: c_tab  TYPE x VALUE '09',
      l_char TYPE c.

l_char = c_tab.

Uukrul

Цитата: DiVo від Жовтень 13, 2009, 03:45:55 ПП
тогда может просто тупо присвоить?


DATA: c_tab  TYPE x VALUE '09',
      l_char TYPE c.

l_char = c_tab.

Да это я сразу попробовал.. на выходе в l_char = '0'... а должно быть ну скажем так в прочитанной строке табуляции показываются как /h/... однако вот так  ::)

DiVo

сорри, тогда можно попробовать с помощью field symbols:

CONSTANTS: c_tab TYPE x VALUE '09'.
DATA: l_tab TYPE c.
FIELD-SYMBOLS: <fs>.
ASSIGN l_tab TO <fs> TYPE 'X'.
<fs> = c_tab.

Uukrul

Цитата: DiVo від Жовтень 13, 2009, 04:13:45 ПП
сорри, тогда можно попробовать с помощью field symbols:

CONSTANTS: c_tab TYPE x VALUE '09'.
DATA: l_tab TYPE c.
FIELD-SYMBOLS: <fs>.
ASSIGN l_tab TO <fs> TYPE 'X'.
<fs> = c_tab.

Так выходит <fs> типа X, а мне нужно чтобы оно было типа C, так как я передаю потом его как параметр в функцию... а при таком вызове оно таки дамп так как конфликт типов... что-то меня запарили с этими разделителями вида TAB!

Dmitriy

А в чем сама задача, ну или часть ее (на более высоком уровне)?

Uukrul

Цитата: Dmitriy від Жовтень 13, 2009, 04:33:25 ПП
А в чем сама задача, ну или часть ее (на более высоком уровне)?
Сроки читаем через READ DATASET ps_files-file INTO l_string, а там разделитель у нас символ табуляции.. вот и надо распарсить эту фигню...

Uukrul

В итоге в просмотре строка видится типа как: 295323962461/h/380662374344/h/30, вот вместо вот этих вот /h/ стоит символ #09 сам собой искать в строке /h/ смысле нет, так как работает конвертация строки перед выводом.

Dmitriy

Ну кроме SPLIT что-то на ум пока больше ничего не приходит...

Uukrul

Цитата: Dmitriy від Жовтень 13, 2009, 08:28:56 ПП
Ну кроме SPLIT что-то на ум пока больше ничего не приходит...
Да похоже что так и есть, но просто изначально есть функциональный модуль со своей логикой, куда передаешь строку и вот этот самый разделитель. Оно там работает и все что надо считает, соответственно если SPLIT, то всю логику надо тащить себе в код, что не хотелось бы. Короче для 4.6C самым быстрым оказалось административно за декларировать, что файл должен быть с разделителем ';' (точка с запятой) да и всех делов.

DiVo

Цитата: Uukrul  link=topic=861.msg5389#msg5389 date=1255440355
Так выходит <fs> типа X, а мне нужно чтобы оно было типа C, так как я передаю потом его как параметр в функцию...

так а если передавать в функцию l_char, а не <fs>??

CONSTANTS: c_tab TYPE x VALUE '09'.
DATA: l_tab TYPE c.
FIELD-SYMBOLS: <fs>.

ASSIGN l_tab TO <fs> TYPE 'X'.
<fs> = c_tab.
..

*** где-то внутри ФМ
SPLIT l_string AT l_tab INTO ...


по идее такая конструкция должна работать :-\

Uukrul

Цитата: DiVo від Жовтень 13, 2009, 09:21:27 ПП
так а если передавать в функцию l_char, а не <fs>??
Да оно сразу = 0, принимает значение... пробовал. Короче, таки пока похоже никак не вывернуться, в общем формат файла поменяют...