powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ComboBox заменяет \\ на \
12 сообщений из 12, страница 1 из 1
ComboBox заменяет \\ на \
    #33053704
Guestttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавляю строку в ComboBox
Код: plaintext
thisform.combo1.AddItem("\\comp_name1\directory")

а он заменяет две косых \\ на одну: \comp_name1\\directory


ПОМОГИТЕ решить проблему !!!
...
Рейтинг: 0 / 0
ComboBox заменяет \\ на \
    #33053711
Фотография Диченка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так

Код: plaintext
thisform.combo1.AddItem("\"+"\comp_name1\directory")
...
Рейтинг: 0 / 0
ComboBox заменяет \\ на \
    #33053716
Guestttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тоже самое (юзаю VFP8 SP1)
...
Рейтинг: 0 / 0
ComboBox заменяет \\ на \
    #33053719
Guestttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В ListBox кстати тоже самое
...
Рейтинг: 0 / 0
ComboBox заменяет \\ на \
    #33053729
Фотография Диченка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это тебя спасет :)

Код: plaintext
thisform.combo1.AddItem("\\\comp_name1\directory")
...
Рейтинг: 0 / 0
ComboBox заменяет \\ на \
    #33053876
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Один backslash используется для того, чтобы сделать item disabled. Это в меню, листбоксах и комбобоксах так. Выбрать-то такой item потом можно?
...
Рейтинг: 0 / 0
ComboBox заменяет \\ на \
    #33053987
Guestttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выбрать без проблем.

но замена \\ в \ , \\\\ в \\ , и т.д. ...... в ...
прям как в С++ форматирование wsprintf

Тогда почему MS не сделало бы полностью реализацию
всех \\ --> \, \0 --> ноль, \n --> перенос строки
и т.д.?
...
Рейтинг: 0 / 0
ComboBox заменяет \\ на \
    #33053999
Guestttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Слелал функцию combo2_4(str) замены ВСЕХ вхождений '\\' на '\\\\'

и теперь все работает

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
thisform.combo1.clear

n_max=APRINTERS(mm)

FOR n= 1  TO n_max
  thisform.combo1.AddItem( combo2_4( mm(n, 1 ) ) )
NEXT

set printer to name thisform.combo1.list(thisform.combo1.listIndex)

&& раньше на этом вылетало '\\COMP1\HP LaserJet 2200 PCL6'
&& т.к. значение было  '\COMP1\HP LaserJet 2200 PCL6'
&& теперь все стало правильно - две косых

Буду очень признателен, если кто обьянит почему так сделали в Майкрософте
...
Рейтинг: 0 / 0
ComboBox заменяет \\ на \
    #33054000
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Один backslash интрепретируется как признак Disabled для текущего элемента только если источником данных для ComboBox или ListBox является массив или ручное наполнение списка. Во всех остальных случаях содержимое отображается "как есть".

Поэтому выход может быть в создании в качестве источника курсора

Код: plaintext
1.
2.
3.
4.
CREATE CURSOR curList (MyPath C( 128 ))
INSERT INTO curList (MyPath) VALUES ("\\comp_name1\directory")

ThisForm.ComboBox1.RowSourceType =  6  - Fields
ThisForm.ComboBox1.RowSource = "curList.MyPath"
...
Рейтинг: 0 / 0
ComboBox заменяет \\ на \
    #33054018
Guestttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 ВладимирМ

После ответа слазил в книгу Горев "Visual FoxPro" - все так и есть. Спасибо!
Остался только вопрос почему пункт остается доступным
при RowSourceType=0 или 1
...
Рейтинг: 0 / 0
ComboBox заменяет \\ на \
    #33054032
Новоселов Олег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
 1 ) Символ '\' - ОДИН используется для того, чтобсделать пункт недоступным
он должен быть ОБЯЗАТЕЛЬНО первым. (если не первый, то как обычная буква)

 2 ) Символа '\\' преобразуются в '\'. 
Для того чтоб пункт сделать доступным пункт начинающийся с '\'
P.S. Зачем, во втором случае, такую замену делают, для ВСЕХ вхождений в строке незнаю.
Наверно используется какая-то стандартная внутренняя функция подмены,
(типа как в меню). Ну не хотели(не успели) написать в каком-нибудь VFP5.0
а потом оставили, для совместимости :-))
...
Рейтинг: 0 / 0
ComboBox заменяет \\ на \
    #33054042
Guestttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выходит все-таки нужна функция:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
FUNCTION combo2_4
PARAMETERS cPar

LOCAL cRet
LOCAL n

cRet=''
n=AT('\\',cPar)
DO WHILE n> 0 
	cRet=cRet+SUBSTR(cPar, 1 ,n- 1 )+'\\\\'
	cPar=SUBSTR(cPar,n+ 2 )
	n=AT('\\',cPar)
ENDDO 
IF LEN(cPar)> 0 
	cRet=cRet+cPar
ENDIF 

*MESSAGEBOX("Стало "+cRet, 0 ,"Было "+cPar) && для проверки
RETURN cRet

Тема закрыта.
Всем спасибо!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ComboBox заменяет \\ на \
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]