Назначение
Регистрация COM-сервера в реестре Windows
Создание объекта VFP.memlib
Объект Stream
Write(str)
LenStream()
Asc()
Read(count)
ReadLine()
ReadToEnd()
CloseStream()
Объект Array
NewArray(n)
LenArray()
PutArray(i, val)
GetArray(i)
CloseArray()
Объект Dictionary
LenDic()
PutDic(strKey, val)
GetDic(strKey)
DelDic(strKey)
СloseDic()
СloseAll()
История версий
Библиотека memlib.net.dll реализует COM-сервер для VFP9 или VFPA, который в принципе может использоваться и в любых других языках, поддерживающих COM технологию обмена данными.
Microsoft VFP имеет ряд ограничений, связанных с использованием ОП. Теоретически в VFP cуществуют способы использовать ОП до 2 Гб, но при этом возникают очень большие утечки памяти, приводящие к блокировке работы VFP.
При создании COM-объекта VFP.memlib, выделяемая ОП не занимает место в области VFP. Эта память выделяется на объекте VFP.memlib.
В memlib.net.dll первой версии реализованы:
- объект Stream, который по используемым методам напоминает работу с файлом, находящимся в ОП;
- объект Array, представляющий одномерный массив с числовым индексом;
- объект Dictionary, представляющий одномерный массив с текстовым индексом (словарь).
В будущем возможно будут добавлены и другие вспомогательные элементы, если в этом будет нуждаться сообщество программистов на VFP.
Чтобы объект VFP.memlib был доступен в разрабатываемых программах, его нужно зарегистрировать в ОС с помощью утилиты regasm.exe. Например:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe D:\VFP\VFPA\memlib.net.dll /codebase
Предварительно поместите файл memlib.net.dll в удобную для вас папку, например, в папку, где находятся другие библиотеки Microsoft VFP.
Для удаления регистрации из реестра Windows используйте ключ /unregister. Например:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe D:\VFP\VFPA\memlib.net.dll /unregister
Для выполнения вышеуказанных команд требуются права администратора.
Текст кода на VFP:
oMem = CreateObject('VFP.memlib')
Объект Stream имеет ниже следующие методы.
Метод записывает указанную параметром строку в объект Stream.
oMem.write("Привет, Мир!"+chr(10))
Указатель записи всегда находится в конце записанного потока. При первом же запросе любой операции на чтение, запись в этот же поток становится невозможной. В этом случае следующая операция записи откроет новый поток.
Метод возвращает 32-х разрядное положительное число, содержащее длину потока или ноль, если запись в объект еще не производилась.
len = oMem.lenStream()
Метод читает код первого за указателем чтения символа, но не перемещает указаль.
kod = oMem.Asc()
Если поток пустой или достигнут конец потока, то метод возвращает значение -1.
Метод читает заданное параметром количество символов из Stream и возвращает прочитанную строку. Указатель чтения переносится за последний прочитанный символ.
str = oMem.read(10)
Если начальная позиция указателя находилась в коце потока, то вместо строки возвращается значение NULL.
Метод читает из Stream строку до символа перевода строки. Символы CR и LF не включаются в возвращаемое методом значение. Указатель чтения переносится за последний прочитанный символ включая CR и LF.
str = oMem.readLine()
Если начальная позиция указателя находилась в коце потока, то вместо строки возвращается значение NULL.
Метод читает из Stream строку до конца потока. Указатель чтения переносится в конец.
str = oMem.readToEnd()
Если начальная позиция указателя находилась в коце потока, то вместо строки возвращается значение NULL.
Метод удаляет объект Stream из памяти. Память освобождается. Используйте этот метод, если вам больше не нужен объект Stream. Объект Stream создается при первом использовании метода Write(str).
oMem.closeStream()
Объект Array имеет ниже следующие методы.
Метод создает массив размером, передаваемым числовым параметром. В случае успешного создания массива метод возвращает число созданных элементов массива n. В противном случае возвращается ноль.
Метод возвращает длинну массива.
Метод присваивает элементу массива под номером первого числового параметра значение произвольного типа, переданное вторым параметром.
Метод возвращает значение элемента массива с номером переданным числовым параметром.
Метод уничтожает массив.
Объект Dictionary имеет ниже следующие методы.
Метод возвращает число пар ключ-значение.
Метод присваивает элементу словаря со строковым ключем, заданным первым параметром, значение произвольного типа, переданное вторым параметром.
Метод возвращает значение элемента словаря со строковым ключем, заданным параметром.
Метод удаляет элемент словаря ключ-значение, заданное строковым параметром, содержащим значение ключа.
Метод уничтожает словарь и освобождает память.
Метод закрывает все объекты COM-сервера и максимально освобождает всю память.
0.0.0.0. 08.03.2025. Опубликована первая рабочая версия с объектами Stream, Array и Dictionary.
0.0.1.0. 09.03.2025. Добавлен метод CloseAll().
0.0.2.0. 09.03.2025. Добавлена автоматическая очистка потока записи после формирования потока чтения.