SolidSnakeRU
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: Вообще, есть большое желание забыть про INI файлы и настройки тоже хранить в JSON. Если использовать код из коробки, то не хватает: 1. Нормального сохранения без ошибок (ну допустим это можно исправить). 2. Нормального форматирования - отступы, переносы и т.д. 3. Возможность задать исключения, чтобы некоторые свойства объектов не сохранялись и не загружались. | Оказалось есть исключения, чтобы при формировании json исключить часть полей надо скрыть RTTI информацию, например так: Код: {$RTTI EXPLICIT FIELDS([vcPrivate, vcPublic])} TRestRolesUsers = class protected FMultiReadExclusiveWriteSynchronizer: TMultiReadExclusiveWriteSynchronizer; private FRoles: TRestRoleArray; function FRolesRead(): TRestRoleArray; public constructor Create(); destructor Destroy(); override; property Roles: TRestRoleArray read FRolesRead; procedure SetRolesLength(l: integer); end; | В результате, RTTI будет видеть только то, что лежит в private или public. Соответственно при сериализации в JSON нежелательные данные не запишутся. Добавлено: Столкнулся с проблемой авторизации, когда в логине или пароле русские символы. Раскопал до Datasnap.DSHTTPWebBroker. Это жесть, на этот модуль смотришь и плакать хочется. Он устарел безвозвратно, но в шапке красуется Copyright(c) 1995-2014 Абракадабра технолоджис. Везде AnsiString без поддержки utf8. Как смешно, они используют руками написанную функцию TRIM без поддержки string типа, хотя в System.AnsiStrings есть готовая с поддержкой String и AnsiString. Сами смотрите, ей богу, качество кода на уровне опен сорс библиотеки Короче они болты на датаснап кладут. | Всего записей: 248 | Зарегистр. 27-08-2008 | Отправлено: 19:40 12-12-2014 | Исправлено: SolidSnakeRU, 23:55 12-12-2014 |
|