Liste

4.3.4
Le liste sono una serie di elementi (stringhe o strutture) concatenati tra loro in modo dinamico.
Sono un modo classico di memorizzare dati quando non sia ha un'idea di quanto occuperanno.
Il sistema è molto veloce, ma impegnativo a livello di occupazione di memoria da parte dell'OS.

Stringhe

Un modo semplice di usare una lista è il seguente:
	EH_LST lstFld=lstNew();
	CHAR * psz;
	int i;
 	for (i=0; i<rsSet->iFields; i++)
	{
		psz=strEncode(rsSet->myRow[i],SE_CFORMAT,NULL);
		lstPushf(lstFld,"\"%s\":\"%s\"",rsSet->arFields[i].name,psz);
		ehFree(psz);
	}
	psz=lstToString(lstFld,",","{","}");
	lstDestroy(lstFld);

Strutture

Esempio con una struttura.
	// Creazione
	_l.lstMovi=lstCreate(sizeof(S_MOVIS));
	.
	.
	// Riempimento
	_(sMovi);
	sMovi.idCode=sql_int(rsSet,"IDCODE");
	sMovi.idProd=idProd;
	strcpy(sMovi.szDate,sql_ptr(rsSet,"JM_DATEINS"));
	sMovi.idFigura=sql_int(rsSet,"IDFIGURA");
	strcpy(sMovi.szEan,pszEan);
	sMovi.iQta=(INT) dQta;
	lstPush(_l.lstMovi,&sMovi);
	.
	.
	// Scansione
	S_MOVIS * psMovi;
	SQL_RS	rsFig;
	for (lstLoop(_l.lstMovi,psMovi)) {
	 printf("%d",psMovi->idCode);
	}
Se la lista contiene strutture che a loro volta contengono puntatori a zone di memoria allocata, sarà necessario creare una funzione per liberare le risorse, lstDestroy non può occuparsi di liberare la memoria allocata all'interno di una struttura. Vicevera usando le stringhe non è necessario liberare la memoria allocata
See also:
Easyhand C/C++: Liste | Last modified: 31/01/2019 12.15.52 Europe/Rome | #1.1923
P.. 165
Easyhand C/C++
Una mano alle tue idee.
Privacy Policy