<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум компьютерной помощи &mdash; Использование FoxBase+ и Clipper в локальной сети]]></title>
		<link>http://itpmr.ru/viewtopic.php?id=532</link>
		<atom:link href="http://itpmr.ru/extern.php?action=feed&amp;tid=532&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Использование FoxBase+ и Clipper в локальной сети».]]></description>
		<lastBuildDate>Tue, 23 Jul 2024 08:07:58 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Использование FoxBase+ и Clipper в локальной сети]]></title>
			<link>http://itpmr.ru/viewtopic.php?pid=124971#p124971</link>
			<description><![CDATA[<p>3.7.4. Функция ADD_REC</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Эта функция пытается добавить&nbsp; новую&nbsp; заблокированную за-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; пись в базу данных. Числовой параметр этой функции&nbsp; - интервал<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; времени в секундах, в течение которого функция&nbsp; продолжает по-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; пытки добавления записи, после чего функция&nbsp; возвращает значе-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ние &quot;ложь&quot; (.F.).</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IF .NOT. ADD_REC(5)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ? &quot;Нельзя добавить запись в файл.&quot; +;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot; Программа закончила работу!&quot;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; QUIT<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ENDIF</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FUNCTION ADD_REC<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PARAMETERS wait<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PRIVATE forever<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;APPEND BLANK<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IF .NOT.NETERR()<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RETURN (.T.)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ENDIF<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;forever = (wait = 0)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DO WHILE (forever .OR. wait &gt; 0)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; APPEND BLANK<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IF .NOT. NETERR()<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RETURN (.T.)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ENDIF<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; INKEY(0.5)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;&amp; Ожидание 1/2 секунды<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; wait = wait - 0.5<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ENDDO<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RETURN (.F.)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;&amp; Незаблокирована<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Конец ADD_REC</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Список литературы</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1. Clipper User&#039;s Manual, Nuntucket Corp., Summer &#039;87.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2. FoxBASE+ v2.00 User&#039;s Manual. Fox Software, Inc., 1987.</p>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Tue, 23 Jul 2024 08:07:58 +0000</pubDate>
			<guid>http://itpmr.ru/viewtopic.php?pid=124971#p124971</guid>
		</item>
		<item>
			<title><![CDATA[Re: Использование FoxBase+ и Clipper в локальной сети]]></title>
			<link>http://itpmr.ru/viewtopic.php?pid=124970#p124970</link>
			<description><![CDATA[<p>3.7.2. Функция FIL_LOCK.</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Эта функция пытается заблокировать текущий файл, открытый<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; в режиме разделения. Числовой параметр этой функции - интервал<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; времени в секундах, в течение которого функция&nbsp; продолжает по-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; пытки блокирования файла, после истечения которого она возвра-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; щает значение &quot;ложь&quot; (.F.).<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IF FIL_LOCK(5)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; REPLACE ALL Salary WITH Salary * 1.9<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ELSE<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ? &quot;Файл Accounts не доступен&quot;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ENDIF</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FUNCTION Fil_lock<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PARAMETERS wait<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PRIVATE forever<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IF FLOCK()<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RETURN (.T.)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&amp;&amp; Заблокирован<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ENDIF<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;forever = (wait = 0)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DO WHILE (forever .OR. wait &gt; 0)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; INKEY(.5)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&amp;&amp; Ожидание 1/2 секунды<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; wait = wait - 0.5<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IF FLOCK()<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RETURN (.T.)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&amp;&amp; Заблокирован успешно<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ENDIF<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ENDDO<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RETURN (.F.)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&amp;&amp; Не заблокирован<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Конец FIL_LOCK</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3.7.3. Функция REC_LOCK</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Эта функция пытается заблокировать текущую&nbsp; запись файла,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; открытого в режиме разделения. Числовой параметр&nbsp; этой функции<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - интервал времени в секундах, в течение которого функция про-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; должает попытки блокирования записи. Функция&nbsp; REC_LOCK возвра-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; щает логическое возвращает логическое&nbsp; значение&nbsp; &quot;истина&quot;&nbsp; или<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;ложь&quot; (.T. или .F.).</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IF REC_LOCK(5)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; REPLACE Salary WITH Salary * 1.9<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ELSE<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ? &quot;Запись файла Accounts не доступна&quot;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ENDIF</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FUNCTION Rec_lock<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PARAMETERS wait<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PRIVATE forever<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IF RLOCK()<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RETURN (.T.)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&amp;&amp; Заблокирована<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ENDIF<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;forever= (wait = 0)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DO WHILE (forever .OR. wait &gt; 0)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IF RLOCK()<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RETURN (.T.)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;&amp; Заблокирована успешно<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ENDIF<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; INKEY(0.5)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;&amp; Ожидание 1/2 секунды<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; wait = wait - 0.5<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RETURN (.F.)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&amp;&amp; Не заблокирована<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Конец Rec_lock</p>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Tue, 23 Jul 2024 08:07:49 +0000</pubDate>
			<guid>http://itpmr.ru/viewtopic.php?pid=124970#p124970</guid>
		</item>
		<item>
			<title><![CDATA[Re: Использование FoxBase+ и Clipper в локальной сети]]></title>
			<link>http://itpmr.ru/viewtopic.php?pid=124969#p124969</link>
			<description><![CDATA[<p>3.7. Программа Locks.prg</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Программа Locks.prg, имеющаяся&nbsp; на&nbsp; дистрибутивном&nbsp; диске<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Clipper&#039;а, содержит пользовательские функции для сети. Необхо-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; димо использовать функции ADD_REC, FIL_LOCK, NET_USE, REC_LOCK<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; вместо команды APPEND BLANK, функции FLOCK,&nbsp; команды&nbsp; USE&nbsp; ...<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EXCLUSIVE и&nbsp; функции&nbsp; RLOCK&nbsp; соответственно.&nbsp; Каждая&nbsp; из&nbsp; этих<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; функций пытается блокировать запись или файл в течение опреде-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ленного промежутка времени, так что машинное время использует-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ся оптимально. Для того, чтобы использовать эти функции, необ-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ходимо включить в свою программу&nbsp; команду&nbsp; &quot;SET&nbsp; PROCEDURE&nbsp; TO<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Locks&quot;. В программе Locks.prg предполагается,&nbsp; что установлено<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SET EXCLUSIVE OFF. Текст программы приведен ниже.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Примечание. Вы можете использовать эти функции как пример<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; и на их основе разработать свои, более&nbsp; подходящие&nbsp; для&nbsp; вашей<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; задачи.</p><br /><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3.7.1. Функция NET_USE</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Эта функция пытается открыть файл&nbsp; в&nbsp; монопольном&nbsp; режиме<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; или врежиме разделения и возвращает логическое значение &quot;исти-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; на&quot; или &quot;ложь&quot; (.T. или .F.).<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Функция NET_USE использует три параметра:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;текстовая переменная&nbsp; - имя базы данных, которую нужно<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;открыть;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;логическая переменная - режим открытия (монопольный<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/разделяемый);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;числовая переменная&nbsp; &nbsp;- количество секунд ожидания (0 -<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ждать до конца).<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Если функция NET_USE отработала успешно, то&nbsp; после&nbsp; этого<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; можно открывать индексные файлы (команда SET INDEX).<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IF NET_USE(&quot;Accounts&quot;,.T.,5)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SET INDEX TO Name<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ELSE<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;? &quot; Файл Accounts не доступен&quot;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ENDIF</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FUNCTION NET_USE<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PARAMETERS file, ex_use, wait<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PRIVATE forever<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;forever = (wait = 0)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DO WHILE (forever .OR. wait &gt; 0)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IF ex_use&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&amp;&amp; Монопольный режим<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USE &amp;file EXCLUSIVE<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ELSE&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;&amp; Режим разделения<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USE &amp;file<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ENDIF<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IF .NOT. NETERR()&nbsp; &nbsp; &nbsp; &nbsp;&amp;&amp; Успешное открытие файла<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RETURN (.T.)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ENDIF<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; INKEY(1)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;&amp; Ждать 1 секунду<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; wait = wait - 1<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ENDDO<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RETURN (.F.)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&amp;&amp; Файл не открыт<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Конец NET_USE</p>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Tue, 23 Jul 2024 08:07:36 +0000</pubDate>
			<guid>http://itpmr.ru/viewtopic.php?pid=124969#p124969</guid>
		</item>
		<item>
			<title><![CDATA[Re: Использование FoxBase+ и Clipper в локальной сети]]></title>
			<link>http://itpmr.ru/viewtopic.php?pid=124968#p124968</link>
			<description><![CDATA[<p>3.6. Влияние сетевой среды на команды</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Некоторые команды при работе в сетевой среде&nbsp; требуют мо-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; нопольного открытия файла, либо блокирования файла или записи.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Однако, что требования изменяются в зависимости&nbsp; от&nbsp; того, вы-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; полняется ли команда с одной записью или с несколькими записями. <br />Ниже приведены требования этих команд.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Таблица 3.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Влияние сетевой среды на команды<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-----------------------------------------------------------<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Команда&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Требования<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-----------------------------------------------------------<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@...SAY...GET&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RLOCK()<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;APPEND FROM&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USE...EXCLUSIVE или<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FLOCK()<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DELETE (одна запись)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RLOCK()<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DELETE (несколько записей)&nbsp; &nbsp; &nbsp; USE...EXCLUSIVE или FLOCK()<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PACK&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; USE...EXCLUSIVE<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RECALL (одна запись)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RLOCK()<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RECALL (несколько записей)&nbsp; &nbsp; &nbsp; USE...EXCLUSIVE или FLOCK()<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;REINDEX&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USE...EXCLUSIVE<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;REPLACE (одна запись)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RLOCK()<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;REPLACE (несколько записей)&nbsp; &nbsp; &nbsp;USE...EXCLUSIVE или FLOCK()<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UPDATE ON&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USE...EXCLUSIVE или FLOCK()<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ZAP&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USE...EXCLUSIVE<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-----------------------------------------------------------</p>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Tue, 23 Jul 2024 08:07:24 +0000</pubDate>
			<guid>http://itpmr.ru/viewtopic.php?pid=124968#p124968</guid>
		</item>
		<item>
			<title><![CDATA[Re: Использование FoxBase+ и Clipper в локальной сети]]></title>
			<link>http://itpmr.ru/viewtopic.php?pid=124967#p124967</link>
			<description><![CDATA[<p>3.5. Влияние сетевой среды на файлы</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Работа c файлами в сетевой среде (команда&nbsp; SET&nbsp; EXCLUSIVE<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OFF) осуществляется совершенно по другому по сравнению с одно-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; пользовательским (или монопольным) режимом. Базы данных и свя-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; занные с ними файлы открываются в режиме разделения&nbsp; или моно-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; польном&nbsp; в&nbsp; зависимости&nbsp; от&nbsp; текущего&nbsp; статуса&nbsp; &nbsp;команды&nbsp; &nbsp;SET<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EXCLUSIVE и/или в зависимости от того,&nbsp; открываются&nbsp; ли&nbsp; файлы<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; при помощи команды USE или USE ... EXCLUSIVE.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Если была выполнена команда SET EXCLUSIVE ON, база данных<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; и связанные с ней файлы открываются командой USE в монопольном<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (не разделяемом) режиме. Если выполнена команда&nbsp; SET EXCLUSIVE<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OFF и затем вы открываете файл командой USE,&nbsp; то&nbsp; базы&nbsp; данных<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; открываются в режиме разделения.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Если выполнена команда&nbsp; SET&nbsp; EXCLUSIVE&nbsp; OFF&nbsp; и&nbsp; затем&nbsp; вы<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; открываете файл командой&nbsp; USE&nbsp; ...&nbsp; EXCLUSIVE,&nbsp; то&nbsp; этот&nbsp; файл<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; открывается в монопольном (не разделяемом) режиме.</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Примечание.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Блокирование файла или&nbsp; записи&nbsp; необходимо&nbsp; только&nbsp; когда<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; файл открыт в режиме разделения.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Некоторые команды Foxbase+ и Clipper дополнительно откры-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; вают файлы данных (и/или связанные .dbt и индексные файлы) от-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; личные от текущего открытого файла. По&nbsp; завершении&nbsp; выполнения<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; команды такие файлы закрываются.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Следующая таблица показывает как будут открываться файлы,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; отличные от текущего открытого, при выполнении таких команд.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Таблица 2. Как открываются дополнительные файлы при<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; выполнении&nbsp; некоторых команд<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;------------------------------------------------------------<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Команды, читающие из &lt;файла&gt;&nbsp; &nbsp; Команды, пишущие в &lt;файл&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;и открывающие его в режиме&nbsp; &nbsp; &nbsp; и открывающие его в<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;разделения&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; монопольном режиме<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-----------------------------------------------------------<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;APPEND FROM &lt;имя файла&gt;&nbsp; &nbsp; &nbsp; &nbsp; COPY STRUCTURE TO &lt;имя файла&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CREATE ... FROM &lt;имя файла&gt;&nbsp; &nbsp; COPY TO &lt;имя файла&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LABEL FORM &lt;имя файла&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CREATE &lt;имя файла&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;REPORT FORM &lt;имя файла&gt;&nbsp; &nbsp; &nbsp; &nbsp; INDEX ON ... TO &lt;имя файла&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RESTORE FROM &lt;имя файла&gt;&nbsp; &nbsp; &nbsp; &nbsp;JOIN ... TO &lt;имя файла&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TYPE &lt;имя файла&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SAVE TO &lt;имя файла&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UPDATE ... FROM &lt;имя файла&gt;&nbsp; &nbsp; SET ALTERNATE TO &lt;имя файла&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SORT ... TO &lt;имя файла&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TOTAL ... TO &lt;имя файла&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-----------------------------------------------------------<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Файл, открытый в режиме разделения,&nbsp; как&nbsp; показано&nbsp; выше,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; открывается&nbsp; с&nbsp; использованием&nbsp; атрибута&nbsp; DOS&nbsp; &quot;только-чтение&quot;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (read-only).</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Команда SET INDEX TO откроет индексный файл в режиме раз-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; деления или монопольном, в&nbsp; зависимости&nbsp; от&nbsp; текущего&nbsp; статуса<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; открытия соответствующей базы данных.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Некоторые из этих команд работают с двумя файлами, причем<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; часто к одному обращаются по его имени, как приведено в табли-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; це 2, а другой - текущий. Режим открытия текущей&nbsp; базы&nbsp; данных<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; предопределен и зависит от ранее описанных команд.</p>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Tue, 23 Jul 2024 08:07:16 +0000</pubDate>
			<guid>http://itpmr.ru/viewtopic.php?pid=124967#p124967</guid>
		</item>
		<item>
			<title><![CDATA[Re: Использование FoxBase+ и Clipper в локальной сети]]></title>
			<link>http://itpmr.ru/viewtopic.php?pid=124966#p124966</link>
			<description><![CDATA[<p>Обработка ситуации, как правило,&nbsp; состоит&nbsp; в&nbsp; последующем<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ветвлении в программе после выбора пользователем из небольшого<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; меню. Типичное меню содержит три опции:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - повторение попытки блокирования;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - попытка работать с другими данными;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - прекращение работы, возврат в вышестоящее меню.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Первая опция дает возможность пользователю&nbsp; повторить по-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; пытку блокирования, но это не самое лучшее решение. Вторая оп-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ция имеет смысл во многих приложениях. Если запись&nbsp; не доступ-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; на, обрабатывается другая запись, и&nbsp; если&nbsp; затем&nbsp; вернуться&nbsp; к<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; первой записи, возможно, она будет доступна. Третья опция пре-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; рывает попытки блокирования и возвращает в&nbsp; меню&nbsp; вышестоящего<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; уровня.</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;В любом случае какой бы выбор не был сделан,&nbsp; нужно снять<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; блокировку командой UNLOCK сразу же после того, как блокирова-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ние отслужило своей цели. Если реакция программы&nbsp; включает ме-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ню, необходимо выполнить команду&nbsp; UNLOCK&nbsp; перед&nbsp; его&nbsp; выводом,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; чтобы не держать блокировку.</p>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Tue, 23 Jul 2024 08:07:05 +0000</pubDate>
			<guid>http://itpmr.ru/viewtopic.php?pid=124966#p124966</guid>
		</item>
		<item>
			<title><![CDATA[Re: Использование FoxBase+ и Clipper в локальной сети]]></title>
			<link>http://itpmr.ru/viewtopic.php?pid=124965#p124965</link>
			<description><![CDATA[<p>Примечание 1. <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Попытка блокирования снимает любую существующую блокиров-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ку до начала своего выполнения. Таким образом любая неудачная<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; попытка блокирования или успешное выполнение функции&nbsp; RLOCK на<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; другой незаблокированной записи снимает предыдущую блокировку.</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Примечание 2. В любой момент времени&nbsp; может&nbsp; быть&nbsp; только<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; одна блокировка (файла или записи) в&nbsp; каждой&nbsp; рабочей&nbsp; области<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; для файла, открытого в режиме разделения.</p><br /><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3.4. Что делать после неудачных попыток блокирования</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;После неудачной попытки блокирования существуют следующие<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; возможные действия:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - сделать еще одну попытку;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - повторять попытки фиксированное время;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - повторять попытки до прерывания пользователем<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (например, клавишей Esc);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - повторять попытки до достижения блокирования.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Видимо, действия &quot;сделать еще одну попытку&quot; недостаточно,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; а действие &quot;повторять до достижения&nbsp; блокирования&quot; неприемлемо<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; из-за неопределенности момента его завершения.&nbsp; В&nbsp; большинстве<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; практических случаев оба этих действия не подходят. Для прида-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ния&nbsp; гибкости&nbsp; и&nbsp; практичности&nbsp; программному&nbsp; продукту&nbsp; &nbsp;нужно<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; компромиссное решение. Имеется несколько альтернатив для усло-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; вий завершения попыток блокирования: установить предел по вре-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; мени, дать возможность пользователю прервать&nbsp; попытки блокиро-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; вания или использовать комбинации этих двух вариантов.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Адаптированные по вышеприведенным рекомендациям процедуры<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; открытия и попыток блокирования не&nbsp; изменяют&nbsp; выполнения прог-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; раммы , но увеличивают активность программы при&nbsp; неудачной по-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; пытке блокирования.В этом - существенное различие&nbsp; между сете-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; вой и несетевой пользовательской программой.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;После неудачной попытки блокирования, как&nbsp; правило, нужно<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; сделать следующее:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;- сообщить пользователю о неудачной попытке блокирования;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;- обработать эту ситуацию.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Можно выдать сообщение на экран и сделать временную паузу<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (например, две секунды) для&nbsp; того,&nbsp; чтобы&nbsp; пользователь&nbsp; успел<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; прочитать сообщение. Другой вариант -&nbsp; сделать&nbsp; неограниченную<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; по времени паузу (например, с помощью вызова функции INKEY(0))<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; для того, чтобы пользователь прочитав сообщение мог продолжить<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; выполнение программы после нажатия любой клавиши.</p>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Tue, 23 Jul 2024 08:06:51 +0000</pubDate>
			<guid>http://itpmr.ru/viewtopic.php?pid=124965#p124965</guid>
		</item>
		<item>
			<title><![CDATA[Re: Использование FoxBase+ и Clipper в локальной сети]]></title>
			<link>http://itpmr.ru/viewtopic.php?pid=124964#p124964</link>
			<description><![CDATA[<p>3.3. Блокирование записи или файла</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Блокирование записи или файла осуществляется в результате<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; выполнения функций RLOCK и FLOCK соответственно.&nbsp; Обе&nbsp; функции<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; осуществляют попытку блокирования и возвращают&nbsp; результат этой<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; попытки - &quot;истина&quot; или &quot;ложь&quot; (.T. или .F.).<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;В случае успешного выполнения функции&nbsp; RLOCK&nbsp; блокируется<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; текущая запись, FLOCK - блокируется весь файл в&nbsp; текущей рабо-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; чей области. Пользователю теперь разрешено писать в&nbsp; файл. По-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; пытки других пользователей заблокировать ту же запись&nbsp; или тот<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; же файл обречены на неудачу. В этом случае нет влияния&nbsp; на по-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; пытки других пользователей читать файл.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Блокировка записи или файла сохраняется до тех&nbsp; пор, пока<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; она не будет снята посредством:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;- команды UNLOCK в рабочей области&nbsp; заблокированного фай-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ла;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;- команды UNLOCK ALL в любой рабочей области;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;- закрытия файла;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;- нормального завершения программы;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;- другой команды, требующей блокирования, или другой<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;функции блокирования в этом файле.</p>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Tue, 23 Jul 2024 08:06:41 +0000</pubDate>
			<guid>http://itpmr.ru/viewtopic.php?pid=124964#p124964</guid>
		</item>
		<item>
			<title><![CDATA[Re: Использование FoxBase+ и Clipper в локальной сети]]></title>
			<link>http://itpmr.ru/viewtopic.php?pid=124963#p124963</link>
			<description><![CDATA[<p>Следующий пример иллюстрирует эти правила.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SET EXCLUSIVE OFF&nbsp; &amp;&amp; Последующее применение USE - в режиме<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;&amp;&nbsp; разделения<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USE File<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IF NETERR()&nbsp; &nbsp; &nbsp; &nbsp; &amp;&amp; NETERR возвращает .T. при неудачной<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;&amp; попытке открытия файла командой USE<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;? &#039;Файл не доступен в режиме разделения &#039;+;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#039;Программа закончила работу &#039;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;QUIT<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ENDIF<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SET INDEX TO ...<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Обратите внимание на то, что файл может быть не доступен,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; так как другой пользователь мог открыть его в&nbsp; монопольном ре-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; жиме.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Всегда открывайте индексный файл отдельно&nbsp; от&nbsp; файла дан-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ныхкомандой SET INDEX. Неудачная попытка открытия файла данных<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; не прерывает выполнение программы. Неудачная&nbsp; попытка открытия<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; индексного файла в одной команде USE &lt;файл&gt;&nbsp; INDEX&nbsp; &lt;индексный<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; файл&gt; - прерывает программу.</p>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Tue, 23 Jul 2024 07:43:12 +0000</pubDate>
			<guid>http://itpmr.ru/viewtopic.php?pid=124963#p124963</guid>
		</item>
		<item>
			<title><![CDATA[Re: Использование FoxBase+ и Clipper в локальной сети]]></title>
			<link>http://itpmr.ru/viewtopic.php?pid=124962#p124962</link>
			<description><![CDATA[<p>Подводя итог вышесказанному, можно&nbsp; сформулировать&nbsp; такое<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; правило:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - блокирование требуется всегда, когда необходимо<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; внести изменения в базу данных;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - блокирование не обязательно в других случаях.</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Команды,&nbsp; которые&nbsp; осуществляют&nbsp; изменение&nbsp; базы&nbsp; данных:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; REPLACE, DELETE для нескольких записей, RECALL, @ ... get &lt;имя<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; поля&gt; в режиме разделения (SET EXCLUSIVE OFF)&nbsp; требуют предва-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; рительного блокирования записи или файла. При&nbsp; отсутствии бло-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; кирования выполнение этих команд в Foxbase+ и&nbsp; Clipper вызовет<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; сообщение об ошибке типа &quot;System error not locked&quot;.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Файл должен быть заблокирован или&nbsp; открыт&nbsp; в&nbsp; монопольном<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; режиме (SET EXCLUSIVE ON) при обновлении записей в базе данных<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; такими командами как, APPEND FROM, DELETE, UPDATE ON,&nbsp; для то-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; го, чтобы другой пользователь не записал что-либо в&nbsp; этот файл<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; во время выполнения вашей программы.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Необходимо также блокировать файл при выполнении процесса<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; чтения информации&nbsp; из&nbsp; каждой&nbsp; записи&nbsp; такими&nbsp; командами,&nbsp; как<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; COUNT, SUM, TOTAL, AVERAGE, даже если&nbsp; формально&nbsp; блокирование<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; не требуется. Эти команды не обновляют файл, однако блокирова-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ние нужно для того, чтобы быть уверенным в неизменности данных<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; во время вычислений.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Некоторые команды (PACK, REINDEX,&nbsp; ZAP)&nbsp; не&nbsp; могут выпол-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; няться в режиме&nbsp; разделения,&nbsp; файл&nbsp; должен&nbsp; быть&nbsp; открыт моно-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; польно. При попытке выполнить эти команды в&nbsp; режиме разделения<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Foxbase+ и Clipper выдадут сообщение об ошибке.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Не требуется блокирование при выполнении&nbsp; команд, которые<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; только читают из файла, таких, как LIST,&nbsp; SEEK,&nbsp; REPORT&nbsp; FORM,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; GOTO. Заметим, что Foxbase+ и Clipper&nbsp; позволяют&nbsp; добавить за-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; пись командой APPEND BLANK в файл, открытый в&nbsp; режиме разделе-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ния.</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3.2. Как открывать файлы в режиме разделения</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Для этого имеется несколько простых правил:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - перед использованием команды USE нужно установить<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; режим&nbsp; &nbsp;разделения с помощью команды SET EXCLUSIVE&nbsp; OFF;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - сразу после команды USE нужно всегда проверять<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; функцией NETERR,&nbsp; &nbsp;что файл успешно открыт;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - никогда не включать фразу INDEX в команду USE,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; вместо&nbsp; &nbsp;этого лучше открывать индексные файлы<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; команды SET INDEX после проверки успешного<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; открытия функцией NETERR.</p>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Tue, 23 Jul 2024 07:43:01 +0000</pubDate>
			<guid>http://itpmr.ru/viewtopic.php?pid=124962#p124962</guid>
		</item>
		<item>
			<title><![CDATA[Re: Использование FoxBase+ и Clipper в локальной сети]]></title>
			<link>http://itpmr.ru/viewtopic.php?pid=124961#p124961</link>
			<description><![CDATA[<p>Таблица 1. Причины возвращения функцией NETERR значения<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;истина&quot;.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-----------------------------------------------------------<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Команда&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Причина невыполнения<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-----------------------------------------------------------<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USE&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; USE ... EXCLUSIVE другим процессом<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USE EXCLUSIVE&nbsp; &nbsp; &nbsp; &nbsp; USE или USE&nbsp; EXCLUSIVE другим процессом<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;APPEND BLANK&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FLOCK() другим процессом или попытка<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; выполнить две команды APPEND BLANK<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; одновременно.</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Примечание. В Foxbase+ нет функции NETERR(). Вместо нее<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;используйте команду ON ERROR для назначения процедуры<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;обработки ошибок, код которых дает функция ERROR(). Коды<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ошибок, связанных с работой в сети, приведены в руководстве<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;по Foxbase+.</p><br /><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3. Программирование для локальной сети</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;При разработке&nbsp; сетевых&nbsp; приложений&nbsp; необходимо&nbsp; понимать<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; следующие моменты:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - когда требуется блокирование записи или файла;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - как открывать файлы в режиме разделения;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - как блокировать запись или файл;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - что делать после неудачных попыток бокирования;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - как влияет сетевая среда на файлы и команды.</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Примечание.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Если ваша программа не требует доступа к&nbsp; базе&nbsp; данных&nbsp; в<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; режиме разделения, а компьютер включен в&nbsp; локальную&nbsp; сеть,&nbsp; то<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; информация, представленная ниже, вам не потребуется.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Foxbase+ и&nbsp; Clipper&nbsp; по&nbsp; умолчанию&nbsp; предполагают однопользова-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; тельский&nbsp; (монопольный)&nbsp; режим&nbsp; доступа&nbsp; к&nbsp; базе&nbsp; данных&nbsp; (SET<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EXCLUSIVE ON), при котором блокирование вообще не требуется.</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3.1. Когда требуется блокирование записи или файла</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Сначала вы должны определить, исходя из&nbsp; требований пост-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; авленного задания, какие файлы нужно&nbsp; будет&nbsp; использовать сов-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; местно несколькими&nbsp; пользователями.&nbsp; Как&nbsp; правило,&nbsp; это&nbsp; общие<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; справочники.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Затем определите те задачи и период времени,&nbsp; когда будет<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; необходимо иметь монопольный доступ к таким файлам.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Как правило, это операции реорганизации базы данных в мо-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; менты времени, связанные с&nbsp; технологическим&nbsp; процессом. Напри-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; мер, конец рабочего дня, отчетного месяца, квартала, года. При<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; монопольном открытии файла он не доступен другим пользователям<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ни для чтения ни для записи, поэтому нужно осторожно использо-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; вать этот режим.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;И, наконец, определите те задачи, которые&nbsp; требуют внесе-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ния изменений в некоторые записи файла или требуют,&nbsp; чтобы ка-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; кие-то записи в данный момент не изменялись&nbsp; другими пользова-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; телями, например,при суммировании итога. <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;В этот момент времени для обеспечения&nbsp; целостности данных<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; необходимо запре*тить другим пользователям изменение&nbsp; каких бы<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; то ни было полей этой записи или файла. Для этого и служит ме-<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ханизм блокирования записи либо всего файла,&nbsp; поддерживаемый в<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Foxbase+ и Clipper. Заблокированная запись или&nbsp; файл&nbsp; доступны<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; другим пользователям для чтения, но не доступны для записи.</p>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Tue, 23 Jul 2024 07:42:33 +0000</pubDate>
			<guid>http://itpmr.ru/viewtopic.php?pid=124961#p124961</guid>
		</item>
		<item>
			<title><![CDATA[Re: Использование FoxBase+ и Clipper в локальной сети]]></title>
			<link>http://itpmr.ru/viewtopic.php?pid=124960#p124960</link>
			<description><![CDATA[<p>2.2. Сетевые функции</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FLOCK()<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Пытается логически блокировать файл открытый в<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; текущей рабочей области и возвращает значение<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;истина&quot; (.T.)&nbsp; &nbsp; в случае успешной попытки.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Независимо от результата своего выполнения функция<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tsFLOCK всегда снимает предыдущую блокировку записи<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; или файла в текущей рабочей области.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RLOCK()|LOCK()<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Пытается логически блокировать текущую запись и<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; возвращает значение &quot;истина&quot; (.T.), если попытка<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; была успешной. Независимо от результата своего<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; выполнения функция RLOCK (или LOCK) всегда снимает<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; предыдущую блокировку записи или файла в текущей<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; рабочей области.</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Примечание.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Различные&nbsp; dBASE-продукты&nbsp; &nbsp;могут&nbsp; &nbsp;иметь&nbsp; &nbsp;несовместимые<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; функции блокирования, поэтому рекомендуется&nbsp; использовать один<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; и тот же продукт при работе с файлами в режиме разделения.</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NETERR()<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Возвращает значение &quot;истина&quot; (.T.) , если<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; предшествовавшие ей команды USE, USE ... EXCLUSIVE<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; или APPEND BLANK не выполнились в сети. Это может<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; произойти по следующим причинам:</p>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Tue, 23 Jul 2024 07:42:12 +0000</pubDate>
			<guid>http://itpmr.ru/viewtopic.php?pid=124960#p124960</guid>
		</item>
		<item>
			<title><![CDATA[Re: Использование FoxBase+ и Clipper в локальной сети]]></title>
			<link>http://itpmr.ru/viewtopic.php?pid=124959#p124959</link>
			<description><![CDATA[<p>2.1. Сетевые команды</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SET EXCLUSIVE ON|OFF<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Устанавливает режим открытия по умолчанию для файлов<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; данных и индексных файлов: ON - монопольный, OFF -<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; разделяемый.<br />&nbsp; &nbsp; &nbsp;</p><div class="codebox"><pre><code>      UNLOCK [ALL]</code></pre></div><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Снимает блокировку файла или записи в текущей рабочей<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; области,</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; если указано ALL - то во всех областях.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </p><div class="codebox"><pre><code> USE [&lt;имя файла&gt;] [INDEX &lt;список индексных файлов&gt;]
           [EXCLUSIVE] [ALIAS &lt;имя псевдонима&gt;]</code></pre></div><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Открывает базу данных и связанные с ней индексные<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; файлы: в режиме установленном по умолчанию, если<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; указано EXCLUSIVE - то в монопольном режиме.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SET PRINTER TO &lt;назначение&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Определяет вывод на сетевой принтер.</p>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Tue, 23 Jul 2024 07:41:33 +0000</pubDate>
			<guid>http://itpmr.ru/viewtopic.php?pid=124959#p124959</guid>
		</item>
		<item>
			<title><![CDATA[Re: Использование FoxBase+ и Clipper в локальной сети]]></title>
			<link>http://itpmr.ru/viewtopic.php?pid=124958#p124958</link>
			<description><![CDATA[<p>2. СРЕДСТВА ДЛЯ РАБОТЫ В ЛОКАЛЬНОЙ СЕТИ</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Сетевые средства FoxBase+ и Clipper&nbsp; представлены набором<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; сетевых команд и сетевых функций.&nbsp; Они&nbsp; обеспечивают&nbsp; следущие<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; возможности:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - открывать файлы в монопольном или разделяемом<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; режиме;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - логически блокировать файл с целью предотвращения<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; обновления одного и того же файла двумя или большим<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; числом пользователей одновременно;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - логически блокировать запись с целью предотвращения<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; обновления одной и той же записи двумя или большим<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; числом пользователей одновременно;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - переназначить вывод локального принтера на сетевой&nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;принтер или в сетевой файл;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - снять блокировку файла или записи в текущей<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; области;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - снять блокировки во всех областях.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Заметим, что в текущей области может&nbsp; быть&nbsp; заблокирована<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; только одна запись, либо весь файл.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;При описании&nbsp; синтаксиса&nbsp; команд&nbsp; используются&nbsp; следующие<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; соглашения:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p><div class="codebox"><pre><code>       [ ] обозначает, что содержимое внутри квадратных
                      скобок может быть опущено;
                  &lt; &gt; обозначает, что нужно заменить содержимое в
                      угловых скобках   на конкретное значение;
                  |   обозначает альтернативу между тем, что стоит
                      слева от знака, и тем, что стоит справа от него;
                  ... обозначает, что опущена часть выражения.</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Tue, 23 Jul 2024 07:40:51 +0000</pubDate>
			<guid>http://itpmr.ru/viewtopic.php?pid=124958#p124958</guid>
		</item>
		<item>
			<title><![CDATA[Re: Использование FoxBase+ и Clipper в локальной сети]]></title>
			<link>http://itpmr.ru/viewtopic.php?pid=15517#p15517</link>
			<description><![CDATA[<p>1987 год, говорите... )))))</p>]]></description>
			<author><![CDATA[null@example.com (tvolf)]]></author>
			<pubDate>Thu, 08 Dec 2011 11:38:58 +0000</pubDate>
			<guid>http://itpmr.ru/viewtopic.php?pid=15517#p15517</guid>
		</item>
	</channel>
</rss>
