Avatar billede uffe_kld Nybegynder
25. januar 2000 - 13:30 Der 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.


Avatar billede faceorbit Nybegynder
25. januar 2000 - 14:05 #1
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 :)
Avatar billede soepro Nybegynder
25. januar 2000 - 14:18 #2
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;
}

og så blot kalde den:

GetValueAsString(pVar, 0, lvdatabase.szCompany);
GetValueAsString(pVar, 2, lvdatabase.szAdress);
GetValueAsString(pVar, 1, lvdatabase.szContact);
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester