Changing the world one line of code at a time...
<a href="http://www.borland.com.sg/delphi_net/index.html">Nothing?</a>
Hi Craig, When I say "support", I don't mean an URL link or something. And when I say nothing, I refer to events, functions, announcements, or schedules.
I was actually trying to see if anyone would respond to me. Hehe, actually, thanks for pointing out my mistake.
Delphi Forum
what a bunch of drivel you wrote there!
And which part is drivel?
Maybe interesting. Borland New Senior Appointments in Asia Pacific http://www.scoop.co.nz/mason/stories/SC0402/S00030.htm
Hi, The code u wrote doesn't work good save stream/serialize all the data about the button. Data like position, size, events are not saved. This code only works when u use a TButton component and not a winform Button.
how do i turn my idle message back on?
You're not asking about the software I've written. Therefore, I cannot help you.
Override TPersistentHelper.DefineProperties and you'll be fine.
Where on earth did you did that up? ;> A Delphi newsgroup post I suppose. When did I post that? I honestly can't recall if it was weeks or months ago. Thanks for the post, -Danny
good
Hopefully, if you have RSS feeds, they have given us a TRSS class that utilizes it as one of the patches.
string _filter = string.Empty; for(int i = 97; i < 123; i++) { _filter = _filter + " name not like '" + ((char)i).ToString() + "%' and"; } _dv.RowFilter = _filter + " showinindex<>0";
Thanks for your tip. What's showinindex? I can't find any reference to it.
Nick, I wasn't complaining in this instance. I was "noting".
"Well, the source codes in the RTL had some class operators stuff, but there were no class operator demos shipped with the product." Unless you count the VCL for .NET source code, which has many.
Come to think of it, I guess that's what you meant!
FTR, it's just "Kelvin" (K), not "degrees Kelvin" (°K)
Thanks for the correction, John. Do you have a blog?
I see your using .Text, what did you have to change to pull this off?
Thanks for the details.
Hi, > consider using {$FINITEFLOAT OFF}. This is the default. This can be misunderstood - the default is {$FINITEFLOAT ON} - as you say in the top table.
Thanks for your feedback, Hallvard. I have updated the article accordingly. I am a poor writer, and I hope you will continue to provide any guidance if you deem it necessary.
I want
What's the point of duplicating resources unless I can put a new spin on it? Nah, I think you did the article enough justice. Anyway, by "not blogging about it", I meant, I won't add my own spin on it. ;o)
"Delphi is the only .NET language in the world " Besides VC++.NET :)
Try this: procedure Test;winapi;external 'somedll';
It allows a Delphi 8 application to call a function exported by a Win32 DLL. I created a Win32 DLL in Delphi 7, and called functions in that DLL from a console application compiled by Delphi 8.
Is "winapi" any different than calling a Win32 DLL using PInvoke?
How about moving your main unit initialization code invoker into a subroutine? Set a static reentry flag for your initialization code to indicate if its called recursively, and, if yes, just return (that's, exit, in Delphi) immediately.
That's a no-no, because if that were done, then all Delphi 7 Control Panel applets would have to be re-written just to compile with Delphi 8. I am investigating other options at this moment.
Check out here, Robert. http://www.microsoft.com/windowsxp/64bit/downloads/upgrade.asp And thanks for saying I'm a smart guy in your blog. ;o) I just have some time to spend. Ain't really that smart.
Thanks for the pointers, Joe. The information provided would be useful when I'm writing services. Based on your comments, I'm thinking whether you're mistaking a control panel applet for a service applet?
Delphi's begin/end instead of { } makes it so horrible for few people like me that No Thanks. C# 2.0 certainly adds some ugly things, but it's still more pleasing to my eyes than many other languages.
.NET will own the 64 bit Windows platform, because .NET code is more compatible between 32 bit and 64 bit than native Win32 code is compatible with native 64 bit code. Borland should conserve its energy and focus on making great .NET tools. Ignore native 64 bit.
Assigning a method pointer to a global routine isn't allowed in D7, but D8 currently permits it: SomeObj.FOnSome := OutsideSome1; This is most probably because in D8 global routines are implemented as static class methods of the compiler generated Unit class, and .NET delegates are compatible with both instance and static class methods (where the instance part is nil). AFAIK, this is considered a bug in the D8 language, and might very well be disallowed in a future version.
;o) Hallvard, thanks for your reply. Your reply also made me realized I should have written SomeObj.OnSome, instead of SomeObj.FOnSome, so I've updated the article, and I've taken the liberty to update your comment. Well, look out for more undocumented language changes articles. ;o)
Lifetime management of interfaces is very different in D7 Win32 and D8 .NET. So the old trick og using interfaces to automatically perform resource cleanup no longer works in D8. On .NET the GC is responsible for cleaning up all objects, inlcuding those referenced by interfaces. There is no reference counting going on. D7 has compiler magic to automatically maintain the interface's reference count and to free the implementing object (via _Release) when the last reference is removed.
It's a pity that the Delphi Team didn't implement interfaces cleanup, or reference counting on Delphi 8, so now, that's one more $IFDEF to handle for the .Net platform. Also, the weakest thing on the Delphi product has always been the handling of $IFDEFs. Since when could the IDE (editor, or whatever) handle $IFDEFs properly? Either it couldn't insert stuff in the right location, or something.
Robert, I doubt aggregators implement these two features as mentioned in the URL.
FeedDemon minimizes blog server load by sending the HTTP IfModifiedSince request tag, and it also honors the <skiphours> and <skipdays> tags. http://nick.typepad.com/blog/2004/05/rss_readers_and.html
First, if you want people to discus the results of your code, you should post the results. Don't make people wonder what your point is. Introducing reference counting into the .NET environment would be disasterous. Nothing in .NET would know about the reference count semantic, so it would be completely unreliable. Reference counting techniques also suffer from circular reference headaches. .NET's GC does not. What you're pointing out is a change to the underlying implementation, not the Delphi language. The Delphi language rules for interfaces are the same in D7 and D8: That interfaces will be disposed of automatically when they are no longer referenced. In D7, that's implemented using reference counted codegen. In D8, that's implemented using .NET GC services. Your destructor code is the anomaly in .NET. Be glad that we still compile it at all.
How would implementing either skiphours or skipdays help? This guy is still monitoring my blog every 2 minutes, for any given hour. Besides, anything that I do with ttl, skiphours or skipdays will potentially affect every news aggregator (that supports / honours them) that's monitoring my site. I finally got irritated with this guy enough that I put in an IPSec policy to block the IP address, because IIS Directory Security would still log 720 counts of HTTP 403 every day.
Thanks for your advice Danny. It's very much appreciated. I will endeavour to apply your advice to future articles requiring discussions.
It's because variable "A" is of type DateTime and and the procedure FillChar is epecting a variable of type TObject. The other case compiles but I don't think that it will work because it will only be able to alter a local copy of Obj, it will not pass back the sender's Obj filled with zeros. Better would be to declare the procedure as FillChar(Obj: TObject; Size: Integer; Ch: WideChar) as Borland does in D2-D7.
It will be very important for many of us to utilize more than the 2GB application limit available to 32 bit microsoft systems as soon as inexpensive and compatible 64 bit systems become available from Intel and AMD. Intel will be forced to implement the same technooly as AMD as soon as Microsoft releases its 64 bit extended version. If you struggle to run your applications in 2GB limit, like we do, the interim solution would be to run windows 2003 server 32 bit, where you can extend the amount of available memory to 3GB. Read this: http://support.microsoft.com/default.aspx?kbid=810371 .NET managed code is a bad choice for power applications that need a native mode.
MemCheck is great. So is madExcept, for tracking exceptions. The only caveat is don't try to use them together. You can use them both. Just not at the same time. 8:-) HTH, Brad.
Thanks for the tip Brad. Much appreciated. BTW, JEDI also provides an Exception Tracker. The most visible instance of the JEDI Exception Tracker is in Borland Delphi 8.
Haven't you created a fix yourself at http://www.vergentsoftware.com/blogs/ckinsman/PermaLink.aspx?guid=2a268197-fe21-4e41-8cfd-ac9067b9a33c ?
Running debug mode shows that Response.Cookies[Request.Cookies[i].Name].Value = ""; actually add a new cookie to the Request.Cookies collection. Hence the infinite loop. Obviously a bug.
Hey, I only spent about an hour on this, not a whole day. Get your story straight man. Chris B
Well, that was from Kyle Miller, not me. I just took the posting from the newsgroup.
:-)) Chris works with me. He thought I was talking about him. We cleared it up at work today. I didn't even consider the time he spent on it. I was talking about two other programmers. Nonetheless, the story remains the same.
For completeness, I feel I should give my followup newgroup post. -------------- What is showed was the speed in bringing mature, tested code into a new environment. The C# whiz probably could eventually get it right, but at what cost? The cost of time, which we had none of since the customer was promised the product 2 days from that point, and the cost of developer's effort, which could be better spent tidying up the loose ends in the new product. Delphi 8 got us from point A to point B because the company chose wisely 10 years ago by choosing Delphi. The return on investment keeps on giving. Same for VC++ or VB? Well, not my concern. We have none of that. :) This was not a commentary on C# or the whiz. Both, I'm sure, can accomplish encryption and decryption.
If I didn't have to deal with 10 year old Delphi code I would have used the Encryption classes included in the .Net framework and moved on to the next thing. This not being a perfect world, I must learn to play nice with the myriad of code that exists in our shop. I will admit that it is very nice that the Delphi stuff will compile into .Net assemblies that can be easily included with our new strategies. As for the company choosing wisely 10 years ago...I doubt that it was a strategic decision that was labored over. Knowing what I know I would put say that it was a financial decision that was based on the cost of the product. Did it turn out to be a good decision? Probably, but the constant struggle to find good developers who are still willing to write Delphi code for a large legacy application may spell the end for much new development in that language. Don't get me wrong - Delphi is a powerful tool that has been well maitained by Borland but the lack of enthusiasm for the product by seasoned developers is something that we have to look at when deciding how to move forward.
I would like to add some commentary on Delphi - it's OK.
Hmm.. would advice all to think twice before joining NCS as contract staff.. perhaps I was unlucky to join a not so good site that time, but really think twice.. and ask around ur friends and relatives for opinions/feedbacks first ;) Good Luck!
If every day was day 1 on a project, I am sure different decisions would be made. Fortunately, code is written and then released without waiting for what's 10 years from now. The question is what will the ROI be for a chosen tool. If you invested in VC++ or VB, you have some real conversion hurdles which don't exist in Delphi.NET. This is due in part to a poor solution from Microsoft in the first place. But people kept investing VC++ and VB for enterprise applications because "it's Microsoft." No one has ever been fired for buying IBM... oh wait, different era. :-) It's harder to find Delphi developers because Delphi developers say it's harder to find employers. Why the two can't meet? I don't know. Yes, C# and .NET is the latest hot and sexy item on the market. All languages have had their time in the sun till the next best thing comes a long. The emotion of this moment should not affect long term decision, which is what tool to invest in. You can't say, "Well, it's Microsoft. It's solid." The track record has proven otherwise. Again, Chris, you are not the other guy.
About Delphi 7.1 Update Pack I have problems with dbExpress after install this pack. Any news about this ?
This has nothing todo with generics. These are called meta-classes.
You forgot one: 0. Classes that implement IEnumerable or the enumerator pattern.
Oh yeah! Article updated. Thanks, Danny.
Thanks for the advice. I'll try to see if I can update the files to contain a TTL tag.
Yes, I'm interested in a native Delphi64 compiler and I will buy it NOW!
You have found a truth about Delphi. I rememeber interviewing Delphi developers that could not explain the differences in the 4 parts of a class interface... and that would be our first question. Using and knowing how to use Delphi effectively is a big difference.
Hi I wanted Update The Delphi 8 , And Work .NET . Please Help Me For This Work ; Tanks . Kumars Shojaeei
In some of the consultation I've done with companies in Singapore, certain Delphi developers don't know that the IDE can load multiple projects. Most Delphi developers I've met don't know how to activate/use Code Completion, code navigation, etc. And of course, most developers I've met dumped all their declarations into the public section of classes.
I think you might want to use a JPG next time. That image is distorted. Small and clear beats large and blurry :p Borland Delphi is a great tool for RAD development, it gets people coming from practically any language up to speed and building applications in no time at all. Ideals such as OOP are secondary nowadays (except for component builders, library coders, etc). You must get applications built and out the door! I suppose most technologists saw it coming a few years ago when tools like Delphi and Visual Basic started becoming the mainstay of corporate development, RAD would kill paradigms like OOP.
Chris, the image itself is clear and complete. In fact, it's a full screen image. I deliberate changed the IMG's WIDTH and HEIGHT to something like 90%. For complete and clearer images, check out "My RSS Reader" gallery at http://chuacw.hn.org/chuacw/gallery/66.aspx
Nice trick. I've used somethiing similar earlier, hooking AssertErrorProc and using control characters in the assert string parameter to overload its behaviour. To improve your trick further, you could even surround the DoSomethingOnlyDuringDebug declaration with an {$IFOPT C+} check. This way code that does not follow the docs and surround the call within an Assert will fail to compile (assuming you do a rebuild after switching the Assert option).
Robert, I know it's a dumb idea not to support skipDays, skipHours, and ttl. I desired to implement it, however, I do not want to put in code that I've not fully tested even though "My RSS Reader" is completely my baby. Sometime in the near future, I'll upload the entire "My RSS Reader" project to CodeCentral, including the components I've used/developed during this project. There won't be a Kylix version of this project. In Borcon 2004, there's no mention of CLX or Linux at all. While I do have a laptop running Solaris (which supposedly can run Linux programs), I've no desire to run "My RSS Reader" on it.
I agree with Screber. If it was generics, the CreateControl function would have a return type unkown to the function. It wouldn't be need to cast the result to get the real type that you create. The way it was done in the example requires posterior casting if you want to access a method or property that exists only in the descendent class.
Do you guys have to be so "literal"? I know specifically what the term generics mean. I also know generally, in English, what is done is generic. Note that in my post, I did not specify what is done in Delphi is called generics. I just said that you can instantiate an object.
Class references are a form of generic type. It's not as wide open as full generics, but it performs many of the same functions: allowing you to construct and manipulate types without knowing the exact type at compile time. As for the comment about the function result, even a fully generic implementation would still have to have a common base type, whether it is generic or not.
Well, I was investigating using CrossKylix a while back, but after following the instructions, it didn't work for me. Otherwise, I might have written a version which could compile [note, I didn't say run ;o)] under Kylix.
Hi, I am very much interested and I already sent my profile to you ,but you have not replied me yet . Please let me know the outcome ASAP. Regards, Nainar Mohamed.
Check the Borland site.
Thank you for your comments, Danny.
I am interesting in your “My RSS Reader” too, can you send a copy to me?I want to join the test too! my Email is aiirii@21cn.com !!! Regards, Ari
Thanks for your interest and following this blog. A copy of My RSS Reader 0.93 has been sent to you.
I am also willing to test it - if you still need tester :) peter [at] jausovec.net
They better hurry with 64-bit compiler otherwise we will just switch to other language...
No problem!
When I run the program, I get a runtime error 217. I'm on W2k if that helps.
Robert, I mentioned in another article that source will be available on CodeCentral in the future. Peter, How did the error occur? Please provide more detail. Also, what numerical time zone are you in, in terms of GMT?
> How did the error occur? Please provide more detail. This comes up when I double-click the exe: --------------------------- MyRSSReader.exe - Application error --------------------------- Unknown exception (0x0eedfade) at address 0x7988e592. --------------------------- OK Cancel --------------------------- ...and then: --------------------------- Error --------------------------- Runtime error 217 at 00409162 --------------------------- OK --------------------------- The app terminates after that, never showing the main form. > Also, what numerical time zone are you in, in terms of > GMT? GMT + 1 (Sweden)
Anything but MSI. *shudder* Did you try Nullsoft Scriptable Install System? http://nsis.sourceforge.net/
Yes! We are very intersted in a native Delphi64 compiler! We absolute need "native mode" for our complex apps. They're too slow in .net managed code...
InstallAWARE should be enough for my installation needs, so I've not looked at NSIS. InstallAWARE is pretty great, and uses a Delphi metaphor in development of the installation.
dear sir
Yes interested, we write services using Delphi as well as standard apps. When servers and clients start going 64bit we'll need Delphi64. On the remark " Rephrase the question: how many of us trust AMD (64)? Right. Not me. Better put the effort in Mac support or something. " Mac support fair enough meant to be excellent processor and OS, but AMD 64 trust ? Yes too right their processors have been wopping INTEL for ages and MS have been testing the AMD 64 prior to the INTEL 64 of late.
I don't care for advocacy groups. To me, it's just a sign of something that's dying and a small group of people standing over it with a defibrillator...
Download the Tablet PC SDK first, as the Recognizer Pack won't install without the SDK loaded. I believe this would severely limit the ability to deploy this functionality to Windows 2000/XP clients, as I'm not fond of installing a SDK on our client's computers. Kinda defeats the purpose of "SDK" - I should be able to deploy software without deploying the SDK. I wonder if Microsoft would be willing to find a solution or if they want to limit the functionality to Windows Tablet PC and developer's machines only.
Here I go, talking to myself again. The SDK does have a "Redistributable Merge Module": "Install the redistributable version of the Tablet PC Platform runtime, which can be included in the setup for software you release." I wonder if this runtime is enough to satisfy the Recognizer Pack's requirement. Hmm....
Launch and they don't even announce it in their website. Or in the newspaper. Where's the buzz, Singapore?
That's funny, when I last saw Kaster at a BorCon, he looked like a grunge rock singer.
That's John for you, BRTM and ARTM. ;o)
MY GOSH! i just spent a extra hour in class because of this!!!!!!! i almost failed a test!! >o(
I have done the above. I tried to import the Microsoft Ink as an ActiveX. It went OK until I tried to run my program when it created an exception. EOLEError Could not obtain OLE COntrol WIndow Handle
Have you installed the SDK and the Recognizer Pack? I got my first ink recognition app running after an hour or two. I believe Jon got his done too. Perhaps you can share about what you've done?
Hey, i want to have Redistributable Ink to HandWrite messages for MSN. Does anyone know where to get it?
These features *are* documented.
My company makes CAD software and the native 64 bit Delphi compiler would be a must for us.
Native code is a must for most large organizations. .Net code is too slow for most complex operations we perform and we would most certainly be interested in the benefits of 64bit. The tale of AMD being inferior to Intel is no longer correct, the two companies BOTH make great processors and the sooner we start supporting them both, the sooner the tools will be available to us to take advantage of whatever "features" each of them chooses to deploy. I say let's forget about the past and move forward into a faster and better future, go 64Bit....
I am dying to see the 64-bit compiler, really. I am developing audio (digital signal processing) applications and 64 bit processing would be great :)
Could you drop this onto a delphi project for me? I'm not familiar with the TIdSNMP, TIdIcmpClient classes/components. The concept looks very elegant-- just have it grab the data and assign it to a label. Nice! Any help would be great, as I don't have the time to sit down with this and completely go thru it, but it would be very helpful to us at our ISP.
i would like to develop an anti-bot software that battles bot's and/or cleans them out of chat rooms. Maybe develop a protocol that prevents botting with a human input needed?
I have been using this Lib http://www.deepsoftware.ru/rsllib/index.html looks like you are doing the same.
Thank you for pointing out and sharing your experience. What do you find you like about rsllib, and what don't you like about it?
I need help with Indy SNMP Client. Cant get anything to work, like how to "connect" the .mib-file to my project. If U can help me in any way, got a demo code or some tips, please email me: bjorn.persson.272@student.lth.se thx alot /Björn
64 bit will be very very great fo >2Gb process. This will allow a new way of programming like 16 to 32 bits. If Borland doesn't make any delphi release in native 64 bit code I will have to change of complier.
I don't want to change Indy because by doing so, I'll have to distribute my changes or instruct people how to change Indy.
Thanks, William. The issue isn't breaking it down. The issue is how to break the news to those who take me for granted.
why would anyone want to build something like that? It's like trying to force a 8 lane freeway into a 2 lane access road and then reconnecting the freeway again? Regards Chris
Secure business environment. They cannot change the PCs, but they can attach equipment to it. Besides, these PCs are running NT 4.0 (still?!) and cannot use USB devices. Though there are USB drivers for NT 4.0, these drivers cause system instability when tested on other NT 4 machines elsewhere (ie, not within the same environment).
Where can one download your expert ? It looks great..!!! Regards Andrew
Andrew, it's not generally available yet. But if you want to beta test, please specify which version of Delphi and service packs (if any) you're using, and your email address. I'll send it to you.
Would love to give it a test run.. Delphi 2005 Architect + Latest Service Pack. Email: andrew@castlesoft.com.au
I had to add idStack to the uses clause to get this to work. I also added a tidSNMP and tidDNS which added some other indy units and let it work. Randy
thanks for you
Have you read up book crossing then? The person who picks up a bookcrossing item is supposed to register at the web site. Hence, you'll be able to track all the history, and whether the last person did indeed bookcrossed the book.
Is there no way to get everything working without saving the HTML to disk?
Hi, I just shot you an email in regards to this. Please reply to it. Thanks, Adnan
Hello, Would you mind telling me if this offer is still around? Thanks, Adnan
i'm interested in win64, and i'll even preorder it if necessary. that's how bad i'll want to get a copy. i believe borland going the .NET route is one of the worst decisions they ever made, but then again i'm just not interested in .NET
A month ago, I introduced the Productivity Experts . Since then, I'm glad to report that I've
Good luck in the new job, young man! :-)
Continuing from my Adventures in translating Java to Delphi.NET: Part 1 article... In translating Java
I always use a patch by http://www.mess.be called called Mess Patch. It has more options than just removing the ad, so I have my own little Windows Live Messenger Light.
I completed the console prototype for the SongFinder during the previous hour. Total time spent: 3.5
its = belongs to it
it's = contraction of "it is"
Thanks Craig. I've fixed the mistake. :-)
Over the weekend, I found the screen timeout feature of the Android a source of frustration. Why did
Pingback from Embarcadero Lets All Be Positive - Page 2 | keyongtech
In the two comic viewers , portions of the application retrieves images from the web in the background
Nearly 5 years ago, I wrote an ink recognition demo and placed it on CodeCentral . It was only recently
Some time ago, I mentioned that I took up a counselling course . Tonight, we begin the study of ethics
Fix for Android 2.3.3 Blank Screen issue as documented here - Issue 15135 : 2.3.3: Blank screen when
Recently, I downloaded the game MouseTrap to my Android phone. While playing the game, it provided an
Within a Community Server blog, there is a list of blog entries. Sometimes, it is not easy to know which
In a battle to get Google AdWords to refund me about US$3-US$10, I am using social media to assist me
I began the design of my web site with a few goals. They are as follows: One main page One contact us
Nice one.
I think you (being a seasoned coder), can think of the contract like making sure your code is sound.
1) Catch all the exceptions,
2) Make sure the boundary values are well defined,
3) make sure no overflow, null pointers...and
4) don't forget your semi-colans, or else you will be hunting for the errors for a long time! :)
Im sure you can find more such similarities between coding and contracts :)
To get access to the Aztech DSL1015EW(S) console, you need to have a SSH client, for example, putty
I tried your method and it didn't work. Either something I missed or the new firmware doesn't take a blank password field.
Anyway, I did something based on your method but instead of a blank string for the password, I used the string from my singnet ID (also inside the XML config script). I substituted the string for the AdminPassword and it worked like charm. You see, singtel is stupid enough to provide us with the default password to the SingNet ID and the conf file has the encrypted/hashed string.
In the blog post Tunnelling RealVNC over a firewall with OpenSSH , I shared how I used SSH to carry VNC