inicial"200" sera ignorado, assim que utilizamos out a variavel assume ovalor default de seu tipo, se for uma por ex. string ficara vazia (Em tese).Parametros com valor DefaultUma das possibilidades que possuimos ao construir umprocedimento ou funcao e atribuir um valor pre definido para um determinado parametro,isso faz com que a atribuicao de um novo valor a esse parametro seja opcional,mas existem algumas ressalvas, os parametros que possuirem um valor predefinido (Default) devem ser sempre agrupados o mais a direita possivel dos parametrosque caracterizam o metodo, nao e possivel utilizar esse tipo de passagem devalores com parametros pre definidos misturados com outros obrigatorios,vejamos alguns casos.Sintaxe procedure CalculaImposto(AValorImposto: Currency = 200);Mas e se tivermos 2 (Dois) ou mais parametros? procedure CalculaImposto(AValorImposto: Currency = 200;AImposto: Boolean; ANomeImposto: string = '');Essa forma e errada, pelo simples motivo que o compiladornao ira conseguir definir se na chamada da procedure CalculaImposto os parametrospassados estao errados levando em consideracao sua "tipagem" ou sedevem ser ignorados devido ao valor default.Exemplo: CalculaImposto(True,'ISS');Nesse caso o Delphi acusara erro, devido o que foi faladoacima, o certo entao e declarar os parametros com valores pre definidosagrupados a direita. procedure CalculaImposto(AImposto: Boolean; AValorImposto: Currency = 200; ANomeImposto: string = '');Assim nossa chamada de funcao fica dessa forma: CalculaImposto(True);E os parametros AValorImposto e ANomeImposto, recebemrespectivamente o valor "default" atribuidos a eles.Classprocedure e Class FunctionQuando criamos uma classe e programamos alguns metodos, e notorioque para utilizar estes metodos seja necessario instanciar a classe em questao,se isso nao ocorrer, nos teremos o fatidico erro "Acess Violation atAdress xxxxx", acontece que a class procedure e class function servemjustamente para isso, elas anulam a necessidade de se instanciar a classe paraa utilizacao desses metodos, assim, nos podemos chamar o(s) metodo(s)diretamente sem instanciar a classe atraves do create.Primeiro modo (Sem class)var Objeto:TPessoa;begin Objeto := TPessoa.Create; if notObjeto.ValidaCPF("CPF em questao") then ShowMessage('CPFInvalido'); Objeto.Free;end;Segundo modo (Com class)begin if notTPessoa.ValidaCPF("CPF em questao") then ShowMessage('CPFInvalido');end;E notavel a diferenca entre um e outro, em outras linguagensesses metodos sao conhecidos como statics, e um pouco dificil reparar autilidade disso logo a primeira vista, isso acontece pois o Delphi derivado pascal, possuindo assim procedures e functions separadas em units, o queelimina de certa forma a utilizacao de metodos statics em boa parte dos casos,mas nao todos, a questao e que o metodo static tras duas principais vantagens: 1-Organizacao dos metodos por classes e nao por units 2- ACerteza de onde o metodo veio ao utiliza-loQuando utilizamos a divisao por units (Nao que seja ruim),temos um pequeno problema que torna-se gigante ao passar do tempo, boa partedas procedures e functions, ficam perdidas dentro das units, chega um pontoonde nao sabemos mais de onde veio aquela rotina (Vamos pro POG! Declare todasas units no uses uma deve ter a rotina em questao).A utilizacao de class procedure e function tras algumaspeculiaridades em relacao a utilizacao da classe, a primeira de todas e maisobvia, e que nao e necessario instanciar a classe em questao, a segunda e queos metodos statics (class) nao podem acessar variaveis de dentro da classe declaradasno Private,Public etc..., isso acontece pois nao existe garantia que a classeesta