nunopicado Posted March 21, 2014 Report Share Posted March 21, 2014 (edited) Ora, um truquezito obscuro para inicializar um array dinâmico em Delphi. Claro que só tem interesse para inicializar arrays pequenos e com valores diferentes, mas... type TMeses=Array of Integer; var Meses:TMeses; begin Meses:=TMeses.Create(31,28,31,30,31,30,31,31,30,31,30,31); // Isto inicializa o array com 12 elementos iniciais, cada um com o respectivo valor, pela ordem apresentada Note-se que, embora se esteja a usar o Constructor do tipo TMeses, isto não é uma classe, pelo que não devem usar nenhum Meses.Free; 😛 Edited March 21, 2014 by nunopicado 1 Report "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
thoga31 Posted March 21, 2014 Report Share Posted March 21, 2014 Pena não funcionar com Free Pascal 🙂 Aqui fica um truque meio esquisito para contornar o problema. Desvantagem notória: temos de fazer um overload do procedimento para cada tipo de array. program teste; type TIntArray = array of integer; procedure InitArray(var a : TIntArray; const B : array of integer); var i : word; begin SetLength(a, Length(B)); for i := 0 to Length(a)-1 do a[i] := B[i]; end; var lista : array of integer; elem : integer; begin InitArray(lista, [1,3,5,7]); // The code never bothered me anyway xD end. Importante! Por alguma razão, o tipo de dados do argumento "a" deve estar definido com type pois o FPC vai dar erro caso não o façamos (vou reportar isto como um bug). Knowledge is free! Link to comment Share on other sites More sharing options...
thoga31 Posted March 22, 2014 Report Share Posted March 22, 2014 (vou reportar isto como um bug). O debate subsequente continua aqui. Knowledge is free! Link to comment Share on other sites More sharing options...
Gilson Nunes Posted March 24, 2014 Report Share Posted March 24, 2014 funciona no fpc sim. tanto q uso isso alguma vezes. Link to comment Share on other sites More sharing options...
thoga31 Posted March 24, 2014 Report Share Posted March 24, 2014 Compila com o fpc 2.6.2 e diz-me se dá erro ou não. Naquele caso, o argumento a deve estar declarado num type. Caso contrário, vai dar erro no procedimento setlength. Knowledge is free! Link to comment Share on other sites More sharing options...
Gilson Nunes Posted March 24, 2014 Report Share Posted March 24, 2014 eh, realmente no 2.6.2 não rola mesmo. mas é q eu uso o 2.7.1, como usava isso no d2007, qdo precisei no fpc, ja tava usando o 2.7.1. Link to comment Share on other sites More sharing options...
nunopicado Posted March 24, 2014 Author Report Share Posted March 24, 2014 Então Thoga, já sabes o que fazer... 😉 "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now