Форум » FiveWin » Object » Ответить

Object

fil: Можно ли сохранить объект (напр. фонт) во внешнем файле ?

Ответов - 7

Григорьев Владимир: Обект, если можно так сказать, на физическом уровне состоит из массива, в котором хранятся рабочие данные объекта, и из методов. Методы для класса объекта "заводятся" в момент первого вызова, условно говоря, конструктора для объектов данного класса. Следовательно, чтобы сохранить объект, нужно сохранить соответствующий массив. А при восстановлении объекта необходимо, чтобы методы объекта уже были созданы. Для этого достаточно создать любой объект данного класса, а затем переписать массив этого объекта сохраненным массивом. Так что проблема, по существу, сводится к проблеме сохранения массивов. Это относится именно к объектам Clipper. Что касается объектов FiveWin, то я не знаю точную их "физику", но скорей всего описанного достаточно.

fil: не знаю точную их "физику", я могу уверенно заявить, что пыль это грязь лишенная воды..

Григорьев Владимир: Короче говоря, на мой взгляд достаточно сохранить массив. Если вы имеете код oMyObject := NewObject() то oMyObject - это массив. Единственное, что отличает его от массива, - это сслыка в описатели типа массива на номер класса. Поэтому если у вас есть средство сохранения массивов, то с помощью него вы можете сохранять объекты. Например, oOldObject := NewObject() ..... SaveArray( oOldObject ) .... oOldObject = RestArray() Только важная деталь: востанавливать массив нужно поэлементно.


Петр: fil пишет: не знаю точную их "физику", я могу уверенно заявить, что пыль это грязь лишенная воды.. довольно спорное утверждение Если используешь xHarbour посмотри tests\Serialize.prg * Serialize.prg * $Id: serialize.prg,v 1.11 2006/01/17 15:13:20 toninhofwi Exp $ * Test for the hb_serial family function * * This serialization functions allow to store consistently any * basic datatype (including nested array) into a linear string, * a file or any kind of stream. The functions are designed to be * pretty fast and efficent, so that passing back and forth * serialized data is not too burdensome. *

Dima: lSaveObject( <oVar>, <cFile> [,<nOpenMode>] )

fil: Большое спасибо !

ММК: fil пишет: (напр. фонт Дима тебе уже ответил, есть еще вариант типа - oBlock = TBlock():New( "{ | cMsg | MsgInfo( cMsg ) }" ) oBlock:Eval( "CodeBlocks storables on disk!" ) Но кроме фонта тебе наверное потребуется еще что-то сохранять? :)) Удобно использовать INI файлы. Глянь в примерчиках, там достаточно хорошо все видно



полная версия страницы