OberonCore https://forum.oberoncore.ru/ |
|
Stores https://forum.oberoncore.ru/viewtopic.php?f=23&t=6865 |
Страница 1 из 1 |
Автор: | Иван Денисов [ Пятница, 16 Сентябрь, 2022 08:52 ] |
Заголовок сообщения: | Stores |
Особо не вникал в Stores.Store, а тут решил проверить, восстановит ли модуль ссылку, как это обещано в документации. Написал вот такой тестовый пример. Но ссылка не восстанавливается. Вопрос к знатокам фреймворка. Что я делаю не так? Код: MODULE TestStores;
IMPORT Files, Stores, Log := StdLog; TYPE Type1 = POINTER TO RECORD (Stores.Store) a: INTEGER; parent: Type2; END; Type2 = POINTER TO RECORD (Stores.Store) b: Type1; END; VAR object: Type2; PROCEDURE (s: Type1) Externalize (VAR wr: Stores.Writer); BEGIN wr.WriteInt(s.a) END Externalize; PROCEDURE (s: Type1) Internalize (VAR rd: Stores.Reader); BEGIN rd.ReadInt(s.a) END Internalize; PROCEDURE (s: Type2) Externalize (VAR wr: Stores.Writer); BEGIN wr.WriteStore(s.b) END Externalize; PROCEDURE (s: Type2) Internalize (VAR rd: Stores.Reader); VAR tmp: Stores.Store; BEGIN rd.ReadStore(tmp); WITH tmp: Type1 DO s.b := tmp END; END Internalize; PROCEDURE Init*; VAR t1: Type1; t2: Type2; BEGIN NEW(t1); t1.a := 1024; NEW(t2); t2.b := t1; t1.parent := t2; Stores.InitDomain(t2); Stores.Join(t1, t2); object := t2; END Init; PROCEDURE Save*; VAR file: Files.File; wr: Stores.Writer; res_:INTEGER; BEGIN file:=Files.dir.New(Files.dir.This(""), Files.dontAsk); wr.ConnectTo(file); wr.WriteStore(object); file.Register("test.bin", Files.docType, Files.dontAsk, res_); END Save; PROCEDURE Load*; VAR file: Files.File; loc:Files.Locator; rd: Stores.Reader; res_:INTEGER; s: Stores.Store; BEGIN file := Files.dir.Old(Files.dir.This(""), "test.bin", Files.dontAsk); rd.ConnectTo(file); rd.ReadStore(s); WITH s: Type2 DO object := s; Log.Int(object.b.parent.b.a); Log.Ln; ELSE END; END Load; END TestStores. TestStores.Init TestStores.Save TestStores.Load |
Автор: | luowy [ Вторник, 20 Сентябрь, 2022 12:03 ] |
Заголовок сообщения: | Re: Stores |
Missing Type1.parent field in Externalize and Internalize functions... |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |