Jump to content

Edwin Yip

Members
  • Content Count

    432
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by Edwin Yip

  1. @darnocian, according to the documents, since custom function for the template must be defined as static class methods, how do I access contextual data in those utility methods? I can see you can use `class var` to pass contextual data to the utility class before calling `Template.Eval`, but in case of multi-threaded template rendering, it seems that locking is unnecessarily needed. But at least it's workable? I'll try but you might have a better answer? Thanks. It'll be great if ITemplateFunctions.AddFunctions supports non-class methods, so that in the methods the object's fields are accessible.
  2. Hello, I don't remember since exactly when, but about a few weeks ago my XE4 IDE complains about "duplicates not allowed" when opening a project. Here is the call stack caught by madExcept. It seems has something to do with the Interbase DBX driver which I don't use at all and I can disable it, if anybody kindly tells me how. Any hints would be appreciated! Call stack === operating system : Windows 7 x64 Service Pack 1 build 7601 system up time : 20 hours 57 minutes program up time : 15 minutes 43 seconds processors : 4x Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz physical memory : 1497/7888 MB (free/total) free disk space : (C:) 50.49 GB (F:) 1.66 GB display mode : 1920x1080, 32 bit allocated memory : 306.80 MB largest free block : 116.06 MB version : 18.0.4905.60485 compiled with : Delphi XE4 madExcept version : 4.0.19 callstack crc : $c606e1f1, $46f22a97, $9846ea67 exception number : 5 exception class : EListError exception message : Duplicates not allowed. main thread ($1b08): 07b089fa +046 DbxCommonDriver180.bpl System.Generics.Collections 1764 +7 Data.DBXClassRegistry.{System.Generics.Collections}TDictionary<System.string,System.TClass>.Add 07c00586 +032 DbxCommonDriver180.bpl Data.DBXMetaDataWriterFactory 66 +1 TDBXMetaDataWriterFactory.RegisterWriter 06fbd175 +019 DBXInterBaseDriver180.bpl Data.DbxInterBaseMetaData 23 +1 Data.DBXInterbaseMetaData 50060476 +042 rtl180.bpl System 20618 +18 InitUnits 500604e6 +046 rtl180.bpl System 20643 +8 @PackageLoad 29111425 +005 DataExplorerDBXPluginInt180.bpl SysInit 898 +0 @PackageLoad 5009ee43 +03b rtl180.bpl System.SysUtils 23373 +4 InitializePackage 59859a2f +01b madExcept_.bpl madExcept InterceptInitializePackage 5009ef9b +083 rtl180.bpl System.SysUtils 23424 +18 LoadPackage 204c1e78 +008 coreide180.bpl PakLoad 146 +0 TPackage.DoLoadPackage 204c1fed +055 coreide180.bpl PakLoad 220 +7 TPackage.Load 204c4941 +061 coreide180.bpl PakMgr 591 +2 TDesignPackage.Load 21c99b07 +05b delphicoreide180.bpl PasCppPakMgr 2292 +4 TIDEDesignPackage.Load 5005f2a9 +01d rtl180.bpl System 16534 +2 @AfterConstruction 21c9991b +06b delphicoreide180.bpl PasCppPakMgr 2217 +11 TIDEDesignPackage.DelayLoad 21c93f82 +09e delphicoreide180.bpl PasCppPakMgr 463 +10 LoadDesignPackage 21c94275 +215 delphicoreide180.bpl PasCppPakMgr 534 +52 LoadProjectPackages 21d7f22b +167 delphicoreide180.bpl BasePasProjOpts 1544 +22 TProjOptsManager.DoLoadPackages 21d8001c +000 delphicoreide180.bpl BasePasProjOpts 1779 +0 TProjOptsManager.LoadPackages 21d81030 +008 delphicoreide180.bpl BasePasProjOpts 2353 +1 TProjectOptions.LoadPackages 21ccd845 +17d delphicoreide180.bpl BaseDelphiProject 2787 +21 TDelphiProjectModuleHandler.Create 21ccc6b5 +009 delphicoreide180.bpl BaseDelphiProject 2415 +0 TBaseDelphiProject.InstallModuleHandlers 223c46e9 +005 delphide180.bpl DelphiProject 91 +1 TDelphiProject.InstallModuleHandlers 21cc3c41 +299 delphicoreide180.bpl BaseDelphiProject 767 +49 TBaseDelphiProject.Create 223c5236 +04e delphide180.bpl DelphiProject 267 +5 TDelphiProjectCreationTrait.OpenMSBProject 206df09d +181 coreide180.bpl ProjectFileUtils 701 +22 MSBuildLoadProjectFile 21cd629e +01e delphicoreide180.bpl BaseDelphiProject 4957 +3 TDelphiProjectFileModuleHandler.FileOpen 2086c99e +016 coreide180.bpl DocModul 3220 +0 TFileOpenHandler.FileOpen 208676d4 +130 coreide180.bpl DocModul 801 +36 TFilterList.OpenFile 2086b703 +03b coreide180.bpl DocModul 2622 +3 CallDefaultOpenProc 205abf0f +22f coreide180.bpl ProjectGroup 1495 +28 TProjectGroup.Create.@label 205a9a17 +0d3 coreide180.bpl ProjectGroup 820 +11 TProjectGroup.Create 205a8739 +09d coreide180.bpl ProjectGroup 484 +6 LoadMSBProjectGroup 205b3dad +035 coreide180.bpl ProjectGroup 3872 +5 TMSBuildProjectGroupFileOpenHandler.FileOpen 208676d4 +130 coreide180.bpl DocModul 801 +36 TFilterList.OpenFile 2086b703 +03b coreide180.bpl DocModul 2622 +3 CallDefaultOpenProc 50214247 +b23 rtl180.bpl System.ObjAuto 789 +258 ObjectInvoke 50215cb9 +1fd rtl180.bpl System.Win.ObjComAuto 290 +41 TObjectDispatch.Invoke 76187bc5 +00a USER32.dll DispatchMessageA 50580e8f +0fb vcl180.bpl Vcl.Forms 10290 +25 TApplication.ProcessMessage 50580eca +00a vcl180.bpl Vcl.Forms 10318 +1 TApplication.HandleMessage 50581205 +0c9 vcl180.bpl Vcl.Forms 10456 +26 TApplication.Run 764b343b +010 kernel32.dll BaseThreadInitThunk
  3. For my new project I need a template engine for generating web pages, while I have concluded which suited my needs the best and I'm quite confident about my conclusion, your opinions and comments might help me to make my final decision. Since mORMot is my go-to framework for server-side web development, the first candidate to consider is obviously DMustache, which is a fast Delphi/FPC implementation of the popular logic-less Mustache template engine. Actually I've used it in several of my projects and it's great. But sometimes I need more features, but as you know, logic-less means no "if", "while", and so on. And fortunately I found Sempare Template Engine, which is the only feature-rich template engine for Delphi ( Yes, I meant it, because we all know Delphi was/is mostly focused on GUI development but not web development...) Pros === - Very very feature-rich, "if", "for and while loop", "include", "JSON", "custom methods", and so on. Basically, the feature set it's very close to template engines you can find in web-focused languages such as Java. No other Delphi template engine is even comparable (sorry, I love DMustache, but I also need "if" and "while"...). - Very well designed! You can tell by just looking at the unit namespaces and the source! - Documented, and with examples. - Well-tested (with DUnitX tests) Cons: While It's also open source, but for commercial uses you need to buy a license key with a very reasonable price. There are other template engines too, but IMHO, only DMustache and Sempare Template are serious, so I won't list them here... Your comments are welcomed!
  4. Edwin Yip

    VSoft.UUIDv7 - a Delphi implementation of UUIDv7 (RFC 9562)

    Well done! Is it possible to extract datetime from a uuid?
  5. Edwin Yip

    Exception logging/reporting on MacOS?

    Why I haven't heard about this before? It seems to be the only one that's cross-platform. I watched the intro video and it sounds very good. How does it compare to madExcept?
  6. Edwin Yip

    What new features would you like to see in Delphi 13?

    I'm so disappointed to hear that!
  7. Edwin Yip

    What new features would you like to see in Delphi 13?

    I'm so disappointed to hear that!
  8. Edwin Yip

    What new features would you like to see in Delphi 13?

    By now do you mean Delphi 11 or 12? I'm using 11 and the LSP server is quite unstable and as a consequence code completion, code navigation, and everything that relies on the LSP server becomes unusable at all... That being said, I don't want new features but stability enhancements to existing critical features.
  9. Edwin Yip

    ANN: Native X.509, RSA and HSM Support for mORMot

    What a great news for the new year!
  10. Edwin Yip

    ANN: Native X.509, RSA and HSM Support for mORMot

    "not yet available", does it mean there will be a TLS layer sometime in the future ? For http client it's sensible to just use clients in mORMot, but there are cases where you need to use Indy :)
  11. Edwin Yip

    ANN: Native X.509, RSA and HSM Support for mORMot

    Wow! You never cease to amaze us ab! Does it mean Indy can use it instead of OpenSSL for supporting the latest TLS/SSL standards?
  12. In case anyone is interested, and better, want to contribute, I've upgraded THunSpell which was originally written by Stefan Ascher to support Unicode Delphi and created a github repository. Attached Demo screenshot.
  13. I asked a similar question on the Delphi facebook group some time ago, and the feedback were all positive. I think it only make sense to use the Chilkat DLL if you really can't find an alternative with source code.
  14. Edwin Yip

    Coming soon

    @Alexander Sviridenkov This is very cool and can be very useful! While I have a faith in your libraries, the only thing I'm concerning about is the performance. Is it based on the good old and fast RTTI (System.TypInfo.pas) or the new but slow extended RTTI (System.Rtti.pas)?
  15. Edwin Yip

    Coming soon

    SQL is the most proven and widely-used DSL on earth, and it's the best option. Forget about those clunky and strange syntax of the so-called full-fledged ORM's.
  16. Edwin Yip

    Addictive software??

    What happened to them? Yes, it seems that the website is no longer available...
  17. Edwin Yip

    ICS V9.0 new components and samples

    Wow, well done!
  18. After working on 11.3 for months, my conclusion is that the LSP-based code completion and code navigation is much much unstable than the old non-LSP versions. I always have to kill the LSP server to get it back to normal...
  19. I created a simple demo project for mORMot web framework and Sempare Template Engine, both are the most powerful ones in their own catalogs, thus worth knowing how they can work together.
  20. Graphics32 + Angus's GR32_lines and GR32_text can be firm foundation for graphical apps. And no one mentioned https://github.com/fatihtsp/Blen2d4Delphi ?
  21. I need advise on solving the IDE help system not working issue, it's XE4 on Windows 7. I don't know since when it stopped working, but the error is as following: RAD Studio's help namespace is not defined. Please reinstall RAD Studio's documentation. class not registered, ClassID: {314111F0-A502-11D2-BBCA-00C04F8EC294} So I found the instruction from embt: https://support.embarcadero.com/article/43035 The help installer almost worked until I got the following error: H2Reg.exe ** Error ** MS Help 2.x runtime files are not installed on this PC. Installation/registration of Help files cannot proceed. According to Google and a MS forum post, I need Visual Studio 2008 SDK which still has a download on cnet.com, so I got it. But the installation cannot proceed since I don't have Visual Studio 2008 installed, so I stuck. I don't want to re-install the full XE4 because I've got so much IDE plugins and custom settings. Any advise? Thanks.
  22. Thanks for the info, tried both h2reg and h2viewer, both give me the following error: MS Help 2.x runtime files are not installed on this PC. I wish Delphi kept using the good old CHM or .hlp help file formats...
  23. See attached, I think I have all the VC 2008, 2010, 2012, 2013 and 2017 redistributables...
  24. The Cromis IPC framework is very well designed, it has a background thread running for receiving the messages, and only call your event handler when there is a message. I have several successful use cases with it.
  25. Edwin Yip

    OMG, that Edit Path expert is awesome

    I've been wanting such feature from the IDE for so many years already! And now you've done it! Well done @dummzeuch
×