NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Mezinárodní den IT společnosti je tady! Pouze nyní můžeš získat 90 % extra kreditů při nákupu od 1199 kreditů s promo kódem AJTACI90. Tak neváhej!

Diskuze: Spustenie vlakna a vytvorenie objektu vo vlakne

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
Tayson
Člen
Avatar
Tayson:13.11.2014 11:44

Zdravim vo visual studiu 2010 v projekte MFC potrebujem spustit vlakno a ulozit si v tom vlakne data do premennej pole.
Kod vyzera takto:

typedef struct MyData {
    char* name_file;
    char* name_sheet;
} MYDATA, *PMYDATA;

DWORD WINAPI  ExcelReadCellThread(LPVOID pParam)
{
   pDataArray = (PMYDATA)pParam;
   cfile.Open(pDataArray->name_file, CFile::modeRead);

   while(true)
   {
           if(cfile.GetStatus(status))
           {
                  if(m_prevTime != status.m_mtime)
                  {
                                CString tempString;

                                CSpreadSheet SS(pDataArray->name_file, pDataArray->name_sheet);

                                SS.BeginTransaction();

                                SS.ReadCell(tempString, 1, 1);

                                pole.Copy(SS.m_aRows);
                  }
                  m_prevTime = status.m_mtime;
           }
       Sleep(1000);
   }
   return 0;
}

char far * PASCAL ExcelReadCell(char *name_file, char *name_sheet, int riadok, int stlpec)
{
        CString row;

        pDataArray->name_file=name_file;
        pDataArray->name_sheet=name_sheet;

        if(hThreadArray == NULL)
        {
            //ExcelReadCellThread(name_file, name_sheet);
                hThreadArray = CreateThread(NULL,  0, ExcelReadCellThread, pDataArray, 0, NULL);
        }

        row=pole[riadok];

        CString separator (_T(",;.?"));
        CStringArray trimData;

        int iPos = 0;

        while (iPos != -1)
        {
                TCHAR* pszSrc = row.GetBuffer() + iPos;
                int             iOldPos = iPos;
                iPos = row.Find(separator, iOldPos);
                if (iPos != -1)
                {
                        int iLength = iPos - iOldPos;
                        iPos += separator.GetLength();
                        CString str(pszSrc, iLength);
                        trimData.Add(str);
                }
                else
                {
                        int iLength = row.GetLength() - iOldPos;
                        CString str(pszSrc, iLength);
                        trimData.Add(str);
                }
        }

        CString cell=trimData[stlpec];
        cell=cell.Mid(1, cell.GetLength()-2);
        sprintf_s(value, "%s", cell);

        return value;
}

NTo vlakno mi ide spustit mam pocit ale neodosle data do vlakna a potom tu premennu pole do ktorej v tom vlakne kopirujem tak je prazdna a neviem ci k nej mam pristup a neviem ze ci dobre vytvaram objekt na danu triedu. Dakujem za pomoc

 
Odpovědět
13.11.2014 11:44
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.