Newsgroup: it.comp.lang.delphi
Titolo: TQueue e un povero rimbambito

Innanzitutto ciao a tutti, a chi mi conosce e a chi no.
Come da soggetto, mi sono imbattuto in questa nuova classe in D5, e mi
sembrava la manna dal cielo... peccato che da perfetto imbecille quale sono
non riesca a usarla.
Mi spiego... io avrei bisogno di una lista dinamica di TPoint, e una Queue
così com'è strutturata mi andrebbe bene, ma c'è di mezzo quel benedettissimo
tipo Pointer che dai tempi del pascal mi affligge... :((
In buona sostanza, io riesco (almeno credo) ad aggiungere una entrata
facendo
iPoint := Point(iStart, iEnd);
Queue.Push(@iPoint);
con iPoint ovviamente di tipo TPoint.
Ma quando tento di fare un
iPoint := aBlocks.Pop;
*ovviamente* se iPoint è di tipo TPoint non compila neanche. Se invece
iPoint è di tipo PPoint, compila ma mi genera risultati sbagliati...
Illuminatemi una volta per tutte su questi stramaledettissimi puntatori, ve
ne sarò grato, altrimenti me ne tornerò al vecchio pascal standard a fare
liste e alberi :)
Jax

iPoint è di tipo PPoint, compila ma mi genera risultati sbagliati...
Il seguente programma, sulla mia macchina, genera i risultati
corretti:
program TestQueue ;
{$APPTYPE CONSOLE}
uses Windows, SysUtils, Contnrs ;
var MiaCoda : TQueue ;
    MioArrayDiPunti : array [ 1..10 ] of TPoint =
    ( (X: 1; Y:-1), (X: 2; Y: 2), (X: 7; Y: 5), 
      (X:-2; Y: 3), (X: 5; Y: 6), (X:-2; Y:-4), 
      (X: 4; Y: 2), (X:-3; Y:-4), (X:-1; Y: 2), 
      (X: 4; Y: 5) ) ;
    I : integer ;
    P : PPoint ;
begin
  MiaCoda := TQueue.Create ;
  for I := 1 to 10 do
    MiaCoda.Push( @MioArrayDiPunti[I] ) ;
  for I := 1 to 10 do
  begin
    P := MiaCoda.Pop ;
    writeln( 'Estratto P(X,Y) = (',P^.X,',',P^.Y,')' ) ;
  end ;
  MiaCoda.Free ;
  readln ;
end.

Scusate, mi date qualche informazione su TQueue? Cos'è una lista FILO ?
Ciao :-)
--
(¯`·.¸¸.·´¯`·.¸¸.-> Andrea <-.¸¸.·´¯`·.¸¸.·´¯)
AntiSpam: rimuovere il trattino basso dall'indirizzo per rispondere
AntiSpam: remove the underscore from the e-mail address to reply

Cos'è una lista FILO ?
Forse intendi LIFO (anche se FILO in effetti è la stessa cosa)... LIFO
e FIFO sono i due metodi con cui puoi gestire una lista: in pratica,
se ho inserito due elementi in lista
1
2
3
in questo ordine (prima 1, poi 2 e 3)
se la lista è FIFO, la prossima pop (che prende un elemento)
restituirà 1, se è LIFO restituirà 3.
(FIFO = First In First Out, LIFO = Last In First Out).
Se vuoi puoi immaginare una lista FIFO come quei distributori
verticali in cui uno prende la roba da sotto, mentre se è LIFO si
prende da sopra :)
Praticamente TQueue e TStack non sono altro che due classi che
implementano rispettivamente una lista FIFO e una LIFO.
Spero di essere stato esauriente... ciao Andrea! :)
Jax

Veramente strano.... praticamente faccio la stessa cosa... non so che
pesci pigliare.
Grazie comunque...
Jax

 (FIFO = First In First Out, LIFO = Last In First Out).
Sì, scusa ho dimenticato una virgola nella domanda: "Cos'è, una lista FILO
?", ho presente cosa sono le liste LIFO = FILO e FIFO... ;-)
Grazie cmq per la disponibilità dimostrata ;-)


Grazie Andrea... č che coi puntatori non sono mai stato un mostro... a
dire il vero credo sia un'antipatia reciproca :)
A buon rendere!
Jax