Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Несколько вопросов. / 25 сообщений из 48, страница 1 из 2
05.01.2005, 16:42
    #32854629
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
Начал изучать VFP, и у меня по хожу возникают небольшие вопросы, где-то искать их долго, так как точно не знаю где искать, поэтому решил задавать их здесь, знающему человеку легко будет подсказать, как сделать или где прочесть.
1) Я умею программировать на VB, Фокс очень похож на него, но почему-то я не смог через программу поменять Caption у label, выдаёт ошибку, а мне надо изменять.
2) Мне нужно изменять число цифр после запятой, как это сделать? А то типы в Фоксе не похожи на другие языки
3) Как из формы(кода) вызывать функции, которые я оформил, как программу? А то он пишет, что не может найти, когда вызываю
...
Рейтинг: 0 / 0
05.01.2005, 16:52
    #32854648
Redrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
1. MyForm.MyLabel.Caption="Привет!"
2. см. SET DECIMALS
3. см. SET PROCEDURE
...
Рейтинг: 0 / 0
05.01.2005, 17:45
    #32854708
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
Одессит1) Я умею программировать на VB, Фокс очень похож на него, но почему-то я не смог через программу поменять Caption у label, выдаёт ошибку, а мне надо изменять.
В FoxPro есть несколько специальных ссылок на объекты:

ThisFormSet - ссылка на текущий FormSet
ThisForm - ссылка на текущую форму
This - ссылка на текущий объект
Parent - ссылка на объект-контейнер, внутри которого непосредственно расположен текущий объект.

Все эти ссылки работают только внутри соответствующих методов и событий. Т.е. невозможно обратится к форме по ссылке ThisForm из-вне самой формы.

Соответсвенно, изменить реквизит объекта можно так:

ThisForm.MyLable.Caption = "Новый текст"

Более подробно об адресации к формам почитай здесь

http://www.foxclub.ru/kb/index.php?sid=75423&aktion=artikel&rubrik=004&id=4&lang=ru

Одессит2) Мне нужно изменять число цифр после запятой, как это сделать? А то типы в Фоксе не похожи на другие языки
FoxPro сам меняет количество знаков после запятой (если речь идет о переменных памяти). А вот отображает в соответствии с настройками

SET DECIMALS
SET FIXED

Одессит3) Как из формы(кода) вызывать функции, которые я оформил, как программу? А то он пишет, что не может найти, когда вызываю
Почитай описание команд

PROCEDURE
FUNCTION

Там дана последовательность, в которой FoxPro производит поиск процедур и функций. Кроме того, обрати внимание на опцию IN в команде DO.
...
Рейтинг: 0 / 0
05.01.2005, 19:39
    #32854772
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
Спасибо за ответы, но кое-что хочу уточнить
1) Чуть повозившись я и сам понял, как присваивать, вернее понял, что присваивать можно только строку, а у меня тип Дата, я даже использовал функцию str(), но она не помогла, вернее она стала причиной ошибки. Так что у меня вопрос, как label присваивать значения типа Дата. Для ТексБокса это делается через Value, а с меткой как?
2) Ага разобрался. Значит надо перед каждым изменением количества ставить эту надпись. Мне нужно было, чтоб в ТексБоксы выводились числа в каждом с разным количеством цифр после запятой.
3) В этом языке есть много чего для меня нового.
Значит мне надо написать
SET PROCEDURE TO [адрес папки, в которой я сохраняю программные модули]
Так? Это писать в самом начале главной программы?
Или мне через эту команду вызывать процедуры?
Просто не могу понять, что в хэлпе написанно, а примеров нет
...
Рейтинг: 0 / 0
05.01.2005, 20:55
    #32854820
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
ОдесситСпасибо за ответы, но кое-что хочу уточнить
1) Чуть повозившись я и сам понял, как присваивать, вернее понял, что присваивать можно только строку, а у меня тип Дата, я даже использовал функцию str(), но она не помогла, вернее она стала причиной ошибки. Так что у меня вопрос, как label присваивать значения типа Дата. Для ТексБокса это делается через Value, а с меткой как?
Содержимое любого Caption - это символьная строка. Значит любое значение надо перевести в символьный вид. Универсальная функция конвертации чего угодно к символьному типу (начиная с версии VFP6)

TRANSFORM()

Кроме того, для каждого типа данных есть своя, специфическая, функция конвертации. Для типа Date это

DTOC()
DTOS()

Одессит2) Ага разобрался. Значит надо перед каждым изменением количества ставить эту надпись. Мне нужно было, чтоб в ТексБоксы выводились числа в каждом с разным количеством цифр после запятой.
Нет. Не нужно. Почитай описание свойств

TextBox.Format - способ отображения ранее введенных значений
TextBox.InputMask - способ отображения в процессе ввода (изменения) значений

Например:
TextBox.InputMask = "999,999,999.9999"

Здесь символы маски - это не есть реальные цифры, точки и запятая. Это спец.символы. Каждый из которых имеет вполне определенное назначение. Подробности в описании.

Одессит3) В этом языке есть много чего для меня нового.
Значит мне надо написать
SET PROCEDURE TO [адрес папки, в которой я сохраняю программные модули] Так?
Это один из вариантов. Другие варианты почитай в описании к ранее приведенным командам по этому же вопросу.

Одессит Это писать в самом начале главной программы?
Или мне через эту команду вызывать процедуры?
Назначение настройки SET PROCEDURE - это указать FoxPro, где еще следует поискать нужную процедуру или функцию, помимо SET PATH и других способов указания.

Только ни в коем случае не используй абсолютных путей доступа (начиная с диска C:\MyDir\...) Всегда используй относительные пути. Относительно текущей (по умолчанию) директории.

По поводу путей и расположения файлов почитай здесь

http://www.foxclub.ru/kb/index.php?sid=114698&aktion=artikel&rubrik=004&id=5&lang=ru

ОдесситПросто не могу понять, что в хэлпе написанно, а примеров нет
Ну, так сам экспериментируй! 5 минут экспериментов и все ясно. И не надо по пол-дня ждать ответов в конфе.
...
Рейтинг: 0 / 0
05.01.2005, 21:26
    #32854835
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
ВладимирМ
Только ни в коем случае не используй абсолютных путей доступа (начиная с диска C:\MyDir\...) Всегда используй относительные пути. Относительно текущей (по умолчанию) директории.

А где задаётся директория по умолчанию? И как её узнать?

В остальном понятно. Пишу на конфу, так как на поиски уже тратил больше 5 минут времени, пока отвечаете я изучаю что-то другое.

Ещё раз спасибо.
...
Рейтинг: 0 / 0
05.01.2005, 21:30
    #32854836
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
Help Set Default

Проверить текущую установку можно так:

? sys(5) + sys(2003)
...
Рейтинг: 0 / 0
05.01.2005, 22:19
    #32854846
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
Одессит
А где задаётся директория по умолчанию? И как её узнать?

У тебя ссылки на http://www.foxclub.ru не работают? Или просто лень сходить почитать?
...
Рейтинг: 0 / 0
05.01.2005, 22:30
    #32854849
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
ВладимирМ Одессит2) Ага разобрался. Значит надо перед каждым изменением количества ставить эту надпись. Мне нужно было, чтоб в ТексБоксы выводились числа в каждом с разным количеством цифр после запятой.
Нет. Не нужно. Почитай описание свойств

TextBox.Format - способ отображения ранее введенных значений
TextBox.InputMask - способ отображения в процессе ввода (изменения) значений

Например:
TextBox.InputMask = "999,999,999.9999"

Здесь символы маски - это не есть реальные цифры, точки и запятая. Это спец.символы. Каждый из которых имеет вполне определенное назначение. Подробности в описании.

Почитал Хэлп по этим свойствам, поэкспериментировал, но так и не понял, что я должен и куда писать, чтоб изменять только количество цифр после запятой. Никто не подскажет? На 9 у меня пишет какие-то *, и они не меняются.
...
Рейтинг: 0 / 0
05.01.2005, 22:31
    #32854850
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
ВладимирМ Одессит
А где задаётся директория по умолчанию? И как её узнать?

У тебя ссылки на http://www.foxclub.ru не работают? Или просто лень сходить почитать?
Уже скачал статьи, просто руки пока не доходят почитать, а там не так уж и просто найти по нужной проблеме, надо всё перечитывать.
...
Рейтинг: 0 / 0
06.01.2005, 09:20
    #32855012
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
авторПочитал Хэлп по этим свойствам, поэкспериментировал, но так и не понял, что я должен и куда писать, чтоб изменять только количество цифр после запятой
Вот значение InputMask и надо менять.
Строка ThisForm.TextBox.InputMask = "999,999,999.9999" означает что вы выдодишь числовое значение длиной 16 позиций из которых 9 цифр под целую часть и 4 под дробную, одна позиция под десятичный разделитель и две под разделители разрядов. Если выводимое число имеет большую целую часть то будут звездочки
...
Рейтинг: 0 / 0
06.01.2005, 15:34
    #32855466
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
Так, что-то никак не могу разобраться со 2-м вопросом, уже прочёл ссылку, сделал несколько способов, а ошибка всё та же.
Вот что я указывал в файле CONFIG.FPW
Код: plaintext
1.
DEFAULT="C:\Documents and Settings\Алексей\My Documents\Visual FoxPro Projects\birsday"
PATH=birsday
У меня функция находится в папке birsday, где и сам файл проекта.
Проверяю при заходе текущую директорию - ? sys(5) + sys(2003), получаю C:\Documents and Settings\Алексей\My Documents\Visual FoxPro Projects
Т.е то, что и без этого файла конфигурации, default не сработал
Но, ведь я и path указал. Т.е. кажется, что сам файл не запускается. Пробовал в разных местах его располагать, не помогает, ну и написано, что там где проект, а проект у меня в той папке.
В чём у меня проблема?
...
Рейтинг: 0 / 0
06.01.2005, 18:53
    #32855675
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
Default в файле конфигурации писать не надо. И вообще, явное задание текущей (по умолчанию) директории лучше избегать.

Какой именно файл конфигурации был захвачен при загрузке среды FoxPro можно узнать через функцию

?SYS(2019)

Также, текущую директорию можно определить следующим образом:

?FullPath("")

Пустые кавычки, в данном случае, обязательны

Проверить, будет ли тот или иной файл "виден" в среде FoxPro можно так:

?File('MyFile.prg')

Проверить текущую SET-настройку можно так:

?SET("Path")
?SET("Procedure")
...
Рейтинг: 0 / 0
06.01.2005, 19:33
    #32855695
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
ВладимирМDefault в файле конфигурации писать не надо. И вообще, явное задание текущей (по умолчанию) директории лучше избегать.
Какой именно файл конфигурации был захвачен при загрузке среды FoxPro можно узнать через функцию
?SYS(2019)

Если ничего не выдаёт, значит ничего не захватил? А где устанавливать надо, какой файл должен быть захвачен?
Решил проблему, через Set Default в коде программы, но мне нужен файл конфигурации, так как туда надо написать CODEPAGE=1251, кстати, а для exe-шника ему тоже будет нужен файл конфигурации с этой строкой?
И как задать в коде программы то, что в файле конфигурации я пишу как screen=off?
...
Рейтинг: 0 / 0
07.01.2005, 16:15
    #32856070
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
Еще раз. Почитай здесь

http://www.foxclub.ru/kb/index.php?sid=114698&aktion=artikel&rubrik=004&id=5&lang=ru

Там подробно расписано как надо запускать FoxPro и куда девать config.fpw
...
Рейтинг: 0 / 0
08.01.2005, 11:24
    #32856324
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
ВладимирМЕще раз. Почитай здесь

http://www.foxclub.ru/kb/index.php?sid=114698&aktion=artikel&rubrik=004&id=5&lang=ru

Там подробно расписано как надо запускать FoxPro и куда девать config.fpw
Читал
При запуске среды FoxPro в качестве директории по умолчанию устанавливается директория, где расположен сам файл проекта, а все прочие файлы проекта располагаются в поддиректориях.

Единственное, что я не делал, так это ярлыки. А что это единственный способ? А где же многовариантность? Тем более написанно:
Однако есть способ лучше
Т.е. значит есть другие, хуже.
...
Рейтинг: 0 / 0
08.01.2005, 11:32
    #32856327
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
У меня есть ещё вопрос:
4) Как узнать, какие файлы мне нужны для моей программы, чтоя я мог запустить её на другом компьютере.
В VB для этого есть программа "Package and Deployment Wizard". Что-то естьтакое в FoxPro, или надо самому искать все файлы?
...
Рейтинг: 0 / 0
08.01.2005, 12:35
    #32856343
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
ОдесситУ меня есть ещё вопрос:
4) Как узнать, какие файлы мне нужны для моей программы, чтоя я мог запустить её на другом компьютере.
В VB для этого есть программа "Package and Deployment Wizard". Что-то естьтакое в FoxPro, или надо самому искать все файлы?
До версии VFP6 включительно - это пункт меню Tools->Wizrads->Setup
Начиная с версии VFP7 - это внешняя программа InstallShield

Большая просьба. Читай то, что действительно написано, а не то, что ты хотел бы прочитать. Сначала попытайся сделать так как написано и только потом экспериментируй с новыми способами.

Не надо пытаться подходить к новому языку программирования со стериотипами, выработанными в другом языке. Это не относится только к FoxPro. Это вообще общий принцип изучения новых языков программирования.
...
Рейтинг: 0 / 0
08.01.2005, 13:09
    #32856360
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
Одессит При запуске среды FoxPro в качестве директории по умолчанию устанавливается директория, где расположен сам файл проекта, а все прочие файлы проекта располагаются в поддиректориях.

Единственное, что я не делал, так это ярлыки. А что это единственный способ? А где же многовариантность?
Встречный вопрос:

Что Вы подразумеваете под термином "многовариантность" применительно к модификации одного проекта

ОдесситТем более написанно:
Однако есть способ лучше
Т.е. значит есть другие, хуже.
Я привел наиболее простые способы запуска проекта для его правки и подключения файла конфигурации. FoxPro - это язык, который требует повышенной самодициплины от программиста. Если программист что-то не сделал, то FoxPro сам, в меру своего понимания, попробует выполнить действия не сделанные программистом. А вот насколько эти автоматические действия будут правомерны - это уже другой вопрос.

Насчет других способов. Откройте Help по FoxPro перейдите на закладку "Поиск" и выполните поиск по ключевому слову "config".
...
Рейтинг: 0 / 0
08.01.2005, 16:45
    #32856454
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
ВладимирМFoxPro - это язык, который требует повышенной самодициплины от программиста. Если программист что-то не сделал, то FoxPro сам, в меру своего понимания, попробует выполнить действия не сделанные программистом. А вот насколько эти автоматические действия будут правомерны - это уже другой вопрос.

Так в том то и дело, что меня удивляет некоторые вещи, которые при написании языка сделать легко, но они не реализованы. Почему ФоксПро автоматически не устанавливает для каждого проекта свой начальный путь по месту нахождения проекта, в котором он и будет искать различные файлы. Да и вообще можно было все внешние настройки встроить в свойства проекта.
Я не вижу, почему те способы, что сделаны, лучше. Зачем тратить время на настройку, когда это может делать компьютер, а ты только следишь, чтоб всё было верно. Но, это скорее претензии к создателям VFP
Большая просьба. Читай то, что действительно написано, а не то, что ты хотел бы прочитать. Сначала попытайся сделать так как написано и только потом экспериментируй с новыми способами.

Не надо пытаться подходить к новому языку программирования со стериотипами, выработанными в другом языке. Это не относится только к FoxPro. Это вообще общий принцип изучения новых языков программирования.
Стереотипы - это опыт. Находя подобии я быстрее его изучаю, а так пришлось бы с нуля начинать. Да, возникают проблемы, когда подобий нет, но это один из недостатков метода. В любом случае мой метод позволяет сразу писать программы на незнакомом языке, а потом уже его отлаживать.
...
Рейтинг: 0 / 0
08.01.2005, 19:39
    #32856521
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
ОдесситТак в том то и дело, что меня удивляет некоторые вещи, которые при написании языка сделать легко, но они не реализованы...

Стереотипы - это опыт. Находя подобии я быстрее его изучаю, а так пришлось бы с нуля начинать. Да, возникают проблемы, когда подобий нет, но это один из недостатков метода. В любом случае мой метод позволяет сразу писать программы на незнакомом языке, а потом уже его отлаживать.
Чуствуешь противоречие? Твой опыт говорит одно, а конкретная реализация в данном языке программирования принципиально другая. Причем заметь, я говорю не о том, что что-то можно сделать, а что-то нельзя. Я говорю о том, как сделать то или другое.

Стереотипы (опыт) - это очень коварная штука. Просто нельзя на основании опыта программирования в одном языке делать какие-то предположения в другом. Не получается. Языки программирования отличаются прежде всего способом решения тех или иных задач. Т.е. именно стереотипами программирования!

Например, в FoxPro есть такая замечательная штука. Называется макроподстановка. Это когда ты в переменную записываешь команду или фрагмент команды, а потом этот записанный фрагмент исполняется как собственно команда.

Когда я пытаюсь применить стереотип программирования основанный на макроподстановках в другом языке программирования я сталкиваюсь с большими проблемами. И совершенно справедливо. Нечего лезть со своим уставом (стереотипом) в чужой монастырь (язык программирования)!

Между прочим, когда в объявлениях о приеме на работу пишут, что нужен стаж работы на конкретном языке не менее 3 лет, то я их вполне понимаю. Это именно тот срок, конда ты наконец вырабатываешь стереотипы программирования на конкретном языке. Это действительно требует времени. Причем значительно большего чем просто освоить какие-то команды и функции языка. Кодить-то можно научиться за пару недель (а то и быстрее).
...
Рейтинг: 0 / 0
09.01.2005, 15:39
    #32856809
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
Написал программу. Теперь мне надо было её запустить в другое ОС, где нет Фокса. В папку Виндоус я скопировал такие файлы: msvcr71.dll, vfp9r.dll, vfp9rrus.dll, gdiplus.dll. Попробывал запустить программу выдаётся ошибка, что файл vfp9r.dll неправельный или повреждён. Что мне делать?
...
Рейтинг: 0 / 0
09.01.2005, 15:48
    #32856817
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
Hi Одессит!

1) При запуске фокса с ярлыка, берётся конфиг из той папки что указана как
"стартовая", или из папки с vfpN.exe - если он там есть конечно. При запуске
"открытием pjx/pjt файла из проводника/FAR/TotalCommander/etc" берётся тот
конфиг что находится в папке с этим самым файлом. Наконец всегда можно
воспользоваться ключом -C FileName для явного указания какой конфиг
использовать.
2) При запуске готового exe используется тот конфиг который в этот exe
"вкомпилирован", или тот что лежит рядом с exe. AFAIK ключик -C тоже
работает (елси нету вкомпилированного конфига, или есть там включено
ALLOWEXTERNAL - это для VFP8 и старше).
3) PATH и DEFAULT лучше не писать в конфиге. В принципе там совсем
немного установок, которые НЕ ИМЕЮТ АНАЛОГОВ в программном коде.
CODEPAGE=1251, SCREEN=OFF одни из таких. В принципе все остальные
"недублируемые" настройки практически используются крайне редко.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
09.01.2005, 16:10
    #32856834
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
Ага, теперь понял в чём была моя ошибка, я открывал проект из самого Фокса, поэтому он и не находил файл конфигурации.
...
Рейтинг: 0 / 0
09.01.2005, 16:32
    #32856843
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько вопросов.
Так кто-то мне поможет с настройкой прогы, чтоб она работала на другом компе?
Эту прогу я написал на день рождения своей девушки(у неё фокса нет), который, кстати, сегодня. Хоть прога личная, но я могу дать исходники, чтоб кто-то скомпелировал у себя и прислал мне архив с библиотеками.
Ну, или объясните, почему прога может ругаться на то, что библиотека повреждена. У меня ФоксПро 9.
Буду благодарен за помощь.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Несколько вопросов. / 25 сообщений из 48, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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