Keresés

Új hozzászólás Aktív témák

  • pmonitor

    aktív tag

    válasz nevemfel #17791 üzenetére

    >de ez elvileg nem terápiás-, hanem szakmai topik.

    Na akkor 1 kis "szakmai" probléma. Ezt kellene optimalizálni. Bármilyen kis optimalizálásnak örülnék, de az sem ártana, ha jelentős optimalizálás lenne...

    ...
    typedef struct FAJLKERESESEREDMENYE
    {
    int Fajldarab;
    int Mappadarab;
    long long Fajlhossz;
    wchar_t* Fajlok;
    wchar_t* Mappak;
    } FAJLKERESESEREDMENYE;

    ...

    void search(wchar_t* sPath, wchar_t* sFileMask, FAJLKERESESEREDMENYE* pFke, char almappae, char mappae, char fajle)
    {
    if (!out)
    {
    int i = 0, n = 0;
    wchar_t* aktFolders = tempFolders;
    WIN32_FIND_DATA WFD;
    HANDLE iSearchHandle = NULL;
    int bContinue = 1;
    wchar_t* sPath_1 = (wchar_t*)GlobalAlloc(LMEM_FIXED, (wcslen(sPath) + wcslen(sFileMask) + 1) * sizeof(wchar_t));
    if (sPath_1 == INVALID_HANDLE_VALUE) MessageBox(0, L"memória", L"Üzenet", 0);
    if (almappae)
    {
    wcscpy(sPath_1, sPath);
    wcscat(sPath_1, L"*");
    iSearchHandle = FindFirstFile(sPath_1, &WFD);
    if (INVALID_HANDLE_VALUE == iSearchHandle)
    {
    }
    else
    {
    while (bContinue)
    {
    if (wcscmp(WFD.cFileName, L".") && wcscmp(WFD.cFileName, L".."))
    {
    int s;
    if ((WFD.dwFileAttributes & 16) == 16)
    {
    wcscpy(tempFolders, sPath);
    wcscat(tempFolders, WFD.cFileName);
    wcscat(tempFolders, L"\\\0");
    s = wcslen(tempFolders);
    tempFolders += s;
    ++tempFolders;
    ++n;

    }
    }
    bContinue = FindNextFile(iSearchHandle, &WFD);
    }
    bContinue = FindClose(iSearchHandle);
    }
    }
    bContinue = 1;
    wcscpy(sPath_1, sPath);
    wcscat(sPath_1, sFileMask);
    iSearchHandle = FindFirstFile(sPath_1, &WFD);
    if (INVALID_HANDLE_VALUE == iSearchHandle)
    {
    }
    else
    {
    while (bContinue)
    {
    if (wcscmp(WFD.cFileName, L".") && wcscmp(WFD.cFileName, L".."))
    {
    int s;
    if ((WFD.dwFileAttributes & 16) == 16)
    {
    if (mappae)
    {
    wcscat(WFD.cFileName, L"\r\n");
    wcscpy(pFke->Mappak, sPath);
    wcscat(pFke->Mappak, WFD.cFileName);
    s = wcslen(pFke->Mappak);
    pFke->Mappak += s;
    ++(pFke->Mappadarab);
    }
    }
    else
    {
    if (fajle)
    {
    wcscpy(pFke->Fajlok, sPath);
    wcscat(pFke->Fajlok, WFD.cFileName);
    wcscat(pFke->Fajlok, L"\r\n");
    s = wcslen(pFke->Fajlok);
    pFke->Fajlok += s;
    ++(pFke->Fajldarab);
    }
    }
    }
    bContinue = FindNextFile(iSearchHandle, &WFD);
    }
    bContinue = FindClose(iSearchHandle);
    }
    GlobalFree(sPath_1);
    if (almappae)
    {
    for (; i < n; i++, aktFolders += (1 + wcslen(aktFolders)))
    {
    search(aktFolders, sFileMask, pFke, almappae, mappae, fajle);
    }
    }
    }
    }

    http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php

Új hozzászólás Aktív témák