Try initializing the WideStrings
(s1
,s2
,s3
,s4
, and maybe even o
). If I recall correctly, they are dynamic in Delphi and nil (000000000) before you set them up.
+5
A:
MarkusQ
2009-02-25 06:46:30
You rock MarkusQ! Thanks a lot.I would have given you 100 votes if I could. :)
Hemant
2009-02-25 06:56:26
Nice job! That was what I spotted when I looked at it, too. @Hermant: For future use, remember that local vars (declared in a method body) are for the most part (strings excepted) not initialized and can contain anything. Vars declared globally or as member fields of a class are set to defaults.
Ken White
2009-02-25 12:02:06
+1
A:
In addition to what MarkusQ said, note that your memory management of the TValidationRequest
object is not so good. It would be cleaner to use Create(nil)
and then in the finally
-block write FreeAndNil(valReq)
. The way it is now you create one TValidationRequest
object every time you click the button and they will all stay in memory until you destroy the form. At least you won't get memory leaks because you passed Self
to the constructor so at least the form will take care of destroying those objects. In your example there is really no need to keep the object alive after the TForm1.buttonClick
method has ended.
Oliver Giesen
2009-02-25 20:03:11
Fully agree with your point. Actually I created the code snippet for better understanding of the question. It is not part of my production code :)Thanks for pointing out though!
Hemant
2009-02-26 05:06:19