-
Content Count
2559 -
Joined
-
Last visited
-
Days Won
133
Everything posted by Anders Melander
-
Code signing certificates have become so expensive...
Anders Melander replied to RaelB's topic in Delphi Third-Party
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. -
Yes, it's just what we needed.
-
Code signing certificates have become so expensive...
Anders Melander replied to RaelB's topic in Delphi Third-Party
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. -
Code signing certificates have become so expensive...
Anders Melander replied to RaelB's topic in Delphi Third-Party
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. -
ANN: Better Translation Manager released
Anders Melander replied to Anders Melander's topic in Delphi Third-Party
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 -
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
-
ANN: Better Translation Manager released
Anders Melander replied to Anders Melander's topic in Delphi Third-Party
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. -
Create an animated gif from a set of bitmaps?
Anders Melander replied to Felix.'s topic in General Help
wut? -
Create an animated gif from a set of bitmaps?
Anders Melander replied to Felix.'s topic in General Help
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. -
Parallel Resampling of (VCL-) Bitmaps
Anders Melander replied to Renate Schaaf's topic in I made this
*facepalm* -
How do I set debugging ranges with-in lines?
Anders Melander replied to JohnLM's topic in Delphi IDE and APIs
If you don't want to single-step (F8) past a certain point then... don't single-step; Press run (F9) to continue instead. -
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.
-
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.
-
Yes it does. Try again and this time do it exactly like Uwe showed you.
-
Stack tracing is very expensive and not all exceptions are errors.
-
Don't. You aren't improving anything by abbreviating control names.
-
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 😉
-
How to refer to a single value from an enumerated type declared in a set type?
Anders Melander replied to PiedSoftware's topic in RTL and Delphi Object Pascal
That's assignments. OP is asking for a type declaration.- 7 replies
-
- pascal
- enumerate type
-
(and 1 more)
Tagged with:
-
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;
-
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.
-
Open-source Delphi interpreters?
Anders Melander replied to David Schwartz's topic in Network, Cloud and Web
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. -
Open-source Delphi interpreters?
Anders Melander replied to David Schwartz's topic in Network, Cloud and Web
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. -
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.
-
ANN : FinalBuilder/Continua CI/Signotaur - Black Friday Sale - 40% off new licenses
Anders Melander replied to Vincent Parrett's topic in Delphi Third-Party
Order incoming... Now we just need to get the EV-vetting process completed.- 7 replies
-
- finalbuilder
- code signing
-
(and 1 more)
Tagged with: