I am now tpsfadmin on SourceForge
There has been a lot of interest lately in the TurboPower projects on SourceForge. Lots of folks have used Turbopower code in the past and are now wanting to bring this code forward to Delphi 2010. There has been a lot of work done in this area already, but unfortunately, the SourceForge pages haven’t always reflected that. Because there has really been only a few people with admin rights to the projets, folks have had to pull down the code, change it, and then post it somewhere else. (For instance, a whole bunch of great stuff can be found at http://www.songbeamer.com/delphi/) . Roman Kassebaum has also been doing some great work getting the code and components ready for Unicode and the newer versions of Delphi.
Over the weekend, I sent an email to the guy who had been the tpsfadmin (TurboPower SourceForge Administrator). That account is the “godfather” for all the TurboPower projects on SourceForge. I asked him what we could to open things up, and I was quite pleased and not a little surprised when he simply sent me the “crown jewels”. So today I logged in, changed the password, and pointed the email address for the account to my gmail.com account.
And so I’m feeling a bit heady about this. I’m definitely not drunk with supremacy just yet, but as Spiderman said, with great power comes great responsibilities. There is a lot of amazing code here, and I want to make sure that as much of it gets made updated and made available to the community as possible. But I should note that this isn’t an “officially sponsored” Embarcadero deal. This is at best “semi-official”. We aren’t officially taking over corporate sponsorship of these projects or anything like that.
Anyway, here are some further notes;
- I’ll be going through all 19 projects and checking their status, updating their web pages, and getting the all up to date
- If you have Turbopower code that you’ve worked on and haven’t been able to get checked in, let me know and we’ll make that happen.
- I think I”m going to pretty much be using Subversion going forward. I’ll be making sure that all the projects have Subversion access.
- I think, too, that I’ll put up another little “mini-survey” to ask what are the most popular of the projects. That ought to give all of us a better idea of which projects should be focused on first.
I’m very interested in hearing what the community has to say here. Given that these projects are all open source, community involvement and community input and feedback are critical here. I know there are a lot of you out there that have done a lot of work to maintain things, and I want to make sure that your work is recognized and incorporated for the good of the project as a whole.
As I said, this was pretty much a surprise, but I’m delighted at how things are working out. This should be really fun, and we can really get things rolling again with this great code.



TurboPower OnGuard looks very promising. A new version with a sane CreateMachineID() would be nice. It should get a major version number increase since doing that will make the ID not backward compatible.
TurboPower AsyncPro seems popular. I don’t use it but I think others will appreciate improvements.
TurboPower Abbrevia is redundant because JCL already includes zip, gzip, 7-Zip and other compression.
TurboPower LockBox is, IMHO, yet another crappy crypto library. It is worse than OpenStreamSec II which has better features. But they both don’t even support AES in CTR mode (see Practical Cryptography by Bruce Schneier about CTR mode’s advantages over other modes).
Instead of LockBox, Delphi community needs a high-quality Delphi wrapper to OpenSSL 1.0. OpenSSL 0.9x can be compiled by C++ Builder + NASM. Plus, it is fast enough not to be a bottleneck on PC’s using SSD drives like Intel X25. And finally, OpenSSL was FIPS certified before and will probably get certified again after 1.0 is final.
Another key point: speed isn’t the only factor when choosing an AES implementation. Newer AES implementations have defenses against timing attacks. The old ones don’t.
September 28th, 2009 at 2:17 pmWe still use TpAsync and TpWindows among others in BP7 applications. Even still have some manuals. Sorry Nick, were we supposed to upgrade to Delphi?
September 28th, 2009 at 3:16 pmNick: Congratulations on the bloodless "coup"
And careful with that code, I wrote quite a bit of it back when I was young and had hair. Have fun!
Cheers, Julian
September 28th, 2009 at 3:19 pmFYI, we use TP Internet Pro and TP Lockbox.
It’ll be good to get the TP libs up-to-date and all in one place again
Raymond.
September 28th, 2009 at 3:22 pmThis is GREAT! news.
I’m sure many of us use at least portions of these packages even though some are archaic by modern Delphi standards.
I won’t mind pitching in to update! Let me know how I can help.
September 28th, 2009 at 3:25 pmthumbs up to you.
September 28th, 2009 at 4:04 pmHi Nick,
Super! I’m glad you’ve taken an interest in the TP products, since I use them so heavily in my projects.
I use the following:
Orpheus
SysTools
BTree Filer (I may be the last living user of BTF, but it ain’t broke, so…)
OnGuard
So, do we need to get you a cape and T-shirt that says "TP Man" on it? :^)
Cheers, Van
September 28th, 2009 at 4:19 pmHey Nick!
Way to go!!! Congratulations!
I don’t think I need to tell you how happy this makes me.
Q
September 28th, 2009 at 4:25 pmHi Nick,
Congratulations on this new responsibility. I would love to help in enhancing and maintaining the TP components. Pls let me know how can we participate.
Cheers
September 28th, 2009 at 4:41 pmSamir
Great Nick, I’m glad to see this happen.
I use a great deal of AsyncPro and Abbrevia. Thanks to Roman and SongBeamer for all their mods. Abbrevia is pretty sound for what I do but AsynPro is a nightmare. I mainly concentrate on all the AdPort related stuff and don’t mess much with Fax and Voice.
September 28th, 2009 at 4:48 pmWell done Nick, your blood is worth bottling!
I have been using Async (just the AdPort and AdStatusLights parts) on a program running in ‘real-time’ on Windows. This program is used to monitor cows in a dairy, recording Electronic Identification tags (the cows won’t go back and get re-scanned, so we can’t afford to loose data), alerting who shouldn’t get milked (many $10K’s lost on a mistake) and giving the cows their feed.
Yes, there are problems, but it is at present the best tool by far, so any improvements you and the others can give us, the better.
Many thanks,
September 28th, 2009 at 5:22 pmFrank (in Western Australia)
@Julian: the hair needs to go when the brain needs space so you’re fine
September 28th, 2009 at 6:25 pmTurboPower Abbrevia is not redundant because Abbrevia does compression natively in code and does not rely on dlls (which is why I use it).
Cheers, Misha
September 28th, 2009 at 6:26 pmThat’s a great idea. But I do hope that new releases (like the one Rich mentions) will still compile on older Delphi versions (like Delphi7).
Hope to see many improvements.
Cheers,
September 28th, 2009 at 6:58 pmDaniel
Buy yourself a drink from me - best nesw I’ve seen today!
Saludos
SeaCay
September 28th, 2009 at 6:59 pmThis is great news!
September 28th, 2009 at 7:08 pmI am using lots of these components and it was sad to see them go nowhere. Now they are in good hands!
Holger
I think it’s in good hands!
I use OnGuard from that helpful SongBeamer page, it seems to work fine in D2010 but with a few hints and warnings.
September 28th, 2009 at 7:18 pmASyncPro & OfficePartner are the boys for me!
September 28th, 2009 at 8:26 pmGood news.
September 28th, 2009 at 8:27 pmHi Nick,
September 28th, 2009 at 8:29 pmGreat news! I am a user of TP products since 1987, and look forward to improvements, with support for Delphi 2010. We use TP components extensively in our Pascal Analyzer and Pascal Browser products. Pascal Analyzer has been inspired by the TP product Turbo Analyst (pre-Delphi only).
Best regards
Christer
TurboPower XML Partner have an interesting component to process XSL-FO stylesheets and produce html, txt and rtf outputs. PDF is missing, and it could be very nice to have it, in order to
September 28th, 2009 at 9:24 pmavoid the use of Apache FOP (that works very well but need a JVM installed and a call to an
external bat from Delphi).
@Rich:
September 28th, 2009 at 9:42 pmOpenStreamSecII does indeed have support for AES CTR mode. The only problem is that you have to subtract one from the IV you set to a TRijndael_CTR instance to get standard output. (Which is explained by the fact that I implemented that mode even before it became standardized by NIST.)
ASyncPro is surely my winner!
September 28th, 2009 at 9:44 pmPlease don’t forget to maintain backward compatibility to at least Delphi 2007 (non-unicode!)
September 28th, 2009 at 9:55 pmWhat you should do is try and get a hold on where Sleuth QA went. I still am not happy with AutomatedQA (and it’s expensive), TurboPower’s tools in the area is still a lot more easy and better to use (for D7), giving you exactly what you need. The problem is, the product disappeared when TurboPower went bankrupt. Think of what you could provide in Delphi if you got a hold on this product and updated it to Delphi 2010. Integrated profiler and memory analyzer? That would be something.
September 28th, 2009 at 10:00 pmCongrats Nick!
September 28th, 2009 at 10:02 pmThis is very timely, as my code relies heavily on AsynchPro. I was just looking for a 2010 version. Let us know when something is available for testing.
Good news. I’ve been a little bit worried about the TP future.
Uses:
- Abbrevia
- OfficePartner
- Flashfiler
Looks interesting:
- OnGuard
- XML
…and don’t forget to update the good documentation/manuals!
September 28th, 2009 at 10:12 pmCongratulation Nick, Hope the we’ll get "Finally" the fourth version of TP Abbrevia
September 28th, 2009 at 10:17 pmAbsolutely brilliant news! I have been using LockBox, Orpheus, Abbrevia, SysTools in many of our projects.
Please, please ensure that it remains backward compatible with D7 (until I can persuade the ‘bagman’to part with enough cash to upgrade!!!).
September 28th, 2009 at 10:18 pmI use (in order of frequency)
September 28th, 2009 at 10:29 pm- Orpheus
- SysTools
- OnGuard
- Abbrevia
- LockBox
FYI- Craig Peterson has stepped up on the Abbrevia project to clean things up, I made him an Admin on the project quite some time ago.
September 28th, 2009 at 10:52 pmNick,
I use ShellShock for file system aware tree and list views and also Essentials for the calculator component.
I’d be very happy to contribute to the effort of maintaining these.
September 28th, 2009 at 11:46 pmVery good news!
I’ve used the following:
- Async Pro
September 29th, 2009 at 12:09 am- Abbrevia
- LockBox
Atle, SleuthQA is unfortunately (afaik) still locked up in the TurboPower vault and nobody can touch it, otherwise I’m pretty sure the original author (Per Larsen) would have done *something* with it instead of letting it die.
Its extra sad since, as you say, AQTime just doesnt cut it.
As for what ex TP products to focus on; Visual PlanIt is so buggy that it needs a redesign. Dont touch it.
September 29th, 2009 at 12:26 amI hope that work include actual ports to fpc and lazarus, rigth?
September 29th, 2009 at 1:58 amInternetPro, ShellShock and the editor/hex in OPro used here.
The profiling in Sleuth was GREAT! Would love to see a similar tool.
September 29th, 2009 at 2:01 am…oh, forgot: B-Tree sees a lot of use, too.
September 29th, 2009 at 2:03 amNick;
I have made quite a few updates to AsynPro over the last few years. The Sourceforge repository is current with my changes. I know that people out there have been trying to port it to Delphi 2009 but I don’t know to what extent they have succeeded. If you have any questions regarding AsyncPro please feel free to contact me.
September 29th, 2009 at 2:07 amCool! Sometimes it’s amazing what you can get just for asking.
September 29th, 2009 at 2:33 amI use SysTools and would need this ASAP. Thanks!
September 29th, 2009 at 3:04 am@Henrick: in that case, I hope OpenStreamSec II is updated (with the mentioned change) to be compatible with NIST’s AES-CTR and ported to Delphi 2009/2010. IMHO, OpenStreamSec is a lot better than LockBox. Bad crypto libraries need to go away–sooner the better because they infect programs with false sense of security or slow speed that reflects poorly on Delphi.
But I honestly think a CodeGear-produced wrapper to OpenSSL 1.0 is the best possible solution. Especially nice if CodeGear can compile OpenSSL with C++ Builder and make it able to be statically linked to Delphi apps in 2011. With DLL calls being so easy to intercept/redirect, it is preferable to avoid crypto calls to DLL.
September 29th, 2009 at 3:21 amThis is great news. We extensively use the following Turbopower packages: AsyncPro, Orpheous, IPro, & Abbreavia. If have fixed a few issues in AsyncPro over the years and would be interested in contributing to the project in the future.
September 29th, 2009 at 3:41 am@Greg Dunn
If you want to track memory leaks you can just get FastMM (or indeed any other half-decent memory manager) to track them for you and report them when your app closes. This works very well indeed.
In fact with the pluggable memory manager architecture of Delphi (SetMemoryManager) it’s trivial to write your own. Back in the days before FastMM here’s what I used:
unit Memory;
interface
var
// Can be used to change the expected memory leak.
DelphiMemoryLeakCount: Integer=8;
implementation
//custom memory manager to track memory leaks
var
GetMemCount: Integer=0;
FreeMemCount: Integer=0;
OldMemoryManager: TMemoryManager;
function NewGetMem(Size: Integer): Pointer;
begin
inc(GetMemCount);
Result := OldMemoryManager.GetMem(Size);
end; (* NewGetMem *)
function NewFreeMem(P: Pointer): Integer;
begin
inc(FreeMemCount);
Result := OldMemoryManager.FreeMem(P);
end; (* NewFreeMem *)
function NewReallocMem(P: Pointer; Size: Integer): Pointer;
begin
if Assigned(P) then begin
if Size=0 then begin inc(FreeMemCount); end;
end else begin
if Size0 then begin inc(GetMemCount); end;
end;
Result := OldMemoryManager.ReallocMem(P, Size);
end; (* NewReallocMem *)
const
CustomMemoryManager: TMemoryManager = (GetMem: NewGetMem;
FreeMem: NewFreeMem;
ReallocMem: NewReallocMem);
procedure InstallCustomMemoryManager;
begin
GetMemoryManager(OldMemoryManager);
SetMemoryManager(CustomMemoryManager);
end; (* InstallCustomMemoryManager *)
type
HWND = type Longword;
UINT = Longword;
const
MB_OK = $00000000;
MB_ICONEXCLAMATION = $00000030;
function MessageBox(hWnd: HWND; lpText, lpCaption: PChar; uType: UINT): Integer; stdcall; external ‘user32.dll’ name ‘MessageBoxA’;
function wsprintf(Output: PChar; Format: PChar): Integer; cdecl; varargs; external ‘user32.dll’ name ‘wsprintfA’;
function IntToStr(i: Integer): string;
var
Buffer: array [0..255] of char;
begin
wsprintf(@Buffer[0], ‘%li’, i);
Result := Buffer;
end; (* IntToStr *)
procedure UninstallCustomMemoryManager;
var
s: string;
Count: Integer;
begin
SetMemoryManager(OldMemoryManager);
Count := GetMemCount-FreeMemCount-DelphiMemoryLeakCount;
if Count0 then begin
if Count1 then begin
s := ‘blocks were’;
end else begin
s := ‘block was’;
end;
Try
MessageBox(0,
PChar(’WARNING: ‘+IntToStr(Count)+’ memory ‘+s+’ not freed.’),
‘Memory Leak’,
MB_OK or MB_ICONEXCLAMATION);
Except
;//ignore - we sometimes get exceptions here when startup fails due to dongle error
End;
end;
end; (* UninstallCustomMemoryManager *)
initialization
{$IFOPT D+} //only install custom memory manager if we are debugging
InstallCustomMemoryManager;
{$ENDIF}
finalization
{$IFOPT D+} //only install custom memory manager if we are debugging
UninstallCustomMemoryManager;
{$ENDIF}
end.
The weird stuff at the end with the custom IntToStr and MessageBox is because you can’t import any use any other units in a custom memory manager unit because that screws up the initialization order.
Of course nowadays you just use FastMM (even on old versions of Delphi) because it usually gives you enough information for you to work out where the leaked memory was allocated.
September 29th, 2009 at 4:19 amWe use B-Tree Filer and would be very happy with some unicode support in B-Tree Filer.
September 29th, 2009 at 4:26 amWe also used Sleuth in the past. This was a great tool as well. It is hard to imagine why this has not been a standard built in feature of the Delphi debugger! It is a pretty fundemental requirment to identify memory leaks in order to make reliable applications.
September 29th, 2009 at 4:26 am@Rich: You are sincerely welcome to discuss your concerns regarding OpenStreamSecII further over at news://news.streamsec.net/. Please do.
BTW are you aware that NIST certification applies only to verifiably identical copies of the compiled and linked module that was submitted for certification? If you rebuild or relink it, even from the exact same sources, that build won’t be certified.
Lastly, the significance of timing attacks should neither be underestimated, nor exaggerated. The best publicly known remote cache-collision timing attack requires the timing of approximately a million request-response pairs, so the most effective counter measure in to simply renegotiate the key long before that limit is reached. There are still no known counter measures against local attacks where the attacker has oracle access to the module, except, of course, to simply not allow anyone but yourself to execute code on that computer.
September 29th, 2009 at 4:29 amHenrick, Rich:
I think this cartoon is relevant.
September 29th, 2009 at 7:53 amDon’t forget to invoice Embarcadero for any work you do in this area.
They don’t support the community for free, so the community shouldn’t support Embarcadero for free either.
September 29th, 2009 at 9:38 amAnd such a shame that Embarcadero have started to impose censorship on the community.
I allow any and all comments to my blog where-ever they come from (unless they are outright offensive or insulting to individuals - even then, if it’s only language that is offensive I edit the offensive language out but allow the comment never-the-less).
I do this whether the comment is in agreement with me or not, and without regard for who is making the comment.
September 29th, 2009 at 9:42 amJolyon -
What in the world are you talking about?
Nick
September 29th, 2009 at 9:54 amGreat News! I extensively use Async Pro, SysTools and ShellShock as well as some of the other TP code.
September 29th, 2009 at 10:21 amThe spam filters on the Embarcadero blogs, which are the same as the spam filters on my blog, are (of necessity) quite aggressive. Also, I don’t get notified when a comment is held for moderation, which is a bug, but not a bug which is at the top of the web team’s priorities right now, for good reason. To an outsider, this may look like "censorship" especially if a blogger is less than religious about checking the spam moderation queue. Of course, it is not censorship at all, but this isn’t obvious to folks who don’t have blogs on the Embarcadero server.
September 29th, 2009 at 11:02 am@Rich: I don’t have access to the JCL compression, so forgive me if I jump to conclusions. Abbrevia might not be redundant to the JCL compression b/c Abbrevia is 100% native Delphi code and is great for compressing streams back and forth from a data source. I used it years ago, and it was the perfect solution that nothing else qualified for.
P.S. +1 for nostalgic praise of Sleuth QA suite… better than AQTime.
September 29th, 2009 at 11:40 amAll: SleuthQA, although an impressive, nay, killer, product for its time, has now been in the bit bucket for 7 years. No work has been done on it at all in that time, no new code has been written, no new Delphis have been supported (and Delphi 2009 would be a hoot to support), no new functionality has been designed. To be honest, I can’t even remember who owns the copyright. Seven years is an eon in software development. It’s long gone, unfortunately.
But, hey, it was the snizz. Even before there was snizz.
Cheers, Julian
September 29th, 2009 at 2:53 pmKeep working Nick! And thank you for your time and interest.
TurboPower is very helpful for all freelancers who can’t afford commercial solutions.
September 29th, 2009 at 7:33 pmCongrats, Nick, with the good move!
My votes go for Abbrevia, InternetPro, LockBox, and also for XML Partner, Orpheus and Office Partner.
September 29th, 2009 at 9:28 pmI use OnGuard, and want to use abbrevia and Officepartner.
September 29th, 2009 at 10:36 pmWow 57 comments and climbing We use Abbrevia and I also use several different versions of Delphi.
September 30th, 2009 at 3:11 amGreat news.. I hope this ensures that the tp products keep working in future Delphi’s.
I’m using AsyncPro in several projects.
September 30th, 2009 at 5:25 amWow…dreams do come true. I have used and use most all of them except the Async. Let me know how I can help as I am about to upgrade to Delphi 2010.
September 30th, 2009 at 6:16 amHi Nick , what is happening with the TIOBE Programming INDEX , is it strange or what??
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
October 1st, 2009 at 12:10 amGreat news for TurboPower users. I am using Abbrevia! Is it on the top list?

October 1st, 2009 at 1:50 am@ Nick and Julian,
re: SleuthQA
Can’t hurt to ask. Look where it has gotten us so far. 8: -)
October 2nd, 2009 at 4:24 amIf it was open, I dare say there would be some people willing to take a shot at getting it back up to speed.
Isn’t that one based on another program written by a Danish guy that made it once upon a time for Turbo Pascal, I think it was memory Sleuth or something like that.
BUT, THEE WHO SEARCH WILL FIND!
http://www.portableminds.com/presume.htm
The original name was MemMonD
So maybe it’s hope
October 2nd, 2009 at 11:49 amI found the originator, Per Larsen with MemMonD
But my pointer to his homepage has gotten stuck in that spam filter
October 2nd, 2009 at 12:50 pmSeems like blog s p a m filter hage me
October 2nd, 2009 at 12:52 pmSeems like spam filter don’t like.
Have two or three messages stuck by spam filter, btw. who own SleuthQA origin, MemMonD
Please unlock
October 2nd, 2009 at 1:16 pmI tried yesterday to upload more information about editor of SleuthQA, but got stuck in that spam filter.
Seem to be my name that triggers
October 3rd, 2009 at 8:36 amI tried yesterday to upload more information about editor of a popular program here, but got stuck in that spam filter.
Seem to be my name that triggers
October 3rd, 2009 at 8:37 amGreat News.
I am using ABBREVIA, AsyncPro, OnGuard, PLANIT, Systools.
We are upgrading to Delphi 2010.
Let me know how I can help.
October 4th, 2009 at 10:30 amGreat news Nick,
I am curently setting up my environment for D2010 - trying to eliminate old 3rd party components. Orpheus and ShellShock had to go, but i still need Abbrevia, Systools and Async Pro.
OnGuard and LockBox both looks interesting.
+1 in favour of the freedom of SleuthQA
Jan
October 6th, 2009 at 9:19 pmGreat news I use async pro. Have been considering moving away from it because of lack of updates for new versions of Delphi. No coordination of project. Would like to continue using it.
October 7th, 2009 at 5:15 amWe would appriciate an update for ASyncPro AND Abbrevia.
Abbrevia allows us to compress (and decompress) streams in native code.
We do NOT want in have to include one or more DLL´s for that purpose.
We warmly welcome the news about Nick being new projectmaster for all TurboPower products !
October 7th, 2009 at 11:04 pmWould be great to see some support for the old TurboPower libraries. Async Pro is of particular interest to me. Special thanks to Stephen Boyd for maintaining this in recent years, cheers! I’ll be interested to see how you manage a repository with community submissions, hope you can come up with something that (a) gets useful updates implemented ASAP (b) keeps bad code out. Good luck!
Oh, and anyone trying to install OnGuard on D2007 or later needs to put "DesignIntf, DesignEditors" in the places where the package compilation stops (or just remove the conditional define for Delphi 7).
November 9th, 2009 at 4:47 pmI can make do without the other TurboPower products… but I need Async Pro. Been using it since the days of Turbo Pascal
Prefer it for Delphi 2010 too asap.lol. Thanks Nick!
November 10th, 2009 at 7:00 pmB-Tree Filer sees a lot of use here. I know the it is dependent on the size of string[x] as it uses file offsets. This would really help us move to 2010 sooner rather than later because we can at least read filer data and move it to something like Firebird. We use Delphi 2007 right now and love it.
November 17th, 2009 at 10:13 amHi Nick.
When will you open for Subversion support on all projects? Also, when will you update the homepages?
What about InstantObjects? It’s a nice little tool! How about putting some "semi-official" sponsoring to that tool too?
Best regards,
December 2nd, 2009 at 10:03 amBrian Andersen
Will somebody be working on BTreeFiler? I submitted a patch to get it to compile on win32, as well as the start of fpcUnit tests. I’d like to continue that work but would like to be able to commit somewhere.
December 20th, 2009 at 7:45 amOr perhaps the project(s) could be moved to SourceForge’s Git offering, which would make this sort of contribution easier.
December 20th, 2009 at 7:57 am