25. januar 2000 - 13:30Der er
1 kommentar og 1 løsning
VARIANT
for (int i = 0; i < 6 ; i++){ if (pVar->vt != VT_NULL){ hr = VariantChangeType(&varCopy, pVar, 0, VT_BSTR); if (FAILED(hr)){ MsgError(_T("Could not convert field %d to string"), i); }
else { switch (i) { case 0: lstrcpy (lvdatabase.szCompany, varCopy.bstrVal); case 1: lstrcpy (lvdatabase.szContact, varCopy.bstrVal); case 2: lstrcpy (lvdatabase.szAdress, varCopy.bstrVal); } VariantClear(&varCopy); }
} ++pVar; } Jeg har ovenstående kode der virker, men vil gerne kunne henter værdierne i vilkårlig rækkefølge uden at skulle bruge for-løkken. Altså noget i retning af pVar[i].(pVar er af typen VARIANT*, varCopy er af VARIANT.
Jeg har lige haft et problem af samme type -- vejen for mig var at lave en hash funktion til 'pVar' (Jeg går ud fra at din pVar ikke er sorteret/indekseret?). Men hvis du finder en mere simpel løsning er jeg temmelig interesseret :)
Jeg forstår udemærket hvad du mener. Dette her burde vel strengt taget virke:
hr = VariantChangeType(&varCopy, pVar+i, 0, VT_BSTR); if (FAILED(hr)){ MsgError(_T("Could not convert field %d to string"), i); else lstrcpy (<modtagerfelt>, varCopy.bstrVal);
hvor du så selvfølgelig skifter <modtagerfelt> ud med den ønskede variabel. Du må også kunne lave den første del om til en funktion:
bool GetValueAsString(VARIANT* pVar, int i, LPTSTR retVal) { VARIANT varCopy; hr = VariantChangeType(&varCopy, pVar+i, 0, VT_BSTR); if (FAILED(hr)) { MsgError(_T("Could not convert field %d to string"), i); return false; } lstrcpy(retValue, varCopy.bstrVal); return true; }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.