Newsgroup: it.comp.lang.delphi
Titolo: restituire un array

Salve a tutti,
mi sono appena scontrato con un problema probabilmente dovuto alla
scarsa documentazione in mio possesso.
Vorrei creare una funzione che restituisca un array, ma non riesco
neanche a dichiararla senza ottenere un errore di sintassi.
Una roba tipo:
function Pippo(a: array, n: integer): array;
In pratica ha le stesse caratteristiche della funzione Copy (accetta
un array qualsiasi, lo elabora e restituisce l'array elaborato).
Suggerimenti?
- Mariano La Via.-

 ha scritto nel messaggio
news:5i8a1t4nt38ehobad...@4ax.com...

type
  TMyResultArray = array [1..3] of integer;
.
.
.
.
.
function TForm1.MyFunction: TMyResultArray;
begin
  Result[1] :=1;
  Result[2] :=13;
  ..
 ..
end;
ciao
gabriele

 un array qualsiasi, lo elabora e restituisce l'array elaborato).
Non so quale sia il principio di funzionamento alla base di Copy ... l'unico
modo che penso possa aiutarti è quello di utilizzare un Variant Array (cioè
un array composto da tipi "adattabili"), ma è piuttosto dispendioso in
termini di risorse, inoltre il Variant è sconsigliato se non per situazioni
particolari (vedi OLE).
Per quel che riguarda la restituzione di un array puoi sempre passarlo per
riferimento.
Procedure ArrayModifier (var AnArray : Array of Integer; n : integer);
var I : Integer;
Begin
  For I := Low(AnArray) to High(AnArray) do
      Inc(AnArray[I],n);
end;
Ciao!
--
- Carlo -
c.b...@libero.it

modo che penso possa aiutarti č quello di utilizzare un Variant Array (cioč
Non serve.
Basta dichiarare un tipo nuovo (array, chiaramente).
--
Andrea Laforgia (ICQ 87230455)
"programmatori si nasce, non si diventa".

end;
Hmm, se funziona con gli array dinamici direi che va bene...
- Mariano.-

 Basta dichiarare un tipo nuovo (array, chiaramente).
Non ho capito cosa intendi. Anche quando dichiaro un tipo nuovo, se è array,
devo specificare il tipo dei suoi campi.


end;
Ci avevo pensato, ma mi ero incuriosito proprio sulla questione della
funzione di tipo array, visto che nel linguaggio ne esistono gia'.
Bye.
- Mariano.-

devo specificare il tipo dei suoi campi.
type TArray = array [0..9] of Integer ;
function MiaFunzione( A : TArray ) : TArray ;


devo specificare il tipo dei suoi campi.
Ho riletto il messaggio originale.
Si', in effetti, non conoscendo il tipo degli argomenti, e' bene usare
un array of const.


 funzione di tipo array, visto che nel linguaggio ne esistono gia'.
Si, anche io ne ero incuriosito.
Ricordo che tempo fa (si parla ormai di un anno fa ... se non di +) se ne
era parlato (sui NG di Cantù), c'era (se non ricordo male) un riferimento
allo stack per realizzare quanto richiesto. Non vorrei essermi confuso,
sinceramente non seguii con troppa attenzione quel thread
Ciao!


  Result[2] :=13;
di gabriele santomaggio
lo uso anche io.
--
 _______________________________________
        Gnaffy SoftWare
   web: 
http://gnaffy.tripod.com/
   e-mail: Gna...@Wappi.com
   e-mail: 
bmq...@tin.it
   ICQ#: 76488613
 ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

>function Pippo(a: array, n: integer): array;
Beh cosi' non funziona.. al massimo dovresti mettere array of Tipo; (che
comunque non so se va..)
Molto meglio dichiarare un tipo
Type TMioArray=array [1..10] of integer;
function Pippo(a: array, n: integer): TMioArray;
Altra soluzione: usa i puntatori: crei un tipo PMioArray puntatore di
TMioArray e fai tornare quello alla funzione, che e' anche un metodo piu'
veloce..
Altra soluzione: puoi usare gli array dinamici, per i quali ti rimando
all'help
ultima soluzione: se la procedura modifica l'array stesso che gli passi tu,
puoi passarle l'array come parametro var:
Procedure Pippo(var ArrayCheVieneModificato:TMioArray);
ciao !                    {MSX}

E' possibilissimo che l'array restituito sia un array of char.
Copy puo' agire su QUALSIASI array.
Il secondo caso e' lo stesso della funzione Slice.


ue' emmeesseics!
e' un po' che non ci si sente! ;)
indovina un po' cosa ho trovato mentre sfogliavo la mia rivista
preferita (TGM)??
volevo farti pubblicamente i compliemnti per il giochino,
e' mooolttooo professionaaaleeee!! ;))
Ciao!
Alan