Yesterday I had a question about how to add a method using CodeTools. I
got it working, but I still have a question wether or not I managed to get
it to work in the right way.

I want to add a published procedure. The type declaration is the following;

type TMyMethodType = procedure;

the code is added in the following way:

CodeToolBoss.CreatePublishedMethod(ACodeBuffer,AClassName,AMethodName,
typeinfo(TMyMethodType),true);

This actually adds the property but it looks like this;

procedure MyProc:;  <- notice the colon and semicolon as in a function.

I have used the patch added below to get it to work, but I'm in doubt
wether or not I'm mistaking here. Should I have done it another way? I
believe the patch wouldn't hurt anyway, what is the reason for adding ':'
+ ResultType if ResultType is empty. But as said, perhaps I'm too ignorant
to see how it should actually work.

Another question is, how to create Private methods, is there a way to do
it, or do we need a new implementation?

Darius


Index: eventcodetool.pas
===================================================================
--- eventcodetool.pas   (revision 9470)
+++ eventcodetool.pas   (working copy)
@@ -199,7 +199,9 @@
     SetLength(ResultType,Len);
     Move(TypeData^.ParamList[Offset],ResultType[1],Len);
     inc(Offset,Len);
-    Result:=Result+':'+ResultType;
+
+    if ResultType <> '' then
+      Result:=Result+':'+ResultType;
   end;
   if phpInUpperCase in Attr then Result:=UpperCaseStr(Result);
   Result:=Result+';';


_________________________________________________________________
     To unsubscribe: mail [EMAIL PROTECTED] with
                "unsubscribe" as the Subject
   archives at http://www.lazarus.freepascal.org/mailarchives

Reply via email to