Per farti capire con un esempio, puoi ordinare quel vettore con
codice:
DWORD _stdcall ArrSortVS(SAFEARRAY **psa)
{
LPCSTR HUGEP *pStr;
HRESULT hr;
LONG e, els;
if(SafeArrayGetDim(*psa) != 1) return(1);
hr=SafeArrayAccessData(*psa, (void HUGEP* FAR *)&pStr);
if(FAILED(hr)) return(2);
SafeArrayGetUBound(*psa, 1, &els) ;
SafeArrayGetLBound(*psa, 1, &e) ;
els-=e-1;
qsort((void *)pStr,
(size_t)els,
sizeof(BSTR),
(compFn)cmpArrSortVS);
SafeArrayUnaccessData(*psa);
return(0);
}
int cmpArrSortVS(BSTR *arg1, BSTR *arg2)
{
return strcmp((LPSTR)*arg1 , (LPSTR)*arg2);
}
usando il tuo codice VB6 un po' modificato
codice:
Dim s(1 to 4) As String
s(1) = "Pippo"
s(2) = "Pluto"
s(3) = "Paperino"
s(4) = "Minnie"
Dim tmp As Long
tmp = ArrSortVS(s())
EDIT: solo adesso ho visto che hai risolto in http://www.vbforums.com/showthread.p...nd-C&p=4471161 ...