Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2017, 12:40   #1
Maray
Форумчанин
 
Регистрация: 03.01.2015
Сообщений: 160
Лампочка Атрибуты файла

Добрый день!

Помогите, пожалуйста. Написала программу, но работает не совсем правильно. При нажатии на кнопку "Открыть файл" выбирается файл, и в программе пишется путь к файлу, а также указываются атрибуты файла. Атрибуты указываются неправильно. Подскажите, в чем проблема?
Код:
#include <Windows.h>
#include<windowsx.h>
#include<CommCtrl.h>
#include<tchar.h>
#include<Psapi.h>
#include<strsafe.h>
#include<sstream>
 
#ifdef UNICODE
typedef std::wostringstream SStre;
#else
typedef std::ostringstream SStre;
#endif
 
#define IDC_TEXTBOXRENAME 2000
#define IDC_TEXTBOX 2001
#define IDC_BUTTONOPENFILE 2002
#define IDC_BUTTONOPENCATEG 2003
#define IDC_BUTTONRENAME 2004
#define IDC_BUTTONATTRIB01 2005
#define IDC_BUTTONATTRIB02 2006
#define IDC_BUTTONATTRIB03 2007
#define IDC_BUTTONATTRIB04 2008
#define IDC_BUTTONATTRIB05 2009
#define IDC_BUTTONATTRIB06 2010
#define IDC_BUTTONATTRIB07 2011
#define IDC_BUTTONATTRIB08 2012
#define IDC_BUTTONATTRIBSET 2013
#define IDC_BUTTONATTRIBLAST 2014
#define IDC_TIMECREATE 2015
#define IDC_TIMECHANGE 2016
#define IDC_FILENAME 2017
 
 
HANDLE File;
TCHAR LastPath[MAX_PATH];
bool lastIsCat = false;
TCHAR ProgDir[MAX_PATH];
DWORD CurrAttr = 0;
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
 
BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct);
void OnDestroy(HWND hwnd);
UINT OnClose(HWND hwnd);
void OnResize(HWND hwnd, LPARAM lparam);
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
DWORD BuildAttrVal();
void OpenFile(bool saved);
void UnwrapAttrVal(DWORD Attr);
void SetFileAttr(bool saved = false);
void OpenDir();
void SaveRegKeys(DWORD *Attr, TCHAR* Path);
void OpenRegKeys(DWORD *Attr, TCHAR* Path);
HWND mainWnd;
 
void ReadInitSettings(int *x, int *y){
    SStre s;
    s << ProgDir;
    s << L"\\initialization.ini";
    HANDLE iniFile = CreateFile(s.str().c_str(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if (iniFile != INVALID_HANDLE_VALUE){
        *x = GetPrivateProfileInt(L"Lab_41", L"DefWndSizeX", 512, s.str().c_str());
        *y = GetPrivateProfileInt(L"Lab_41", L"DefWndSizeY", 512, s.str().c_str());
    }
    else{
        MessageBox(NULL, L"Ошибка открытия файла инициализации", L"Ошибка инициализации", MB_ICONSTOP | MB_OK);
        *x = 512;
        *y = 512;
    }
    CloseHandle(iniFile);
}
void WriteInitSettings(int x, int y){
    SStre s;
    s << ProgDir;
    s << L"\\initialization.ini";
    HANDLE iniFile = CreateFile(s.str().c_str(), GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if (iniFile != INVALID_HANDLE_VALUE){
        SStre sx;
        SStre sy;
        sx << x;
 
        WritePrivateProfileString(L"Lab_41", L"DefWndSizeX", sx.str().c_str(), s.str().c_str());
        sy << y;
        WritePrivateProfileString(L"Lab_41", L"DefWndSizeY", sy.str().c_str(), s.str().c_str());
    }
    CloseHandle(iniFile);
}
 
void OnResize(HWND hwnd, LPARAM lparam)
{
    HWND tb = GetDlgItem(mainWnd, IDC_FILENAME);
    int w = LOWORD(lparam);
    MoveWindow(tb, 20, 15, w - 40, 25, true);
}
 
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
    OpenRegKeys(NULL, LastPath);
    GetCurrentDirectory(MAX_PATH, ProgDir);
    WNDCLASSEX wcex = { sizeof(WNDCLASSEX) };
    wcex.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
    wcex.lpfnWndProc = WndProc;
    wcex.hInstance = hInstance;
    wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
    wcex.lpszMenuName = NULL;
    wcex.lpszClassName = TEXT("Класс");
    wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    
    if (RegisterClassEx(&wcex) == 0)
        return -1;
    LoadLibrary(TEXT("ComCtl32.dll"));
    LoadLibrary(TEXT("Msftedit.dll"));
    int x = 0;
    int y = 0;
    ReadInitSettings(&x, &y);
    mainWnd = CreateWindowEx(0, TEXT("Класс"), TEXT("Программа с атрибутами"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, x, y, NULL, NULL, hInstance, NULL);
 
    if (mainWnd == NULL)
        return -1;
    ShowWindow(mainWnd, nCmdShow);
 
    MSG msg;
    BOOL bRet;
 
    for (;;){
        bRet = GetMessage(&msg, NULL, 0, 0);
 
        if (bRet == -1){
            
        }
        else if (bRet == FALSE){
            break;
        }
        else if (true){
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
 
    return (int)msg.wParam;
 
}
Maray вне форума Ответить с цитированием
Старый 26.02.2017, 12:41   #2
Maray
Форумчанин
 
Регистрация: 03.01.2015
Сообщений: 160
По умолчанию

Продолжение кода
Код:
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){
 
    switch (uMsg){
        HANDLE_MSG(hWnd, WM_CREATE, OnCreate);
        HANDLE_MSG(hWnd, WM_DESTROY, OnDestroy);
        HANDLE_MSG(hWnd, WM_COMMAND, OnCommand);
        HANDLE_MSG(hWnd, WM_CLOSE, OnClose);
    case(WM_SHOWWINDOW) :
        OpenFile(true);
        break;
    case(WM_SIZE) :
        OnResize(hWnd, lParam);
        return 0;
        break;
    }
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
 
}
 
void WriteTime(TCHAR Path[MAX_PATH], HWND CrTm, HWND ChTm){
    WIN32_FILE_ATTRIBUTE_DATA WFAD = { 0 };
    GetFileAttributesEx(Path, GetFileExInfoStandard, &WFAD);
    if (CrTm != NULL){
        const FILETIME* tm = &WFAD.ftCreationTime;
        SYSTEMTIME CrSysTm = { 0 };
        FileTimeToSystemTime(tm, &CrSysTm);
        SystemTimeToTzSpecificLocalTime(NULL, &CrSysTm, &CrSysTm);
        TCHAR FlDate[32];
        TCHAR FlTime[32];
        GetDateFormatEx(LOCALE_NAME_USER_DEFAULT, DATE_SHORTDATE, &CrSysTm, NULL, FlDate, 16, NULL);
        GetDateFormatEx(LOCALE_NAME_USER_DEFAULT, TIME_FORCE24HOURFORMAT, &CrSysTm, NULL, FlTime, 16, NULL);
        SStre CrTmS;
        CrTmS << CrSysTm.wHour << ":" << CrSysTm.wMinute << ":" << CrSysTm.wSecond << " " << FlDate;
        SetWindowText(CrTm, CrTmS.str().c_str());
    }
    if (ChTm != NULL){
        const FILETIME* tm = &WFAD.ftLastWriteTime;
        SYSTEMTIME CrSysTm = { 0 };
        FileTimeToSystemTime(tm, &CrSysTm);
        SystemTimeToTzSpecificLocalTime(NULL, &CrSysTm, &CrSysTm);
        TCHAR FlDate[32];
        TCHAR FlTime[64];
        GetDateFormatEx(LOCALE_NAME_USER_DEFAULT, DATE_SHORTDATE, &CrSysTm, NULL, FlDate, 32, NULL);
        GetDateFormatEx(LOCALE_NAME_USER_DEFAULT, TIME_FORCE24HOURFORMAT, &CrSysTm, NULL, FlTime, 32, NULL);
        SStre CrTmS;
        CrTmS << CrSysTm.wHour << ":" << CrSysTm.wMinute << ":" << CrSysTm.wSecond << " " << FlDate;
        SetWindowText(ChTm, CrTmS.str().c_str());
    }
}
 
BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct){
    CreateWindowEx(0, WC_EDIT, TEXT(""), WS_CHILD | WS_VISIBLE | WS_BORDER, 20, 190, 150, 25, hwnd, (HMENU)IDC_TEXTBOX, lpCreateStruct->hInstance, NULL);
    CreateWindowEx(0, WC_EDIT, TEXT(""), WS_CHILD | WS_VISIBLE | WS_BORDER, 20, 15, 530, 25, hwnd, (HMENU)IDC_FILENAME, lpCreateStruct->hInstance, NULL);
    CreateWindowEx(0, WC_EDIT, TEXT(""), WS_CHILD | WS_VISIBLE | WS_BORDER, 20, 250, 150, 25, hwnd, (HMENU)IDC_TEXTBOXRENAME, lpCreateStruct->hInstance, NULL);
    CreateWindowEx(0, WC_BUTTON, TEXT("Открыть файл"), WS_CHILD | WS_VISIBLE | WS_BORDER, 20, 100, 150, 30, hwnd, (HMENU)IDC_BUTTONOPENFILE, lpCreateStruct->hInstance, NULL);
    CreateWindowEx(0, WC_BUTTON, TEXT("Открыть директорию"), WS_CHILD | WS_VISIBLE | WS_BORDER, 20, 160, 150, 30, hwnd, (HMENU)IDC_BUTTONOPENCATEG, lpCreateStruct->hInstance, NULL);
    CreateWindowEx(0, WC_BUTTON, TEXT("Переименовать"), WS_CHILD | WS_VISIBLE | WS_BORDER, 20, 220, 150, 30, hwnd, (HMENU)IDC_BUTTONRENAME, lpCreateStruct->hInstance, NULL);
    CreateWindowEx(0, WC_EDIT, TEXT(""), WS_CHILD | WS_VISIBLE | WS_BORDER | ES_READONLY, 220, 240, 150, 30, hwnd, (HMENU)IDC_TIMECREATE, lpCreateStruct->hInstance, NULL);
    CreateWindowEx(0, WC_EDIT, TEXT(""), WS_CHILD | WS_VISIBLE | WS_BORDER | ES_READONLY, 390, 240, 150, 30, hwnd, (HMENU)IDC_TIMECHANGE, lpCreateStruct->hInstance, NULL);
 
    TCHAR* atrNames[8] = 
    {
            TEXT("Архив"),
            TEXT("Зашифрован"),
            TEXT("Скрытый"),
            TEXT("Не имеет атрибутов"),
            TEXT("Не индексируется"),
            TEXT("Только для чтения"),
            TEXT("Системный"),
            TEXT("Временный")
    };
    int n = 220, m = 50, h=0;
 
    for (int i = 0; i < 8; i++){
        if (i == 4){
            n = 390;
            m = 0;
            h = 110;
        }
            CreateWindowEx(0, WC_BUTTON, atrNames[i], WS_CHILD | WS_VISIBLE | WS_BORDER | BS_3STATE, n, (m+i*40)-h, 160, 30, hwnd, (HMENU)(IDC_BUTTONATTRIB01 +i), lpCreateStruct->hInstance, NULL);
    }
 
    CreateWindowEx(0, WC_BUTTON, TEXT("Изменить атрибуты"), WS_CHILD | WS_VISIBLE | WS_BORDER, 20, 300, 150, 30, hwnd, (HMENU)IDC_BUTTONATTRIBSET, lpCreateStruct->hInstance, NULL);
    CreateWindowEx(0, WC_BUTTON, TEXT("Получить последние атрибуты"), WS_CHILD | WS_VISIBLE | WS_BORDER, 180, 300, 220, 30, hwnd, (HMENU)IDC_BUTTONATTRIBLAST, lpCreateStruct->hInstance, NULL);
    return true;
}
 
 
void OnDestroy(HWND hwnd){
    PostQuitMessage(0);
}
UINT OnClose(HWND hwnd){
    RECT sz;
    GetWindowRect(hwnd, &sz);
    int wd = sz.right - sz.left;
    int hg = sz.bottom - sz.top;
    WriteInitSettings(wd, hg);
    SaveRegKeys(NULL, LastPath);
    DestroyWindow(hwnd);
    CloseHandle(File);
    return 0;
}
 
void RenameFile(HWND Edit){
 
    TCHAR NewName[MAX_PATH];
    TCHAR ProgDir[MAX_PATH];
    GetWindowText(Edit, NewName, MAX_PATH);
    SetCurrentDirectory(LastPath);
    GetCurrentDirectory(MAX_PATH, ProgDir);
    if (GetFileAttributes(LastPath) & 1 << 4){
        TCHAR NewDir[MAX_PATH];
        
        SetCurrentDirectory(TEXT(".."));
        GetCurrentDirectory(MAX_PATH, ProgDir);
        if (ProgDir[3] == '\0'){
            StringCchPrintf(NewDir, MAX_PATH, TEXT("%s%s"), ProgDir, NewName);
        }
        else{
            StringCchPrintf(NewDir, MAX_PATH, TEXT("%s\\%s"), ProgDir, NewName);
        }
        BOOL Res = MoveFile(LastPath, NewDir);
        if (Res != 0){
            StringCchPrintf(LastPath, MAX_PATH, TEXT("%s"), NewDir);
        }
    }
    else{
        TCHAR NewDir[MAX_PATH];
        SetCurrentDirectory(TEXT("."));
        GetCurrentDirectory(MAX_PATH, ProgDir);
        StringCchPrintf(NewDir, MAX_PATH, TEXT("%s\\%s"), ProgDir, NewName);
        BOOL Res = MoveFile(LastPath, NewDir);
 
        if (Res != 0){
            StringCchPrintf(LastPath, MAX_PATH, TEXT("%s"), NewDir);
        }
    }
    SetDlgItemText(mainWnd, IDC_FILENAME, LastPath);
}
Maray вне форума Ответить с цитированием
Старый 26.02.2017, 12:41   #3
Maray
Форумчанин
 
Регистрация: 03.01.2015
Сообщений: 160
По умолчанию

Продолжение кода
Код:
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify){
    HINSTANCE hInstance = GetWindowInstance(hwnd);
    int DlgRes = 0;
    BOOL bRet = FALSE;
 
    switch (id){
    case IDC_BUTTONOPENFILE:
        OpenFile(false);
        break;
    case IDC_BUTTONATTRIBSET:
        SetFileAttr(false);
        break;
    case IDC_BUTTONOPENCATEG:
        OpenDir();
        break;
    case IDC_BUTTONRENAME:
        RenameFile(GetDlgItem(mainWnd, IDC_TEXTBOXRENAME));
        break;
    case IDC_BUTTONATTRIBLAST:
        SetFileAttr(true);
        break;
    }
 
    if (id >= IDC_BUTTONATTRIB01 && id <= IDC_BUTTONATTRIB08){
        Button_SetCheck(hwndCtl, !Button_GetCheck(hwndCtl));
        BuildAttrVal();
    }
}
 
void OpenDir(){
    HWND Ed = GetDlgItem(mainWnd, IDC_TEXTBOX);
    WIN32_FILE_ATTRIBUTE_DATA FAD = { 0 };
    TCHAR Dir[MAX_PATH];
    GetWindowText(Ed, Dir, MAX_PATH);
    BOOL GetRes = GetFileAttributesEx(Dir, GetFileExInfoStandard, &FAD);
    if (GetRes != NULL){
        UnwrapAttrVal(FAD.dwFileAttributes);
        StringCchCopy(LastPath, MAX_PATH, Dir);
        WriteTime(LastPath, GetDlgItem(mainWnd, IDC_TIMECREATE), GetDlgItem(mainWnd, IDC_TIMECHANGE));
    }
    else{
        UnwrapAttrVal(1 << 3);
    }
}
 
DWORD BuildAttrVal(){
    DWORD res = 0;
    for (int i = 0; i < 5; i++){
        for (int j = 0; j < 4; j++){
            if (i == 4 && j == 2){
                break;
            }
            int num = (i * 4) + j;
            bool ch = Button_GetCheck(GetDlgItem(mainWnd, IDC_BUTTONATTRIB01 + num));
            if (ch)
                res = res + (1 << num);
        }
    }
    return res;
}
 
void UnwrapAttrVal(DWORD Attr){
    for (int i = 0; i < 2; i++){
        for (int j = 0; j < 4; j++){
            int num = (i * 4) + j;
            if (Attr & (1 << num)){
                Button_SetCheck(GetDlgItem(mainWnd, IDC_BUTTONATTRIB01 + num), true);
            }
            else{
                Button_SetCheck(GetDlgItem(mainWnd, IDC_BUTTONATTRIB01 + num), false);
            }
        }
    }
}
 
 
 
void SetFileAttr(bool saved){
    DWORD Attr = 0;
    if (saved){
        OpenRegKeys(&Attr, NULL);
    }
    else{
        Attr = BuildAttrVal();
    }
    SetFileAttributes(LastPath, Attr);
    SaveRegKeys(&Attr, NULL);
    UnwrapAttrVal(GetFileAttributes(LastPath));
}
void SaveRegKeys(DWORD *Attr, TCHAR* Path){
    HKEY Key;
    DWORD GotRes;
 
    LSTATUS stat = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("SOFTWARE\\PI-311"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE | KEY_CREATE_SUB_KEY, NULL, &Key, &GotRes);
    if (stat == ERROR_SUCCESS){
        if (Path != NULL){
            LSTATUS szStat = RegSetValueEx(Key, TEXT("Последний файл"), 0, REG_SZ, (LPCBYTE)Path, MAX_PATH*sizeof(TCHAR));
            GotRes = szStat;
        }
        if (Attr != NULL){
            LSTATUS dwStat = RegSetValueEx(Key, TEXT("Последние атрибуты"), 0, REG_DWORD, (LPCBYTE)Attr, sizeof(DWORD));
            GotRes = dwStat;
        }
    }
    RegCloseKey(Key);
}
 
void OpenRegKeys(DWORD *Attr, TCHAR* Path){
    HKEY Key;
    DWORD GotRes;
 
    LSTATUS stat = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("SOFTWARE\\PI-311"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_CREATE_SUB_KEY, NULL, &Key, &GotRes);
 
    if (stat == ERROR_SUCCESS){
        DWORD cbData = MAX_PATH * sizeof(TCHAR);
        DWORD dwcbData = 4;
        BYTE* tmp[10];
        DWORD tst = 0;
        if (Path != NULL){
            LSTATUS szstat = RegQueryValueEx(Key, TEXT("Последний файл"), 0, NULL, (LPBYTE)Path, &cbData);
            cbData = 1;
        }
        if (Attr != NULL){
            LSTATUS dwstat = RegQueryValueEx(Key, TEXT("Последние атрибуты"), 0, NULL, (LPBYTE)Attr, &dwcbData);
 
            tst = 1;
        }
    }
    RegCloseKey(Key);
}
void OpenFile(bool saved = false){
    WIN32_FILE_ATTRIBUTE_DATA FAD = { 0 };
    if (!saved){
        OPENFILENAME OFN = { sizeof(OPENFILENAME) };
        HINSTANCE hInstance = GetWindowInstance(mainWnd);
        TCHAR fName[MAX_PATH];
        OFN.lStructSize = sizeof(OFN);
        OFN.Flags = OFN_PATHMUSTEXIST;
        OFN.hwndOwner = mainWnd;
        OFN.hInstance = hInstance;
        OFN.lpstrFile = fName;
        OFN.lpstrFile[0] = '\0';
        OFN.lpstrTitle = TEXT("Открыть файл");
        OFN.lpstrDefExt = TEXT(".");
        OFN.nMaxFile = sizeof(fName);
        OFN.lpstrFilter = TEXT("All\0*.*\0");
        OFN.nFilterIndex = 1;
        OFN.lpstrFileTitle = NULL;
        OFN.nMaxFileTitle = 0;
        OFN.lpstrInitialDir = NULL;
 
        BOOL res = GetOpenFileName(&OFN);
        if (res == NULL){
            return;
        }
 
        CloseHandle(File);
        BOOL GetRes = GetFileAttributesEx(OFN.lpstrFile, GetFileExInfoStandard, &FAD);
        StringCchCopy(LastPath, MAX_PATH, OFN.lpstrFile);
        SetDlgItemText(mainWnd, IDC_FILENAME, LastPath);
        if (GetRes != NULL){
            UnwrapAttrVal(FAD.dwFileAttributes);
            WriteTime(LastPath, GetDlgItem(mainWnd, IDC_TIMECREATE), GetDlgItem(mainWnd, IDC_TIMECHANGE));
        }
        else{
            UnwrapAttrVal(1 << 3);
            MessageBox(mainWnd, L"Ошибка открытия файла", L"Ошибка открытия файла", MB_OK | MB_ICONSTOP);
        }
    }
    else if (LastPath != TEXT("")){
 
        BOOL GetRes = GetFileAttributesEx(LastPath, GetFileExInfoStandard, &FAD);
        if (GetRes != NULL){
            UnwrapAttrVal(FAD.dwFileAttributes);
            WriteTime(LastPath, GetDlgItem(mainWnd, IDC_TIMECREATE), GetDlgItem(mainWnd, IDC_TIMECHANGE));
            SetDlgItemText(mainWnd, IDC_FILENAME, LastPath);
        }
        else{
            UnwrapAttrVal(1 << 3);
            MessageBox(mainWnd, L"Ошибка открытия файла", L"Ошибка открытия файла", MB_OK | MB_ICONSTOP);
        }
    }
    else{
        MessageBox(mainWnd, L"Невозможно открыть последний файл", L"Ошибка открытия файла", MB_OK | MB_ICONSTOP);
    }
}
Maray вне форума Ответить с цитированием
Старый 26.02.2017, 21:34   #4
Maray
Форумчанин
 
Регистрация: 03.01.2015
Сообщений: 160
По умолчанию

Помогите, пожалуйста, найти ошибку
Maray вне форума Ответить с цитированием
Старый 27.02.2017, 08:04   #5
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

собери эти посты в один проект, заархивируй и скинь. народу так легче будет скачать, запустить и посмотреть что где неправильно работает
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 27.02.2017, 21:30   #6
Maray
Форумчанин
 
Регистрация: 03.01.2015
Сообщений: 160
По умолчанию

При открытии файла в программе неверно выводит его атрибуты. Привожу весь проект: https://yadi.sk/d/EEW097kC3EjUga
(Проект слишком большой, поэтому не удалось загрузить на форум)
Maray вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Атрибуты файла в ячейку Olper Microsoft Office Excel 1 13.11.2012 20:32
атрибуты файла DeDoK Общие вопросы Delphi 1 25.07.2010 22:10
атрибуты файла REDZERG Общие вопросы Delphi 4 07.01.2010 05:59
Атрибуты файла galaid Паскаль, Turbo Pascal, PascalABC.NET 2 05.04.2009 08:58
Атрибуты файлов / скрытие файла celovec Общие вопросы Delphi 4 04.07.2007 14:07