Re: Как передать массив в SCX-файл? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Да, действительно. Тоже никогда не пользовался. Может быть, и придумал бы, как использовать. Но уже как-то без этого обошлось.
|
Re: Как передать массив в SCX-файл? | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Когда в Фоксе это появилось, то все подобные интерфейсные штучки уже давно были реализованы иначе и с бОльшим функционалом, чем обычный Popup. Поэтому пересаживаться с Мерседеса на Запорожец смысла не было никакого. Так что, видимо, прочитал когда-то и забыл за бесполезностью... Исправлено 1 раз(а). Последнее : akvvohinc, 03.12.20 16:58 |
Re: Как передать массив в SCX-файл? | |
---|---|
sphinx Автор Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Цитата: Увы, в старом (нескомпилированном) проекте прекрасно работает с этой конструкцией FROM.
Не нашел, куда втиснуть - попробовал в секцию WHERE. Ругаццо перестал, компилируется без ругани на AVTOTS.. но при работе с SCX ругается на тот же массив. ------------------ "Veni, vidi, vici!"(с) |
Re: Как передать массив в SCX-файл? | |
---|---|
sphinx Автор Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Цитата: Именно в таком виде - да в SPR. Это чтоб было понятно, какой именно SAY. А врезать EXTERNAL ARRAY надо где-то в SCX - тут без вариантов. ------------------ "Veni, vidi, vici!"(с) |
Re: Как передать массив в SCX-файл? | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Не верю! (с) Эта "ругань", даже когда происходит, не мешает компилятору создавать правильный EXE. И если массив действительно глобальный, то при выполнении команда его увидит. Другое дело, что команда
Так что проверь, что в этом месте Avtors - это действительно массив. Исправлено 1 раз(а). Последнее : akvvohinc, 03.12.20 17:16 |
Re: Как передать массив в SCX-файл? | |
---|---|
sphinx Автор Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
PUBLIC ARRAY наверное надо было..
------------------ "Veni, vidi, vici!"(с) |
Re: Как передать массив в SCX-файл? | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Необязательно. Можно
|
Re: Как передать массив в SCX-файл? | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Как ты здесь писал в какой-то теме - пришли проект и тебе помогут!
Присылай и, почти уверен, я решу эту проблему. |
Re: Как передать массив в SCX-файл? | |
---|---|
sphinx Автор Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Если завтра не взлетит - пришлю.
------------------ "Veni, vidi, vici!"(с) |
Re: Как передать массив в SCX-файл? | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Вот, держи: www.upload.ee Там я русский хелп 2.0 "наложил поверх" английского 2.6. Т.е. большинство пунктов русско-английские, а сколько-то более новых (немного) - только английские, собирался перевести, все руки не доходили. А там уже и VFP занялся, не актуально стало. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Как передать массив в SCX-файл? | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Спасибо! Правда, в своем Help'е я уже тоже обнаружил этот FROM. Более того, я сам переводил в свое время Help (почти весь), и этот топик оказался переведенным. Но вот пользоваться таким вариантом не приходилось, и забыл напрочь. |
Re: Как передать массив в SCX-файл? | |
---|---|
sphinx Автор Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Сергей, я сам все успешно зарешал. DIMENSIOM прописал - и стало так, как доктор прописал! Спасибо всем! ------------------ "Veni, vidi, vici!"(с) |
Re: Как передать массив в SCX-файл? | |
---|---|
vnkor Сообщений: 324 Дата регистрации: 04.10.2007 |
Я это в самом начале предлагал. |
Re: Как передать массив в SCX-файл? | |
---|---|
sphinx Автор Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Да я разве спорю? Я просто уперся на EXTERNAL ARRAY и вкуда его грамотно прописать. Понял ошибку. И Вам спасибо, это не прошло без внимания. ------------------ "Veni, vidi, vici!"(с) Исправлено 1 раз(а). Последнее : sphinx, 04.12.20 18:06 |
Re: Как передать массив в SCX-файл? | |
---|---|
sphinx Автор Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Цитата: Много ставил? ------------------ "Veni, vidi, vici!"(с) |
Re: Как передать массив в SCX-файл? | |
---|---|
sphinx Автор Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Коллеги, я ДОКАЗАЛ на практике, что все разговоры у нас, мол, не собрать - развенчал! Раз работает с вызовом Фокса - значит немного поприседав - закомпилю. Да, хоть и поддерживаю много FPD 2.6 - но руки не доходили, запугали немного (да и других задач немало, где приходится попотеть.. но результат будет).
Так вот! Доказал сам себе - что эти проекты, если есть мозги - собираются. Я не про все препоны при сборке рассказал, сам зарешал, пусть и без гугла - на интуиции (интуиция - это отражение опыта). Вот так! "А кто-то говорил - мелкая речка Урал..."(с) ;) Проект собран! И работает! Маленькая победа? Ну, как сказать... Наши и это не смогут. ------------------ "Veni, vidi, vici!"(с) Исправлено 1 раз(а). Последнее : sphinx, 05.12.20 00:16 |
Re: Как передать массив в SCX-файл? | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
А я тоже упрусь! DIMENSION здесь хоть и помог, но для работы проги и ее сборки не необходим. Ты просто переопределил то, что уже и так существовало в этом месте. То есть тебе пришлось написать что-то вроде такого:
То есть эта команда не выполнила ничего, кроме того, что показала компилятору в нужном месте, что avtors - массив. Я бы назвал этот способ натуральным костылём. На мой взгляд, если бы ты ровно в том же месте, где ты поставил этот костыль, написал EXTERNAL ARRAY avtors, то это убрало ошибку, которую ты получал при сборке.
Ты же видел, что причиной моей ставки было не сомнение в твоих силах - я сомневался в возможностях Фокса переварить опцию FROM. Ладно, придется поголодать пару недель... Исправлено 4 раз(а). Последнее : akvvohinc, 05.12.20 04:02 |
Re: Как передать массив в SCX-файл? | |
---|---|
sphinx Автор Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Цитата: Да не надо! Я за всех подниму вечером. ;) ------------------ "Veni, vidi, vici!"(с) |
Re: Как передать массив в SCX-файл? | |
---|---|
sphinx Автор Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Цитата: Было вообще PRIVATE. Нет под рукой Хелпа, но допускаю, что это работало, как МОЯ связка PUBLIC+DIMENSION. Массив-то потом заполнялся без ошибок при НЕСОБРАННОМ проекте. Можно проверить, будет ли работать на одном PRIVATE. Но какие-то нюансы есть, раз простой компиляцией не увидел AVTORS (практика - критерий истины). Речь только про это. И вряд ли это костыль, это скорее более полное указание для сборки. Как бы там ни было - без EXTERNAL ARRAY в SCX не взлетело. Я прописал в WHERE - работает. Но может НУЖНО было в другой секции, не сильно играю в FPD26. 20 лет никто не мог собрать проект. А делов-то оказалось. Фу, я думал на порядок сложнее. ------------------ "Veni, vidi, vici!"(с) Исправлено 1 раз(а). Последнее : sphinx, 05.12.20 09:33 |
Re: Как передать массив в SCX-файл? | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Компилятор видит в SPR нечто с именем Avtors, но не знает, массив ли это (а в опции FROM может быть только массив), поскольку он был определен как массив не в этом файле. Это обычное поведение компилятора хоть в FPD, хоть в VFP. А псевдокоманда EXTERNAL ARRAY avtors в этом SPR как раз и призвана указать компилятору, что Avtors - действительно массив. При этом работать созданный EXE будет и без EXTERNAL ARRAY - компилятор всё равно свою работу сделает, просто тебе будет выдаваться это сообщение каждый раз при сборке. Цитата:Если бы ты создавал массив именно в этом SPR, то естественно, это бы не было костылем. Но ты своим DIMENSION не создаешь массив - он уже существовал в этом же самом месте в точно таком же виде и уже заполненный (ты сам об этом писал - "ибо массив заполняется ДО вызова .SCX"). Твоя команда DIMENSION avtors, в том виде, в котором я ее написал раньше, ничего с этим массивом не сделала - сохранила как его размерность, так и значения всех элементов. А следовательно, была не нужна. Указание же для компилятора - именно команда EXTERNAL ARRAY avtors, которая командой не является (не переводится в псевдокод, то есть не попадает в EXE). И ее единственное назначение - сообщить компилятору, что avtors - массив. PS На самом деле я в свое время использовал EXTERNAL ARRAY еще одним способом (можно назвать это Undocumented feature ). Представь, что тебе в программе нужно вызывать некую функцию/процедуру, которой не будет в этом EXE (например, будет создаваться на лету или будет находиться во внешнем (процедурном или непроцедурном) файле). То есть ты где-то вызываешь процедуру/функцию
Компилятор напишет:
Так вот чтобы это сообщение не появлялось, можно написать в этом файле ту же команду EXTERNAL ARRAY proc1. Компилятор сочтет proc1 внешним массивом и "ругаться" не станет, построив нормальный EXE. А нормальным он будет потому, что команды вызова процедуры/функции и обращения к элементу массива превращаются компилятором в один и тот же код! Причем, не важно, будут ли при обращении к proc1 параметры или нет, а если будут, то 1-2 или больше. PPS В некоторых случаях (например, при подключении внешнего процедурного файла) ту же проблему можно решить иначе - создав где-то, например, в головном файле процедуру-пустышку с именем proc1. Компилятор ее увидит и ругаться не будет, а при работе EXE вызываться будет не она, а реальная процедура из процедурного файла согласно приоритету вызовов. Этот вариант проще, так как команду EXTERNAL ARRAY придется вставлять во все PRG, где вызывается proc1, а определить процедуру-пустышку достаточно один раз (ну, увеличится EXE на несколько байтов на каждую такую пустышку - не проблема ). Исправлено 9 раз(а). Последнее : akvvohinc, 06.12.20 03:22 |
© 2000-2024 Fox Club  |