CTRL+SHIFT+C
zur Verfügung. Die erzeugten Quellen sind aber etwas unbefriedigend. Z.B. lassen sich keine Header über den Funktionen oder Prozeduren einfügen, das gilt auch für die Methoden von Klassen.
Nun könnte man anstatt einfach den Quellcode zu produzieren einen Dialog namens Template-Manager aufrufen, der einem die Möglichkeit verschafft das Template um Header und Macros zu erweitern, die dann automatisch in den Quellcode übernommen werden. Sowas ist bei professionellen Projekten ohnehin Pflicht und ist meistens ne Menge Tipparbeit. So ein Methoden-Header könnte als Macro etwa so aussehen:
Code: Alles auswählen
{---------------------------------------------------------------------------------------
Unit : %UNITNAME%
Class : %CLASSNAME%
Method : %METHODNAME%
Arguments: %ARGUMENTS%
Result : %RESULT% 'nur für Funktionen'
Author : %USERNAME%
Date : %DAY%-%MONTHSHORTNAME%-%YEAR%
Subject:
Comment:
----------------------------------------------------------------------------------------}
Für %ARGUMENTS% wird die Argument-Liste aus dem Methoden-Interface eingesetzt (bei Prozeduren und Funktionen entsprechend), das kann dann noch um entsprechende Hinweise und Kommentare erweitert werden.
Ein Code-Template könnte dann ebenfals durch die entsprechenden Macros erweiter werden. Damit könnte man dann z.B. Konstanten beschreiben oder sogar Zuweisungen zu Variablen oder Konstanten deklarieren (z.B. für ein Error-Log den Info-String zusammenbauen). Etwa so:
Code: Alles auswählen
procedure %CLASSNAME%.%METHODNAME%(%ARGUMENTS%);
const
procName = '%UNITNAME%.%CLASSNAME%.%METHODNAME%';
var
ArgInfo : TStringList;
ArgCount: integer;
LogInfo : string;
procedure CreateArgInfo;
var
info: string;
begin
ArgInfo:= TStringList.Create;
// info:= 'ArgName' + ' = ' + (TypeCast(ARGUMENT)); nur als Beispiel
// %ARGUMENTS%
// ArgCount:= ArgInfo.Count;
end; // of CreateArgInfo
procedure CreateInfoString;
var
i: integer;
begin
LogInfo:= procName + #13#10;
for i:= 0 to ArgCount - 1 do begin
LogInfo:= LogInfo + ArgInfo[i] + #13#10;
end; // for i:= 0 to
end; // of CreateInfoString
begin
{procedure body of %METHODNAME%}
end; // of %CLASSNAME%.%METHODNAME%
Christian ist fast schon überzeugt, müssen wir nur die lazarus-Entwickler noch überzeugen. Aber das Dings hat was, denk ich so bei mir.
Anbei der Manager-Rumpf zur Ansicht als Attachement: