Jump to content

Anders Melander

Members
  • Content Count

    2559
  • Joined

  • Last visited

  • Days Won

    133

Everything posted by Anders Melander

  1. And yet you can apparently copy the certificate onto another token. I don't know how it's done yet, as I haven't tried it, but according to the certificate providers it is possible. So do most of the certificate providers but they're all subscription based and they're not cheap.
  2. Anders Melander

    Any reason not to upgrade to 12.2 ?

    Yes, it's just what we needed.
  3. I can see that at both ssl.com and signmycode.com you can buy a code signing certificate without a token. I don't know how they then deliver it. As far as I can tell codesigningstore.com also offer that option but J.F.C they're expensive! $566 for a 1 year EV certificate without a token. The same costs $299 at signmycode or $349 at ssl.com. Btw, don't believe their claim of 1-5 days to issue an EV certificate. It takes at least double that - and a clonable DNA sample from your firstborn.
  4. AFAIK you can use any certificate (at least that used to be the case[*] - maybe a bug in signtool) but only code signing certificates will be validated as such so there's not much point in trying to use something else. What would be the point? *) Back in the day, when Denmark introduced digital IDs, every citizen got issued a certificate. So naturally I used my personal certificate to sign all my software 🙂 I think that the new certificates are still just files. They just need to be on a secure token in order to be usable. AFAIK once you have a token with a certificate on it you can copy it to other tokens. That's what we are planning on doing anyway; We just received an EV certificate on a token and two extra blank tokens yesterday. One is used by the build server (via Signotaur - works great!), one will go in the safe for backup, and one will be shipped to me for R&D (my client is in another country), and in the darkness bind them.
  5. Anders Melander

    ANN: Better Translation Manager released

    https://bitbucket.org/anders_melander/better-translation-manager/src/master/#markdown-header-deploying-a-localized-application Basically, you just place the generated language module(s) in the same folder as your exe file and that's it; When you run the application the Delphi RTL will take care of loading the correct module based on the Windows language settings. For example, let's say you have a Delphi project named foobar.dproj and a BTM project file named whatever-it_doesnt_matter.xlat. Your BTM project contains translations for Danish and German. The base language is English. When you compile your project with Delphi you get foobar.exe containing the English texts. When you build the language modules, using BTM, you get foobar.dan and foobar.ger. Place foobar.exe, foobar.dan, and foobar.ger in the same folder and run. That's pretty much all there is to it. If you want the language to be configurable (i.e. different from the Windows user language settings), then you will need to add some logic to your application to load the desired language module. Here's one way to do it: https://bitbucket.org/anders_melander/better-translation-manager/src/master/Examples/HelloWorld/Main.pas
  6. Better Translation Manager https://bitbucket.org/anders_melander/better-translation-manager The Better Translation Manager (BTM) is a replacement for the Delphi Translation Manager a.k.a. the Integrated Translation Environment (ITE) and External Translation Manager (ETM). Why is it better? Well, for one thing, it's free but more important; It actually works - unlike the ITE/ETM. Why? The standard Translation Manager that ships with Delphi today was originally an individual product known as the Borland Translation Suite. With Delphi 5 it became a part of the enterprise edition. The Borland Translation Suite showed great promise but unfortunately it never evolved from its roots as an external tool and has always been hampered by severe bugs that made it completely unusable in practice. As a result nobody uses it. This can be witnessed by the plethora of homegrown and commercial alternatives. The great benefit of the standard translation system is that it just works (this is the system itself I'm talking about, not the tools. The tools suck). Apart from the requirement that you must use resourcestrings you don't need to do anything special when writing your code. At run time you just place the compiled resource modules in the same folder as your application and the Delphi Run Time Library automatically takes care of loading and using the translations based on the current Windows user interface language. Anyway, since Embarcadero has now finally admitted that they are never going to fix the Delphi Translation Manager and instead recommend that we find alternative solutions, I decided that it was time I solved this little problem once and for all. The core functionality of the Better Translation Manager was written in two weeks during my summer vacation in Italy 2019. Amazing what you can do with a little pasta! Features Does not require any changes to the source code of the application being translated. Works with the existing standard Delphi localization system. Translates resourcestrings and all strings in forms regardless of any 3rd party components used. Works on compiled application. Source code is never used. Generates localized binary resource modules (resource DLLs). Does not use an external compiler. Can import existing translations from compiled application and resource modules or from XLIFF localization source files (dfn, rcn files). Read and save TMX and TBX translation memory files. Import Translation Memory from TMX (Translation Memory eXchange), TBX (TermBase eXchange), Microsoft Glossary and CSV. Machine Translation using Translation Memory, Microsoft Translation Service or Microsoft Terminology Service. Forms, Components, Types and Values that should be ignored can be specified in a Stop List. Translations are Spell Checked. Validation Rules to catch common translation mistakes. Supports Right To Left (RTL) editing based on translation language. Translation project is stored in a single XML file. Command line interface for use in automated build systems. Fast! Refreshing a large project typically takes less than a second vs. many minutes with the ITE/ETM. Supports all Unicode versions of Delphi (i.e. Delphi 9 and later). Resource modules contain the version resource of the source application. What it doesn't do There's one task that BTM, by design, doesn't attempt to solve: Localizing the placement and size of controls. Since it has been my experience that it is a far better idea to design the user interface in such a way that the layout automatically accommodates changes in font- and text size and shorter/longer texts due to translation, I decided from the start that I would not be supporting localization of size and position of controls. This also relieved me of having to create a run time form designer, supporting 3rd party controls visually (something that nobody so far has managed to find a foolproof solution to) and deciding what individual properties constitutes size/position values. Instead I just localize all string values - and only string values. But wait... There's More! Yup, you not only get this little wonder for free. You get the full source code too. Grab it at the repository linked at top. More details at the repository. Enjoy / Anders Melander
  7. Anders Melander

    ANN: Better Translation Manager released

    If this is for a professional project then you should approach the problem like a professional; Either have the translations done by a translation bureau, a native speaker of the language, or use an online translation service. If on the other hand this is just for a hobby project then go ahead and experiment with your toy. Just don't post about it here, please. Start a new thread. I'm using a spell checker because I need something that was actually designed for the task; Is fast, has reliable output and works even when the user is offline.
  8. Anders Melander

    Create an animated gif from a set of bitmaps?

    I believe there's an AVI2GIF demo in the original TGIFimage 2.2 kit from... 1999! I should put all that old shit up on github and get it off my HD.
  9. Anders Melander

    Parallel Resampling of (VCL-) Bitmaps

    *facepalm*
  10. Anders Melander

    How do I set debugging ranges with-in lines?

    If you don't want to single-step (F8) past a certain point then... don't single-step; Press run (F9) to continue instead.
  11. Anders Melander

    Looking for a certain component

    The style I was referring to was the visual style and I assumed that the OP meant something like this: Unfortunately he is apparently too busy to respond so we can only guess.
  12. Anders Melander

    Looking for a certain component

    It's not a standard control. It was a style that was popular in the nineties (where it belongs). The Raize controls (now Konopka Signature VCL Controls) or the JVCL probably has a label that can paint like that.
  13. Anders Melander

    Why doesn't this work?

    Yes it does. Try again and this time do it exactly like Uwe showed you.
  14. Anders Melander

    Switch from JCL to EurekaLog

    Stack tracing is very expensive and not all exceptions are errors.
  15. Anders Melander

    Naming abbreviations for controls

    Don't. You aren't improving anything by abbreviating control names.
  16. Anders Melander

    Switch from JCL to EurekaLog

    It sounds to me like you have a quality problem if you have that many exceptions. In the applications that I work on (users in the hundreds), every single exception that are caught by the outer exception handler (madExcept in our case) is treated as a must-fix bug. On the average I would say we get one or two a month if we've been sloppy with the QA. The madExcept bug reports are usually either mailed to us by the madExcept UI, or retrieved from the customer's system by our supporters, and attached to a JIRA issue. It is extremely rare that we need to compare call stacks to detect a duplicate. AFAIK madExcept can do so automatically via a hash or something but we've never used that feature. So the only advice I can offer is: fix your bugs before release 😉
  17. Anders Melander

    DLL Load Issue

    Useless.
  18. That's assignments. OP is asking for a type declaration.
  19. Anders Melander

    migrating projects to RAD Studio 12

    Yes, that's correct; There no need. But I don't see a problem with saving a direct reference somewhere else, for convenience, performance, or readability. In Delphi, I would do something like this: // Create layer var Layer := Image.Layers.Add<TBitmapLayer>; // Set initial layerproperties Layer.Scaled := True; Layer.Bitmap.LoadFromFile('foo.png'); ... or interface type TMyForm = class(TForm) private FBitmapLayer: TBitmapLayer; ... public constructor Create(AOwner: TComponent); override; end; implementation constructor TMyForm.Create(AOwner: TComponent); begin inherited; FBitmapLayer := Image.Layers.Add<TBitmapLayer>; FBitmapLayer.Scaled := True; end; procedure TMyForm.SomeMethod; begin FBitmapLayer.Bitmap.LoadFromFile('foo.png'); ... end;
  20. Anders Melander

    migrating projects to RAD Studio 12

    Having two list think they "own" the same object would be a very bad idea; The layers are already owned and managed by a layer collection.
  21. Anders Melander

    Open-source Delphi interpreters?

    My debugger requires DevExpress but DWScript itself has no external dependencies. I chose to use DevExpress mainly because I wanted a docked layout and from prior experience I know that the VCL's docking suuuucks. It should be possible to replace it with something else, if one wanted to. I also have a DWScript RTL that uses DevExpress controls for the GUI stuff but you don't need to use my RTL; DWScript comes with its own non-UI RTL that covers the basic stuff. Actually, AFAIK, I'm the only one doing UI with DWScript. At least I haven't seen anyone else do it. Yes.
  22. Anders Melander

    Open-source Delphi interpreters?

    I have used DWScript as a scripting system in several products. Used either to provide business rules (no UI, just logic) or as a app/plugin (with UI). The OP language support and performance is excellent. The learning curve is extremely high (no documentation, few examples). Here's an IDE/debugger I wrote for it: DWScriptStudio FWIW, https://www.beginend.net is powered by DWScript.
  23. Anders Melander

    Backward compability

    It's been like that since Delphi 2. Why do you need to open a form in Delphi 11 that has been saved with Delphi 12? Regardless of this problem, you should always "be careful what you commit"; Review your changes and cherry pick the ones that are relevant so the important changes aren't drowned out by the noise.
  24. Order incoming... Now we just need to get the EV-vetting process completed.
×