Re: Проблема с массивами | |
---|---|
dimuhametov Автор Сообщений: 1562 Откуда: Костанай Дата регистрации: 01.11.2008 |
Могу пояснить откуда берется конструкция "&cArray[256]" (кавычки тоже часть конструкции).
В визуальном дизайнере меню добавляю строку и в для PROMPTа (имени пукта меню) прописываю как &cArray[256] (без кавычек). Далее генерирую меню "Menu->Generate.." и получаю файл MPR что-то типа:
------------------ Незнание делает жизнь такой интересной. |
Re: Проблема с массивами | |
---|---|
Starpom Сообщений: 71 Дата регистрации: 29.06.2006 |
Делай проверку на наличие данных в элементе массива перед тем как его применишь. Я прогнал твой код в начале и на 2.5, и на 5-10 и на ошибку не вышел. Как Выше писали возможно что где то происходит подмена. Причем использовалось определение массива как локальный, может перевести массив в глобальный? |
Re: Проблема с массивами | |
---|---|
dimuhametov Автор Сообщений: 1562 Откуда: Костанай Дата регистрации: 01.11.2008 |
идея хорошая. спасибо с PUBLIC массивом ситуация аналогичная ------------------ Незнание делает жизнь такой интересной. |
Re: Проблема с массивами | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Тогда я не понял - разве в исходном коде перед выполнением строки:
И команда
|
Re: Проблема с массивами | |
---|---|
dimuhametov Автор Сообщений: 1562 Откуда: Костанай Дата регистрации: 01.11.2008 |
? "&cArray[256]" выдает &cArray[256] ? cArray[256] выдает 256 ------------------ Незнание делает жизнь такой интересной. |
Re: Проблема с массивами | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
А в чем тогда "хорошесть идеи" проверять содержимое элемента массива? |
Re: Проблема с массивами | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
А почему там нельзя просто:
Для чего нужна именно макроподстановка? ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Проблема с массивами | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Видимо, потому, что кавычки принудительно подставляет генератор, и без макро строка
|
Re: Проблема с массивами | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
А почему бы тогда в дизайнере не написать:
что после генерации выдаст:
|
Re: Проблема с массивами | |
---|---|
dimuhametov Автор Сообщений: 1562 Откуда: Костанай Дата регистрации: 01.11.2008 |
Вроде результат положительный, спасибо, но нужно ждать появления косяка в меню выходит та же строка ""+cArray[256]+"" ------------------ Незнание делает жизнь такой интересной. |
Re: Проблема с массивами | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
text to lcMenu
DEFINE POPUP shortcut SHORTCUT RELATIVE FROM MROW(),MCOL() DEFINE BAR 1 OF shortcut PROMPT "<<cArray[256]>>" endtext execs(lcMenu) |
Re: Проблема с массивами | |
---|---|
dimuhametov Автор Сообщений: 1562 Откуда: Костанай Дата регистрации: 01.11.2008 |
прикольно, спасибо, буду пробывать. ------------------ Незнание делает жизнь такой интересной. |
Re: Проблема с массивами | |
---|---|
dimag Сообщений: 464 Откуда: Одинцово Дата регистрации: 17.12.2002 |
Так наверное проще:
------------------ Глупость - это не отсутствие ума, это такой ум. |
Re: Проблема с массивами | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Не верю! Покажи сгенерированный MPR. |
Re: Проблема с массивами | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Опять не понял - если меню можно создавать не с помощью генератора, то нет и озвученной проблемы, так как макрос не будет нужен. А если с помощью генератора, то он не создаст меню описанным способом. |
Re: Проблема с массивами | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
В первом посте ты привел код, который у тебя в некоторой среде выдает:
Очевидно, что в этот же момент строка:
А значит, озвученная проблема либо решена, либо решать надо было другую проблему (то есть дело не в макро), либо ты просто где-то ошибся. Исправлено 1 раз(а). Последнее : akvvohinc, 18.10.19 17:19 |
Re: Проблема с массивами | |
---|---|
Владимир Максимов Сообщений: 14095 Откуда: Москва Дата регистрации: 02.09.2000 |
Генератор меню в FoxPro - это обычный файл PRG, который, если необходимо, можно вполне модифицировать под свои нужды
Если посмотреть, как именно выполняется эта самая генерация, то там формируется строка вида
Где переменные памяти - это содержимое тех полей, которые ты заполнял при конструировании меню в конструкторе. И здесь кавычки ставятся исходя из предположения, что в качестве PROMPT был указан текст. Что, в общем, логично Если же речь идет о том, что текст пункта меню должен формироваться динамически из массива, то, в принципе, возможны 2 решения 1. Модифицировать код генератора меню с тем, что если переменная m.prompt начинается с какого-либо спец.символа (той же макроподстановки), то не окружать текст кавычками, а оставить "как есть". Возможно даже предварительно удалив этот спец.символ В процедуре genmenu.prg это функция FUNCTION defbars Там интерес представляет строка
переменная m.prompt формируется из значения поля PROMPT таблицы-конструктора и записывается в файл MPR с кодом сформированного меню. Вот здесь и надо будет "помудрить" 2. А может, ну его этот генератор? Какие проблемы-то вручную написать PRG для генерации меню? Если очень хочется, можно его переименовать в MPR |
Re: Проблема с массивами | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Ну почему же только два? Выше я предлагал третье, не требующее модификации или написания генератора. Но, судя по ответам ТС, проблема, возможно, вовсе не в макро, если предложенное мною решение тоже не прошло:
|
Re: Проблема с массивами | |
---|---|
Владимир Максимов Сообщений: 14095 Откуда: Москва Дата регистрации: 02.09.2000 |
Да. Тоже вариант. Хотя необходимость "придерживать пальцем" как и в первом предложенном мной варианте, лично мне не нравится
Это он так не очевидно подтвердил твой вывод. Я сгенерил меню по этому варианту и получил в итоге
Т.е. это работает. Хотя и требует повышенной бдительности от разработчика Лично я в данном случае вообще отказался бы от генератора и писал бы код вручную. Но, видимо, есть свои особенности |
Re: Проблема с массивами | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
То, что генератор так сработает, ясно. Но то, что даже в таком виде меню у ТС всегда работает так, как ему нужно, мне из его ответа не показалось. Он собирался пробовать что-то еще:
Похоже, проблема не в том, как создается это меню. Исправлено 1 раз(а). Последнее : akvvohinc, 20.10.19 03:31 |
© 2000-2024 Fox Club  |