Commit Graph

450 Commits

Author SHA1 Message Date
Daniele Teti
3174504b90 Fix for berlin
https://www.facebook.com/photo.php?fbid=10217757569041117&set=gm.2029342450482217&type=3&theater&ifg=1
2019-01-16 14:24:13 +01:00
Daniele Teti
98197beb01 Added TMVCActiveRecord.Count 2019-01-13 19:18:57 +01:00
Daniele Teti
f09ae31a91 Added PostgreSQL SQLGenerator 2019-01-13 18:57:15 +01:00
joao.duarte
8edd6241e6 Bug fix when deserialize object with custom type and JSON with null value 2019-01-10 14:30:40 -02:00
Daniele Teti
8ed859b7d1 New build system based on pyinvoke 2019-01-08 12:48:53 +01:00
Daniele Teti
f64eebff6a Improvements to the JSON-RPC layer, added MAX_REQUEST_SIZE check and config key. UPdated IDE Expert to add the new config key in the generated code. 2018-12-17 00:40:27 +01:00
Daniele Teti
2ec82ee373 JSON-RPC requests can call only functions, while JSON-RPC notifications can call only procedures. 2018-12-12 22:30:13 +01:00
Daniele Teti
f6c4382291 JSON-RPC Refactoring 2018-12-12 14:48:35 +01:00
Daniele Teti
835fc651da changed serialization jsonrpc result 2018-12-12 11:00:52 +01:00
Daniele Teti
2ea6ceb1ae Merge branch 'master' of https://github.com/danieleteti/delphimvcframework 2018-12-09 23:05:11 +01:00
Daniele Teti
c5800b3354 Added dmvcframework package
Features freeze for 3.1 (lithium)
Working on the planned issues for this milestone https://github.com/danieleteti/delphimvcframework/milestones/3.1%20(helium)
2018-12-09 23:05:01 +01:00
joao.duarte
d0197df7cf Added RQL Operator Contains 2018-11-27 16:28:21 -02:00
joao.duarte
b4c4a64c14 Added RQL Parser for PostgreSQL 2018-11-27 16:27:36 -02:00
Daniele Teti
d4a23e52fb Removed unit MVCFramework.TypesAliases.pas
Updated JsonDataObjects.pas
2018-11-24 16:57:04 +01:00
Daniele Teti
05560fa4c1 Compatibility with Delphi 10.3 RIO 2018-11-21 22:42:19 +01:00
Daniele Teti
29f03e819e Added ability to automatically expose PODO through JSON-RPC interface
FIX https://github.com/danieleteti/delphimvcframework/issues/160
FIX https://www.facebook.com/groups/delphimvcframework/?multi_permalinks=1951719131577883&comment_id=1952551261494670&notif_id=1542833848942998&notif_t=feedback_reaction_generic
2018-11-21 22:14:50 +01:00
Daniele Teti
9825782cb0
Merge pull request #158 from henriquewerlang/master
URL property
2018-11-20 09:40:52 +01:00
Daniele Teti
505710f9cd Small fixes to custom stream json serializer 2018-11-09 18:12:29 +01:00
Daniele Teti
07255a8b23 Refactored MVCActiveRecord framework, added *.SQLGenerators.* units 2018-11-02 21:43:18 +01:00
Daniele Teti
7ca4ccbe59 Completed refactoring about IMVCTypeSerializer 2018-10-31 01:07:25 +01:00
Daniele Teti
132e169542 Changes to the custom type serializer interface 2018-10-30 13:53:18 +01:00
Henrique Gottardi Werlang
8fd6004579 Criado uma propriedade para o usuário conseguir colocar a URL completa, e não em pedaços apenas. 2018-10-24 18:07:31 -03:00
Daniele Teti
70c1e55e94 New MVCActiveRecord showcase samples
New Unit Tests for Compression in TRESTClient
Updated RQL Parser and compilers
New EntitiesGenerator (alpha)
Improved unittests
Updated landing page
2018-10-23 16:18:50 +02:00
Daniele Teti
96bbb83209 Improved support for MySQL in MVCActiveRecord
Better multi thread handling in MVCActiveRecord
2018-10-14 18:24:07 +02:00
Daniele Teti
9dd04f026f Added MySQL/MariaDB support for MVCActiveRecord and RQL compiler 2018-09-28 18:33:54 +02:00
Daniele Teti
4672b81c7b RQL support added to MVCActiveRecord 2018-09-28 13:02:48 +02:00
Daniele Teti
98499a3b97 Added RQL2SQL parser 2018-09-27 12:27:13 +02:00
Daniele Teti
e4cd5894ae MVCActiveRecord Framework, Sample for MVCActiveRecord Framework 2018-09-25 15:38:52 +02:00
geoffsmith82
b28c6927a6 Re-arranged file to minimise the use of $IFDEFS 2018-08-25 17:44:04 +10:00
geoffsmith82
02ac9cdd31 Added $IFDEF around System.Hash 2018-08-25 17:06:50 +10:00
geoffsmith82
48ced29d73 Added Wrapper classes to enable using built-in Delphi HMAC Classes 2018-08-25 17:03:43 +10:00
Daniele Teti
bb454af16a - Speed improvement! Removed enhanced visibility for action methods. Now only public and published methods can be used as actions.
- `TMVCController.Create` is `virtual`! Now on your base controllers can be even more powerful!
- FIX for [issue #143](https://github.com/danieleteti/delphimvcframework/issues/143)
2018-08-08 17:12:12 +02:00
Daniele Teti
7998811c74 - 404 and 500 status code returns always a text/plain content-type
- Refactored ISAPI sample
2018-08-08 15:43:37 +02:00
Daniele Teti
00d5a9699a - Config[TMVCConfigKey.FallbackResource] is served only if request path is empty or /.
- Now the JSON-RPC executor provides methods to handle HTTP headers for JSON-RPC requests and notifications.
- FIX for [issue #141](https://github.com/danieleteti/delphimvcframework/issues/141)
- `TDataSetHolder` is a new render that is able to render a dataset with a set of custom metadata (eg `count`,`page` etc). Check [issue #137](https://github.com/danieleteti/delphimvcframework/issues/137)
2018-08-05 20:31:56 +02:00
Daniele Teti
c305aec5fc https://github.com/danieleteti/delphimvcframework/issues/137 2018-07-16 12:34:10 +02:00
Daniele Teti
a4381ec719 Changed the behavior of the JWT LiveValidityWindows
Added milligram.css to some samples
2018-05-17 21:57:03 +02:00
Daniele Teti
34bc5e0638 Added JSON-RPC Notification Support
Added IMVCJSONRPCExecutor for a simpler use of JSON-RPC servers
2018-05-16 19:46:35 +02:00
Daniele Teti
f09f12038f Added submodules + fix from Andrea Ciotti 2018-03-14 12:30:41 +01:00
OneideLuizSchneider
f0b6c9a51d Add ProxyUsername and ProxyPassword 2018-03-10 19:51:11 -03:00
Daniele Teti
674c9feac9 Preparing 3.0 hydrogen 2018-02-20 23:33:50 +01:00
Daniele Teti
4daba2ea67 Some refactoring preparing RC13 2018-02-20 22:36:36 +01:00
Daniele Teti
b49bc82d8b 3.0 RC12 hydrogen 2018-01-29 17:30:53 +01:00
Daniele Teti
6d5c85d427 Implemented https://github.com/danieleteti/delphimvcframework/issues/114 2017-12-12 20:04:01 +01:00
Daniele Teti
2a5892da6b Implemented https://github.com/danieleteti/delphimvcframework/issues/115 2017-12-12 18:32:41 +01:00
Daniele Teti
ae3a3ec4e6 Added ViewData and ViewDataset. New Compression Sample. 2017-11-23 17:31:26 +01:00
Daniele Teti
233786ae82 https://github.com/danieleteti/delphimvcframework/issues/107 2017-11-16 22:49:38 +01:00
Daniele Teti
a8d57bb78b RC10 2017-10-16 22:57:49 +02:00
Daniele Teti
84ccc385c1 Improved JSON-RPC support
Improved JSON-RPC sample
2017-10-10 12:20:11 +02:00
Daniele Teti
ac654658f1 Improved JSON RPC 2.0 Client Sample 2017-10-09 16:17:34 +02:00
Daniele Teti
df0479d251 Server Sent Event 2 Sample 2017-10-09 10:41:49 +02:00
Daniele Teti
417ba8850d JSON-RPC Support completed
Added JSON-RPC sample
Added TDataSet.LoadFromTValue
2017-09-28 00:15:35 +02:00
Daniele Teti
ee4f1fc11d Refactored implementation of JSON-RPC 2.0 2017-09-26 01:02:27 +02:00
Daniele Teti
6321021430 Initial commit for JSON-RPC 2.0 2017-09-24 19:41:23 +02:00
Daniele Teti
25df8e9035 Fixed a rare bug on TEncoding and BodyAs<T>
Small JWT code improvements
2017-09-23 15:03:55 +02:00
Daniele Teti
4942c3253b JWT Optimization 2017-09-22 09:34:33 +02:00
Daniele Teti
a2718115a0 Small FIX for Delphi XE6 2017-09-21 23:11:50 +02:00
Daniele Teti
121b6359e1 - Removed ContentEncoding
FIX https://github.com/danieleteti/delphimvcframework/issues/105
2017-09-08 17:00:46 +02:00
Daniele Teti
fc72c8c49b Some minor fixes.
All protected serializers methods are now public so that is possible to use the low level serialization as was possibile with the old ObjectsMappers.
2017-09-07 00:11:25 +02:00
Daniele Teti
0b9b8a01bf FIX https://github.com/danieleteti/delphimvcframework/issues/83 2017-08-29 11:54:29 +02:00
Daniele Teti
59b6208356 https://github.com/danieleteti/delphimvcframework/issues/90 2017-07-17 11:48:26 +02:00
Daniele Teti
c876916400 RC8 FIXED 2017-07-17 10:42:13 +02:00
Daniele Teti
b3e0bbdf91 RC8
ADDED new action in the renders.dproj sample to show how to render a list with metadata using a wrapper object
CHANGE Optimized some rtti searches in the MVCFramework.Serializer.Abstract.pas
ADDED Cache support for internal use
CHANGED Restored JWT aLoginURL Paramater
ADDED LiveValidityWindowInSeconds for JWT (check the new sample)
2017-07-16 19:39:03 +02:00
Daniele Teti
dcc27fa794 ADDED restored LoginURL parameter in the JWT Middleware to customize the login end-point for JWT
ADDED better error checking in the TRESTClient
2017-07-14 18:23:00 +02:00
Daniele Teti
99d2951078 ADDED Support for enumeration also for JSONDataObject base serializer 2017-07-12 11:39:50 +02:00
Daniele Teti
8eb55556bc ADDED support for enumeration types in System.JSON based serializer 2017-07-12 01:02:59 +02:00
Daniele Teti
e52aacc391 ADDED LiveValidityWindowsInSeconds to the JWT classes. 2017-07-12 00:32:37 +02:00
Daniele Teti
f108357a92 FIX JWT (ported from 2.x branch (247f25e519)
SSE Sample updated
2017-07-05 00:19:38 +02:00
Daniele Teti
d6a04c89c2 3_0_0_hydrogen_RC6 2017-06-22 16:19:13 +02:00
Daniele Teti
d624535e85 ROUTER Optimization (50% faster) 2017-06-02 00:12:00 +02:00
Daniele Teti
7f9580a64e FIX now CORS + JWT middlewares works together 2017-05-31 08:49:03 +02:00
Daniele Teti
82ef760987 REMOVED ObjectsMappers.pas (finally!) 2017-05-25 16:58:07 +02:00
Daniele Teti
0d8e5f842a Added serversentevents sample
Handled AutoRefCount properties on ARC platform
2017-05-25 12:31:05 +02:00
Daniele Teti
7517df93c6 Merge pull request #80 from janidan/RolebasedAuthHandler
Attribute driven Rolebased Authorization Handler
2017-05-25 10:32:02 +02:00
Daniele Teti
a678421e06 Updated sample render
JsonDataObjects Serializer not produced compact json
2017-05-25 10:31:26 +02:00
janidan
cbd83751ee Added contribution message 2017-05-18 07:02:07 +02:00
Daniele Teti
ff1bc73949 ADDED an action which uses a custom serializer in sample "renders.dproj"
NEW the JsonDataObjects based serializer is the default serializer
FIX Rendering a nil value, will result in a "null" json (with the json serializers)
2017-05-18 00:38:19 +02:00
Daniele Teti
9d0ab1cf45 FIX TRESTAdapter
FIX JSONDataObjects deserialization when some json value is null
Improved IDEExpert (now can generate CRUD methods and there is a more explicative sample method name)
REMOVED delphistompclient from submodules. It will be used as external library not required by the core.
2017-05-17 22:35:07 +02:00
janidan
6d9e584926 Added functionality to allow the definition of OR connected Roles 2017-05-16 18:34:47 +02:00
janidan
256a629360 Added basic requires Authentication Attribute 2017-05-16 07:18:06 +02:00
janidan
ab519d45db Added feature to add dynamic roles that can resolve request parameters. e.g. [MVCRequiresRole('($branch):read:customers')] on a controller that supplies the GET /branch/EUROPE/customers resource. 2017-05-15 14:58:13 +02:00
janidan
ccb0ec37d8 Implemented initial version of a role based auth handler. See sample for usage. 2017-05-12 12:48:44 +02:00
Daniele Teti
2f7d2fe6b0 https://github.com/danieleteti/delphimvcframework/issues/79 2017-05-11 00:31:02 +02:00
Daniele Teti
7900898df8 FIXED some problems with built-in actions
Polished the IDE Expert
Preparing for RC3
2017-05-10 23:28:47 +02:00
Daniele Teti
1b20254836 3.0.0 hydrogen RC2 2017-05-09 23:14:20 +02:00
Daniele Teti
a866a37b27 3.0.0 hydrogen RC1 2017-05-09 13:38:03 +02:00
Daniele Teti
c237c4f049 3.0.0 hydrogen 2017-05-09 10:49:43 +02:00
Daniele Teti
96dc31e97b Added support for multiple parameter with the same name in the http standard submit. 2017-05-08 17:27:00 +02:00
Daniele Teti
4e366e5a53 Updated some demos
Added overload for Render(TDataSet)
Changed default serialization for Render(TDataSet)
2017-04-29 23:57:32 +02:00
Daniele Teti
980fcbfab8 FIX TRESTClient 2017-04-26 14:40:08 +02:00
Daniele Teti
52e15c4eca refactored some ObjectsMappers responsibilities
Client part of Unit test doesn't compile
2017-04-24 00:21:00 +02:00
Daniele Teti
4108b63405 FIXED a bug with ftAutoInc field type
Updated routingsample.dproj and renders.dproj
2017-04-20 23:49:37 +02:00
Daniele Teti
53ecae82db TestServer OK on linux. All unit tests are ok. 2017-04-14 16:43:53 +02:00
Daniele Teti
9f6675e349 Deprecation warnings for some attributes 2017-04-13 12:47:05 +02:00
Daniele Teti
aadceee80f Adapted to the single file for StompClient 2017-04-04 13:04:29 +02:00
Ezequiel Juliano Müller
503869635e Version 3 Settings in Sample Applications 2017-03-30 16:22:54 -03:00
Daniele Teti
fcec5e7370 FIX some demos 2017-03-30 17:00:12 +02:00
Ezequiel Juliano Müller
dde2c648b3 Correction in serializers with Currency fields. Removal of Hints. 2017-03-30 11:04:12 -03:00
Ezequiel Juliano Müller
28e37ea138 Merge branch 'pluggable_mapper' of https://github.com/danieleteti/delphimvcframework into pluggable_mapper 2017-03-30 10:56:30 -03:00
Ezequiel Juliano Müller
8764797c21 Add Deserialize DataSet (JsonDataObjects and SystemJSON) 2017-03-30 10:56:24 -03:00
Daniele Teti
1f128c443f FIXED DataSetSerialize now serializes Currency as Number
UPDATED ServerSideView engine (now there is no need to do json conversion twice)
CHECKED renders.dproj
2017-03-29 23:15:22 +02:00
Ezequiel Juliano Müller
74f921cc76 Adding DataSets Serialization 2017-03-29 09:49:35 -03:00
Ezequiel Juliano Müller
80e71b3f65 Add MVCFramework.Serializer.Abstract and MVCDataSetFieldAttribute and MVCSerializeAttribute 2017-03-28 09:52:13 -03:00
Ezequiel Juliano Müller
372bf9bc13 Refactoring, standardizing names and removing unnecessary dependencies. 2017-03-23 14:51:25 -03:00
Ezequiel Juliano Müller
611f297425 Changes in unit tests 2017-03-20 17:42:28 -03:00
Ezequiel Juliano Müller
ee9659762b Refactoring and Removing Dependencies 2017-03-20 15:08:01 -03:00
Ezequiel Juliano Müller
45595ee144 Refactoring MVCFramework.Commons 2017-03-20 09:55:46 -03:00
Ezequiel Juliano Müller
eae30a341f Merge branch 'pluggable_mapper' of https://github.com/danieleteti/delphimvcframework into pluggable_mapper 2017-03-13 16:53:12 -03:00
Ezequiel Juliano Müller
5f34de36b1 Refactoring and Removing Dependency with SystemJSON and Mapper 2017-03-13 16:52:11 -03:00
Daniele Teti
4a1336d7ca Removed JSONObjectToObjectFields 2017-03-07 21:42:19 +01:00
Ezequiel Juliano Müller
d0f3961bed Add initial sample with JsonDataObjects serializer 2017-03-02 15:29:43 -03:00
Desenvolvimento
1d750b90e6 Refactoring MVCFramework.DuckTyping. Remove global variables. 2017-03-02 13:39:41 -03:00
Desenvolvimento
97d3c552ca Add TMVCAbstractSerializer 2017-03-02 08:57:40 -03:00
Desenvolvimento
6a27680a0a Merge branch 'pluggable_mapper' of https://github.com/danieleteti/delphimvcframework into pluggable_mapper
# Conflicts:
#	sources/MVCFramework.Serializer.Commons.pas
2017-03-01 17:43:16 -03:00
Desenvolvimento
88b8e7da3c Refactoring the System JSON Serializer. Adding the serializer to JsonDataObjects. Problems with some unit tests. 2017-03-01 17:40:57 -03:00
Daniele Teti
3580d5ab5e MERGED https://github.com/danieleteti/delphimvcframework/pull/72
MERGED https://github.com/danieleteti/delphimvcframework/pull/73
2017-02-24 14:20:05 +01:00
Daniele Teti
c7c738a00e Removed RenderJSON 2017-02-22 19:50:49 +01:00
Daniele Teti
51351a6f73 removed *Strict serialization type
added TMVCSerializerStrictJSON
2017-02-13 20:51:59 +01:00
Daniele Teti
f98d39375f CustomTypeSerializers Refactoring
Added more unit test
2017-02-10 18:48:19 +01:00
Daniele Teti
c2f51d4b11 CustomTypes + UnitTests 2017-02-10 14:20:06 +01:00
Daniele Teti
4cc5b6560c CustomTypesSerialiers 2017-02-09 19:34:12 +01:00
Daniele Teti
c80f078337 TValue de/serialization 2017-02-09 11:24:24 +01:00
Daniele Teti
9b70ee40fc IMPLEMENTED
IMVCSerUnSer = interface
    ['{1ECA942A-E3C4-45DD-9D23-C00363B5E334}']
    function SerializeObject(AObject: TObject; AIgnoredProperties: array of string): String;
    function SerializeObjectStrict(AObject: TObject): String;
    function SerializeDataSet(ADataSet: TDataSet; AIgnoredFields: array of string): String;
    function SerializeCollection(AList: TObject; AIgnoredProperties: array of string): String;
    function SerializeCollectionStrict(AList: TObject): String;
    procedure DeserializeObject(ASerializedObject: String; AObject: TObject);
    procedure DeserializeCollection(ASerializedObjectList: string; AList: IMVCList; AClazz: TClass);
  end;
2017-02-08 18:30:32 +01:00
Daniele Teti
862f31a1ce Added 'Renderer' in TMVCController 2017-02-08 11:42:35 +01:00
Daniele Teti
9ef9ede924 REMOVING WARNINGS 2017-02-07 16:32:54 +01:00
Daniele Teti
26c0eb5eb8 TEST OK FOR JSON SERIALIZER (BUILTIN JSON PARSER)
TestSerUnSerObject
TestSerUnSerObjectList
2017-02-07 16:06:58 +01:00
Daniele Teti
56b78738e4 Serializer: First TEST OK 2017-02-07 14:08:51 +01:00
Daniele Teti
c8074649a1 2.1.3 (lithium)
FIX https://github.com/danieleteti/delphimvcframework/issues/64
ADDED Unit Tests for avoid regressions
2017-01-29 19:02:41 +01:00
Daniele Teti
32caa1edcd 2.1.2 (helium)
FIX for Delphi versions who don't have TJSONBool (Delphi XE8 or older)
Added new conditional define in dmvcframework.inc: JSONBOOL (defined for Delphi Seattle+)
2017-01-29 18:40:54 +01:00
Daniele Teti
71907802f0 ADDED SEMANTIC VERSION (DMVCFRAMEWORK_VERSION const in MVCFramework.Commons.pas hold the current version)
Updated the IDE Expert to show the current version of the framework
FIX to the mapper about the datasets null values (needs to be chack in old Delphi versions)
FIX to the dataset boolean values
ADDED more unit tests about nullability
2017-01-29 16:11:14 +01:00
Daniele Teti
03be713c93 FIX - Now the logs are created always in the module path (by default) 2017-01-26 20:07:19 +01:00
spinettaro
72475e4b96 fixed session timeout when timeout value is 0 2017-01-20 17:29:09 +01:00
Daniele Teti
808e3902d1 Moved TMVCHTTPMethodType and TMVCHTTPMethods to MVCFramework.Commons.pas (You controllers may not compile animore without using this unit)
Better mobile support for RESTAdapter
Better IFDEFing
2017-01-18 21:54:16 +01:00
Daniele Teti
ccc8ee90ab FIX OnBeforeAction (Thank you to Marco Mottadelli)
More unit tests
Refactoring for XE6
Updated copyright to 2017
2017-01-05 12:45:51 +01:00
Daniele Teti
4092b08179 New Conditional Defines:
USEFIREDAC
USEDBX
STARTEREDITION
2017-01-03 13:35:49 +01:00
Daniele Teti
32e7a8d325 Added features selection in dmvcframework.inc
Added MVCFramework.Patches.pas which should try to uniform interfaces of the changed classes in different versions of Delphi
2016-12-30 20:42:49 +01:00
Daniele Teti
05fb9259ae Compilable with XE6 and older
New unit tests
2016-12-29 19:29:22 +01:00
Daniele Teti
3b1e19ec40 https://github.com/danieleteti/delphimvcframework/issues/63 2016-12-28 10:01:02 +01:00
spinettaro
24fa42f483 Merge branch 'master' of https://github.com/danieleteti/delphimvcframework 2016-12-13 18:16:35 +01:00
spinettaro
a4a3ea533a Set Stream position to 0, before sending the stream, in SendStream method
This fix stream rendering when DMVC is under apache
2016-12-13 18:16:12 +01:00
Daniele Teti
97d944a56a Workaround for webroker apache (maybe IIS) integration 2016-12-13 15:43:54 +01:00
Daniele Teti
c8d176485f Fix with german chars 2016-12-12 14:37:32 +01:00
Daniele Teti
7c2acc9738 Encoding fixes
Preparation for output compression
More unit tests
2016-12-07 19:36:03 +01:00
Daniele Teti
60ef18d148 ADDED
Config[TMVCConfigKey.FallbackResource]

Defines a default URL for requests that don't map to a route or a file (useful for client side web app)

The experts generates a Config[TMVCConfigKey.FallbackResource] which ponts to 'index.html'
2016-12-07 12:35:46 +01:00
Daniele Teti
81744b892e Merge changes from https://github.com/danieleteti/delphimvcframework/pull/60
Some refactoring needed to be coherent to the rest of the framework
Added a new sample to chow customsession utilization
2016-12-05 15:51:05 +01:00
airtonjs
fa16b01164 Permit to use other class of session 2016-12-05 09:03:58 -04:00
Daniele Teti
9e76485268 Samples Refactoring 2016-11-27 23:18:32 +01:00
Daniele Teti
00bc5d6d8f Small refactoring
New image for the IDE Expert
Added MVCDoc to articles_crud_server
2016-11-24 20:08:35 +01:00
Daniele Teti
56a7c8311d FIX Render(Stream,False)
Added Ownership to TDuckTypedList
Added 2 more unit tests
2016-11-18 18:25:50 +01:00
Daniele Teti
25177d957f All the unit tests are now merged in 1 project.
Submodules update, samples refactoring, build improvements.
2016-11-13 21:00:54 +01:00
Daniele Teti
119238df9e Merge branch 'master' of https://github.com/danieleteti/delphimvcframework 2016-11-07 12:24:40 +01:00