Avatar
Tayson
Člen
Avatar
Tayson:

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.