Crea un array
Sintassi
SINT ARMaker(SINT cmd,void *ptr)
Parametri
- cmd
[in] comando richiesto, rappresentato da tre macro: WS_OPEN, WS_ADD, WS_CLOSE
- ptr
[in] puntatore ad informazione diversa a seconda del comando richiesto.
Valori di ritorno
Ritorna un Handle di dove si trova l'array
Commenti
l'array viene allocato esclusivamente in tipo di memoria Heap.
si possono creare due tipi di array: array con elementi di lunghezza fissa o array di stringhe.
la funzione di creazione dell'array avviene in tre fasi:
- apertura: avviene passando la macro WS_OPEN e la lunghezza della stringa. se la lunghezza della stringa non viene indicata, si crea un array di stringhe di lunghezza variabile in cui ognuna terminerà con zero.
- WS_ADD aggiunta degli elementi (elemento puntato da ptr)
- WS_CLOSE chiusura con ritorno dell'handle dell'array.
In fase di chiusura se viene passato un argomento in ptr, questi sarà il nome assegnato alla memoria e la funzione ritornerà l'handle della memoria contenente l'array.
L'array è ottenibile quindi usanto memo_heap() dell'handle ritornato; in questo caso l'handle dovrà essere liberato usando la funzione memo_libera().
Nel caso si passi nulla come nome della memoria (ptr=NULL), la funziona ritorna direttamente il puntatore all'array che andrà usato con un casting (Esempio ar=(EH_AR) ARMaker(WS_CLOSE,NULL);)
In questo caso la memoria impegnata dovrà essere liberata con EhFree(ar).
Non è possibile usare un richiesta ARMaker all'interno di un'altra richiesta, la funzione non è compatibile a programmi ricorsivi o multithread usando una struttura statica all'interno.
In caso di necessità usare ARPtrMaker o ARPtrMakerEx()