Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-10-2007, 21:07   #1
das
Senior Member
 
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1365
[pascal] Passare dei dati alle procedure.

Ho una procedura che deve generare una serie di risultati, facciamo ad esempio i numeri tra due intervalli::

procedure tform.numeri(min,max:integer);
var a;
begin
a:=min;
while a <> max do
begin
a:=a+1
end;
end;

Come faccio a fare in modo che senza usare un array globale, la procedura chiamante abbia i risulati ?

Non posso usare un array o un puntatore dichiarato globalmente perchè quando le procedure sono tante e complesse, diventa molto problematico riusarle in altri programmi facendo un semplice copia/incolla.


Esiste un modo ?

Grazie
das è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2007, 08:53   #2
das
Senior Member
 
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1365
Mi è venuta un 'idea ma non so se è la soluzione diciamo così 'ufficiale'.

Nella procedura chiamante costruisco un puntatore e lo passo alla funzione chiamata.
Questa modifica i dati puntati o ne crea di nuovi e poi ritorna.
La procedura chiamante dispone ora dei risulati, li usa e poi distrugge il puntatore.

A questo punto la memoria si è effettivamente liberata oppure no ?
E' lecito passare ad una funzione un puntatore ?
das è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2007, 15:00   #3
das
Senior Member
 
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1365
Nel caso servisse mai a qualcuno, ci sono riuscito.





type
pQueue = ^tqueue;
tQueue = record
data: integer;
next: pQueue;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var ddd: pQueue;
a:integer;
i: pointer;
begin
i:=Calcola();
new(ddd);
ddd:=i;
a:=0;
while ddd^.next <> nil do
begin
memo1.Text:=memo1.Text+inttostr(ddd^.data)+' ';
ddd:=ddd^.next;
end;
dispose(ddd);
end;

function TForm1.Calcola(): pointer;
var dde,ddc: pQueue;
a:integer;
b: pointer;
begin
new(dde);
b:=dde;
for a:= 1 to 10 do
begin
dde^.data:=a;
new(ddc);
dde^.next:=ddc;
dde:=ddc;
end;
dde^.next:=nil;
result:= b;
end;


Occhio che poi vanno distrutti tutti i puntatori creati.

Ultima modifica di das : 22-10-2007 alle 15:04.
das è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
Elgato Embrace: una sedia ergonomica pro...
Brad Pitt torna in pista: F1 – Il Film a...
Hitachi Vantara annuncia la sua AI Facto...
Brembo passa all'alluminio riciclato al ...
HONOR pronta a sfidare gli iPad Pro con ...
OpenAI esce allo scoperto: confermati i ...
In arrivo altri due prodotti da Apple en...
Il tool per aggiornare da Windows 10 a W...
Rishi Sunak entra in Microsoft e Anthrop...
Porsche in poche ore chiude la formazion...
iPhone 17 disponibili su Amazon al prezz...
La Ferrari Elettrica non è la cau...
Ricarica da record: Zeekr supera i 1.300...
Un 'capezzolo' con feedback aptico al po...
Porsche Taycan Rush a Misano: prima al v...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:47.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v