Jump to content


  • Content Count

  • Joined

  • Last visited

About abouchez

  • Rank

  • Birthday 10/29/1972

Contact Methods

  • Website URL

Profile Information

  • Gender
  • Location
    Beaulieu sur mer, France

Recent Profile Visitors

207 profile views
  1. I see at least a small snippet of "asm" within a function: function Variant2TIntArray(value: variant): TIntArray; begin asm @result = @value; end; end;
  2. Nobody there? As far as I discovered, latest JavaScript engines are able to "de-virtualize" the appy() calls, from its execution trace. See for instance latest webkit enhancements, with FTL introduction, in "Polyvariant Devirtualization" paragraph of this great https://www.webkit.org/blog/3362/introducing-the-webkit-ftl-jit/article.
  3. Some part of my code needs the highest performance possible. JavaScript's apply() is much slower than direct call, by design. The "devirtualization" feature, AFAIK does the following: - if a method is "pure virtual", without any "override", it will be compiled as if it was not virtual. type TMyClass = public procedure MyMethod; virtual; end; If this TMyClass.MyMethod is never overriden, then the class will be compiled as such: type TMyClass = public procedure MyMethod; end; My problem is that it does not work with "virtual; abstract;" methods. May the "devi
  4. Use an "array of string" on the SmartMobileStudio side. But your code won't work directly. There is no built-in JSON serialization of published properties of a class within Smart yet. And AFAIR there is not enough information in the RTTI to process the JSON content into properties. It will work for simple types (string/numbers), but not for classes or records. The main problem is that JSON.Parse() will return a variant, not a TMyClass instance. Also, due to variable name obfuscation, the TMyClass properties and the variant created by JSON.Parse() would probably just not match (at al
  5. If you find it interesting, you may share some official news in your web site, if you wish! IMHO it may be a good selling point for SmartMobileStudio.
  6. In addition to Delphi and FreePascal clients, our framework is now able to access any mORMot server from HTML5 / AJAX rich client, thanks to Smart Mobile Studio. Take a look at this series of blog articles: Units and platforms; Generating the client code wrappers; Delphi / FreePascal clients; Smart Mobile Studio clients. There is no package to be installed within the Smart Mobile Studio IDE. The client units will be generated directly from the mORMot server. Any edition of Smart is enough: you do not need to pay for the Enterprise edition to consume mORMot services. But of course, the
  7. abouchez

    File API?

    I suspect you were speaking of W3C.File.pas under RTL\APis\W3C. That is a pretty good start! Thanks!
  8. I confirm that the just release 2.1 revision fixed the issue. I'm now able to work with records and nested records transmitted as JSON from a mORMot server! From my point of view, SMS client generation for mORMot is working as expected. You can now from any Smart application: - Have a secure RESTful ORM access to a remote mORMot server; - Execute interface-based services from a remote mORMot server. The mORMot server is able to generate code wrappers for Smart. No need to add a plug-in in Smart: the units are generated from the mORMot server, using a Mustache template (there ar
  9. I was not able to log using the old credentials. But perhaps I made something wrong. It does not matter much. But thanks a lot for fixing this issue, during the Release Candidate day! This is great!
  10. In the Smart RTL, there are some functions which convert manually string to/from enumerations. AFAIK the SMS compiler already generates a javascript string array of all values, so it is pretty easy to use a more generic way. For instance, it is how our mORMot SOA clients handle enumeration serialization. If I define the following type: TRecordEnum = (reOne, reTwo, reLast); The following JavaScript will be generated (and not used, AFAIK): /// TRecordEnum enumeration var TRecordEnum = [ "reOne", "reTwo", "reLast" ]; Then I can convert from a variant (either a string or
  11. Hello, Just to discuss about https://smartmobilestudio.zendesk.com/hc/en-us/requests/84issue. Using latest Smart Mobile Studio 2.1 (beta-3): If I define the following record type: type TTestNestedRecord = record H1: integer; H2: string; H3: record H3a: boolean; H3b: TSQLRawBlob; end; end; when I want to copy the record: var rec1,rec2: TTestNestedRecord; rec2 := rec1; then the browser complain about a missing copy function. In fact, there is no function generated by the compiler to copy the nested rec2.H3 := rec1.H3. This is very annoying to have such a basic langua
  • Create New...