Типові питання програмування

На цій станиці поміщені відповіді на питання, які я сам болісно (або легко) знаходив, я не думаю, що відповіді вичерпні, і якщо Ви знайдете, що що-небудь дісанірует з Вашими уявленнями, давайте обговоримо і знайдемо кращі рішення. Крім того, часто відповідь може залежати від версії як OS так і Visual FoxPro, перевірити все на всіх версіях і платформах для мене просто непосильно. Спочатку цей список був виключно для VFP 5.0, в той час як зараз це тільки VFP 7.0 / 8.0, я міг десь і пропустити згадка про версії, і якщо Ви знайдете невідповідності, повідомте будь ласка мені.

Питання: Чому exe-модуль створений в Visual FoxPro "не працює" при спробі запустити його на машині, де не встановлена ​​повна версія Visual FoxPro, а тільки RunTime-івської частина його?

Відповідь: Я більше ніж упевнений, що цей же модуль не працюватиме і там, де встановлена ​​повна версія, якщо запустити його не з-під оболонки Visual FoxPro. Спробуйте, і якщо це дійсно так, то причина проста. У цьому модулі слід організувати нескінченний цикл для обробки подій, що відбуваються в ньому, і що переривається по команді завершення роботи модуля. Робиться це за допомогою команд Read Events і Clear Events відповідно.

Питання: Я експериментально встановив, який набір файлів слід помістити в каталог разом з exe-модулем, створеним в Visual FoxPro, щоб він коректно працював на клієнті без установки RunTime-івської частини Visual FoxPro. Чи правильно я зробив, чи не буде у мене проблем в майбутньому?

Відповідь: Думаю, що у Вас будуть проблеми, коли Ви понесете ще один, створений Вами модуль того ж клієнтові, а можливо і нову версію колишнього модуля, яка, наприклад, почне використовувати ODBC-драйвер Visual FoxPro. Тому, кращий варіант перенесення, - створення діскрібутіва, використовуючи Wizard Setup самого Visual FoxPro. Правда іноді він працює з помилкою, яка полягає в тому, що в інформаційних файлах діскрібутіва реєструються файли, які насправді не копіюються на діскрібутівние диски. Для усунення цієї проблеми слід вручну відредагувати ці файли, привівши їх у відповідність з тим, що насправді знаходиться на діскрібутівних дисках.

Питання: Я створюю додаток VFP 6.0 використовуючи Application Wizard. Чому тепер, коли я відкриваю створений таким чином проект програми з провідника Windows у мене недоступні всі Помічники (Wizard) і Будівники (Builders)? Tо ж саме я маю, якщо створю іконку програми на DeskTop Windows (Shortcut) і відкрию свій додаток через неї.

Питання: Як "вбити" Main Visual FoxPro Window? Створюю форму, встановлюю ShowWindow = 2 (As Top-Level Form).

Відповідь: Помістіть SCREEN = OFF в Ваш Config.fpw

Питання: Як вирішувати проблему зберігання паролів для доступу до програми. Чи є простий спосіб зробити це? Для паролів я маю dbf-файл (користувач, пароль). Хотів би бути мати можливість шифрувати / розшифрувати поле пароль.

Питання: Як запобігти запуск декількох примірників VFP додатки на одному робочому місці?

Відповідь: Спробуйте що-небудь подібно наступного:

Питання: Створюю VFP-додаток з однією формою (ShowWindow - 2 as Top-Level Form), роблю для нього Setup, встановлюю на клієнті Windows 95. по завершенню програми завдання вісни. Чи є спосіб позбутися від цього?

Питання: Як з VFP відстежити завершення процесу?

Відповідь: см. ID: Q191584 в MSDN "HOWTO: Determine When a 32-bit Process has Completed"

Питання: Чи потрібно з коду перемикати розкладку клавіатури: Rus / Lat. Чи можна це зробити?

Відповідь: Спробуйте що-небудь подібно наступного:

Питання: Як я можу розмістити зображення в VFP main window?

Відповідь: Спробуйте що-небудь подібно наступного:

Питання: Чи є бібліотека локалізації для VFP6. Така як в п'ятому vfp5rus.dll.

Відповідь: в SP4 VS6 в файлі VS6sp47.cab міститься vfp6rrus.dll (у мене, принаймні).

Питання: Чи можливо якось працювати з Сі-структурами, які отримуються через Win32Api функцій в VFP?

Питання: У мене не закривається додаток по [x]. Як це побороти?

Відповідь: см. ID: Q172455, Q110970, ON SHUTDOWN в MSDN. Як додавання, якщо Ви бажаєте, щоб Ваше додаток нормально завершувалося по закриттю OS [CTRL + ALT + DELETE], додайте в кінець Вашої процедури MyCleanUp, викликає за подією ON SHUTDOWN, що-небудь типу:

Питання: Використовую HOME () + 'tools / GenDbc / GenDbc.prg' для генерації dbc-файлів, однак отримую неподобство, подібне: чи можна це якось побороти?

Відповідь: Спробуйте в GenDbc.prg як PROCEDURE FixName (.) Написати "жорстко", чогось на кшталт:

Питання: Спроба скористатися рішенням Q194702 "HOWTO: Locate Windows Special Folder Locations" з MSDN ні до чого не привела. Чи є альтернативне рішення?

Відповідь: Спробуйте використовувати ось це:

Питання: Чи є можливість перехопити події VFP main window (_SCREEN) зі своєї програми?

Відповідь: Один спосіб показаний в Desktop.zip на стор. Приклади, інший в створенні свого класу подібно до того як показано нижче: Зверніть увагу, що в останньому випадку ряд подій недоступно, зокрема QueryUnload ()

Питання: Як визначити високосний рік?

Відповідь. EMPTY (DATE (m.lnYear, 2, 29))

Питання: Як створити setup VFP-додатки в версії 7.0 і вище? Не можу знайти пункт Tools / Wizards / Setup

Схожі статті