How to ad a TGUID/TSMARTGUID Generator?

I took the freedom to extend Wagner's example to only change ID fields that are called "GUID" - maybe useful for users, who do not exclusively use GUIDs for PKs. (Note that there was a subtle small bug in Wagner's original script)

//SmartGuid for all GUID-type ID fields   
  for i := 0 to Args.CodeType.CustomAttributes.Count - 1 do
  begin                                                      
    LAttribute := Args.CodeType.CustomAttributes.Items[i]; //missing [i] in original script
    if (LAttribute.Name = 'Id') and (LAttribute.Arguments.Count > 1) then
    begin                                                         
      LIdName := TCodeSnippetExpression(LAttribute.Arguments.Items[0].Value).Value;                                       
      if UpperCase(LIdName) = #39'FGUID'#39 then         //important: there are quotes around the value!   
      begin
        TCodeSnippetExpression(LAttribute.Arguments.Items[1].Value).Value := 'TIdGenerator.SmartGuid';
      end;   
    end;                                      
  end;  

Regards
Olaf Monien

1 Like