Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete implementa due bracci estensibili, per spazzola e moccio, che si spingono ben oltre quanto visto sino ad oggi permettendo una pulizia di casa ancor più capillare e precisa
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
La tecnologia SQD-Mini LED di TCL arriva sul taglio da 65 pollici con la serie C8L: 2040 zone, pannello WHVA 2.0 e un picco che alle rilevazioni delle sonde tocca i 4400 nit nel profilo Filmmaker e un HDR quasi perfetto
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
Wireless 2.4 GHz, Bluetooth 5.4, cancellazione attiva del rumore, design pieghevole e un'autonomia che mette in imbarazzo prodotti che costano il doppio. Le Maestro 500 non eccellono in nulla, ma offrono tutto. E a questo prezzo è difficile chiedere di più
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: 1388
[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: 1388
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: 1388
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


Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
Kobo Clara Colour in offerta a 138,51€: ...
Qualcomm potrebbe lanciare 6 versioni de...
Google, per contrastare la crisi delle m...
NASA e Relativity Space uniscono le forz...
watchOS 27 non arriverà su modell...
Apple, definiti i piani per i chip futur...
Ancora tagli nel futuro di XBOX: il caso...
Samsung Galaxy S27, il compatto potrebbe...
Sempre più IA nei videogiochi: con PUBG ...
La NASA avrebbe fermato i lavori sul mod...
Mancano pochi giorni al lancio della mis...
Prime Day in anticipo, giorno 7: tempo d...
Lo smartphone HONOR con batteria da 11.0...
Amazfit Bip 5, Active 3 Premium e Balanc...
Xiaomi potrebbe portare i suoi Pro e Pro...
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: 07:58.


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