Автор | Сообщение |
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 06.06.07 16:31. Заголовок: Object
Можно ли сохранить объект (напр. фонт) во внешнем файле ?
|
|
|
Ответов - 7
[только новые]
|
|
|
| постоянный участник
|
Пост N: 318
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.06.07 17:35. Заголовок: Re:
Обект, если можно так сказать, на физическом уровне состоит из массива, в котором хранятся рабочие данные объекта, и из методов. Методы для класса объекта "заводятся" в момент первого вызова, условно говоря, конструктора для объектов данного класса. Следовательно, чтобы сохранить объект, нужно сохранить соответствующий массив. А при восстановлении объекта необходимо, чтобы методы объекта уже были созданы. Для этого достаточно создать любой объект данного класса, а затем переписать массив этого объекта сохраненным массивом. Так что проблема, по существу, сводится к проблеме сохранения массивов. Это относится именно к объектам Clipper. Что касается объектов FiveWin, то я не знаю точную их "физику", но скорей всего описанного достаточно.
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 06.06.07 18:47. Заголовок: Re:
не знаю точную их "физику", я могу уверенно заявить, что пыль это грязь лишенная воды..
|
|
|
|
| постоянный участник
|
Пост N: 319
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.06.07 19:55. Заголовок: Re:
Короче говоря, на мой взгляд достаточно сохранить массив. Если вы имеете код oMyObject := NewObject() то oMyObject - это массив. Единственное, что отличает его от массива, - это сслыка в описатели типа массива на номер класса. Поэтому если у вас есть средство сохранения массивов, то с помощью него вы можете сохранять объекты. Например, oOldObject := NewObject() ..... SaveArray( oOldObject ) .... oOldObject = RestArray() Только важная деталь: востанавливать массив нужно поэлементно.
|
|
|
|
| постоянный участник
|
Пост N: 157
Зарегистрирован: 09.10.06
|
|
Отправлено: 06.06.07 22:03. Заголовок: Re:
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. *
|
|
|
|
| |
Пост N: 709
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.06.07 22:13. Заголовок: Re:
lSaveObject( <oVar>, <cFile> [,<nOpenMode>] )
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 06.06.07 23:19. Заголовок: Re:
Большое спасибо !
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 07.06.07 09:10. Заголовок: Re:
fil пишет: Дима тебе уже ответил, есть еще вариант типа - oBlock = TBlock():New( "{ | cMsg | MsgInfo( cMsg ) }" ) oBlock:Eval( "CodeBlocks storables on disk!" ) Но кроме фонта тебе наверное потребуется еще что-то сохранять? :)) Удобно использовать INI файлы. Глянь в примерчиках, там достаточно хорошо все видно
|
|
|
|