[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. _antony

    _antony Elder - Старейшина

    Joined:
    16 Jul 2008
    Messages:
    80
    Likes Received:
    43
    Reputations:
    0
    Удаление файла сводиться к отсылке IRP_MJ_SET_INFORMATION c FileInformationClass = FileDispositionInformation.
    Вывод: писать драйвер фильтр фс и отклонять такие irp для нужного файла.
     
    #4401 _antony, 9 Dec 2009
    Last edited: 9 Dec 2009
  2. =Zeus=

    =Zeus= Member

    Joined:
    10 Aug 2009
    Messages:
    213
    Likes Received:
    54
    Reputations:
    5
    Подскажите, как в Visual Studio 2008 в PictureControl программно загрузить картинку JPG из файла, на API.
     
  3. kopBaJIoJI

    kopBaJIoJI New Member

    Joined:
    10 Mar 2009
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Подскажите функцию, которая при закрытии формы выдавала бы информационное сообщение с кнопками Да, Нет, Отмена. При нажатии да - открывается окно для сохранения файла, при нажатии нет - программа закрывается, при отмене - остаётся всё как было.
     
  4. St0nX

    St0nX Elder - Старейшина

    Joined:
    19 May 2007
    Messages:
    257
    Likes Received:
    46
    Reputations:
    0
    необходимо перехватить событие закрытие формы и вызвать свою функцию. В Qt допустим достаточно переопределить функцию закрытия формы в классе пример отлично разбирается в книге Qt 4. Программирование GUI на С++. В WinAPI примерно так:
    PHP:
    #include <windows.h>

    // Объявления функций
    BOOL RegClass(WNDPROCLPCTSTRUINT);
    LRESULT CALLBACK WndProc(HWND,UINTWPARAMLPARAM); // оконные процедуры

    HINSTANCE hInstance;
    char szMainClass[] = "MainClass";
    char szTitle[] = "Пример 1.2";

    // Главная функция приложения
    int WINAPI WinMain(HINSTANCE hInstHINSTANCE hPrevInst,
                    
    LPSTR IpszCmdLineint nCmdShow)
    {
        
    MSG msg;
        
    hInstance hInst;
        
    HWND hwnd;
        if (!
    RegClass(WndProcszMainClassCOLOR_DESKTOP))
            return 
    FALSE;
        
    // До создания окна узнаём габариты экрана в пикселях
        
    int w GetSystemMetrics(SM_CXSCREEN) - 1// Ширина
        
    int h GetSystemMetrics(SM_CYSCREEN) - 1// Высота 
        
    hwnd CreateWindow(szMainClassszTitle,
            
    WS_POPUPWINDOW WS_CAPTION |
            
    WS_MINIMIZEBOX WS_VISIBLE,
            
    00wh00hInstanceNULL);
        if (!
    hwnd) return FALSE;
        while (
    GetMessage(&msg000)) DispatchMessage(&msg);
        return 
    msg.wParam;
    }

    BOOL RegClass(WNDPROC ProcLPCTSTR szNameUINT brBackground)
    {
        
    WNDCLASS wc;
        
    wc.style wc.cbClsExtra wc.cbWndExtra 0;
        
    wc.lpfnWndProc Proc;
        
    wc.hInstance hInstance;
        
    wc.hIcon LoadIcon(NULLIDI_APPLICATION);
        
    wc.hCursor LoadCursor(NULLIDC_ARROW);
        
    wc.hbrBackground = (HBRUSH)(brBackground 1);
        
    wc.lpszMenuName = (LPCTSTRNULL;
        
    wc.lpszClassName szName;
        return (
    RegisterClass(&wc) != 0);
    }

    LRESULT CALLBACK WndProc(HWND hwndUINT msg,
                             
    WPARAM wParamLPARAM lParam)
    {
        switch (
    msg)
        {
        case 
    WM_DESTROY:
            {
            
    PostQuitMessage(0);
            return 
    0;
            }
        case 
    WM_CLOSE:
            {
            
    // ТУТ ТВОЙ МЕСАДЖ БОКС И ЕГО ОБРАБОТКА
            
    return 0;
            }
        }
        return 
    DefWindowProc(hwndmsgwParamlParam);
    }
     
  5. becensed

    becensed Member

    Joined:
    2 Dec 2009
    Messages:
    84
    Likes Received:
    24
    Reputations:
    1
    MessageBox не подходит?
     
  6. kopBaJIoJI

    kopBaJIoJI New Member

    Joined:
    10 Mar 2009
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Да, подошло, сделал через MessageBox в FormCloseQuery.
    Теперь другая проблема: как загрузить .jpg/.jpeg в TImage? Прописал в библиотеках jpeg.hpp, всёравно не загружает, пишет, что неизвестный формат. Подскажите пожалуйста:)
     
  7. cremator (c)

    cremator (c) Elder - Старейшина

    Joined:
    20 Jun 2008
    Messages:
    258
    Likes Received:
    72
    Reputations:
    0
    Пытаюсь реализовать алгоритм перевода из фиксированной формы записи мат. выражения к постфиксной(обратной польской форме). Есть код хорошо реализованный, С++. Но главного, что мне надо нет: поддержка сложных функций типа cos,tg,abs и др.
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <math.h>
    #include <ctype.h>
    #include <assert.h>
    
    int tok;
    double tokval;
    
    int next() {
        for (;;) {
            int c = getchar();
            if (c == EOF || strchr("+-*/^()\n", c) != NULL) return tok = c;
            if (isspace(c)) continue;
            if (isdigit(c) || c == '.') {
                ungetc(c, stdin);
                scanf(" %lf", &tokval);
                return tok = 'n';
            }
            fprintf(stderr, "Bad character: %c\n", c); abort();
        }
    }
    
    void skip(int t) { assert(tok == t); next(); }
    
    double expr();
    
    // numpar ::= number | '(' expr ')'
    double numpar() {
        if (tok == 'n') { double x = tokval; skip('n'); return x; }
        skip('('); double x = expr(); skip(')'); return x;
    }
    
    // factor ::= numpar | numpar '^' factor
    double factor() {
        double x = numpar();
        if (tok == '^') { skip('^'); x = pow(x, factor()); }
        return x;
    }
    
    // term ::= factor | term '*' factor | term '/' factor
    double term() {
        double x = factor();
        for (;;) {
            if (tok == '*') { skip('*'); x *= factor(); }
            else if (tok == '/') { skip('/'); x /= factor(); }
            else return x;
        }
    }
    
    // expr ::= term | expr '+' term | expr '-' term
    double expr() {
        double x = term();
        for (;;) {
            if (tok == '+') { skip('+'); x += term(); }
            else if (tok == '-') { skip('-'); x -= term(); }
            else return x;
        }
    }
    
    int main() {
        next();
        while (tok != EOF) {
            if (tok == '\n') { skip('\n'); continue; }
            printf("%.9g\n", expr());
        }
        return 0;
    }
    Кто сможет помочь расширить его доп. функциями буду безгранично благодарен :)))
    ..я тут не уследил где идёт простановка приоритетов ф-ий даже.. возможно в этом загвоздка. спасибо)
     
  8. becensed

    becensed Member

    Joined:
    2 Dec 2009
    Messages:
    84
    Likes Received:
    24
    Reputations:
    1
    Кто пишет, что неизвестный формат?
    Зачем jpeg.hpp в библиотеки, если это инклуд?
    В гугле по поиску jpeg.hpp нашлась масса статей и примеров. Они не работают?
     
  9. azsx

    azsx New Member

    Joined:
    12 Sep 2009
    Messages:
    48
    Likes Received:
    2
    Reputations:
    0
    я хочу заняться изучением с++, для начала напишу одну нужную мне программу (использование бд, добваление, удаление и поиск записей). Вопрос, какую среду разработки выбрать? Правильно я скачал Microsoft Visual C++ 2008 express edition? Бесплатный ли он? Посоветуйте офф книгу для чайников.
    Заранее спасибо.
     
  10. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    cremator (c)
    boost.spirit поизучай. или AntLR. писать вручную грамматики на плюсах - дело не очень благодарное.
     
  11. PandoraBox

    PandoraBox Elder - Старейшина

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    можно подробнее описать данный метод ?
     
  12. _antony

    _antony Elder - Старейшина

    Joined:
    16 Jul 2008
    Messages:
    80
    Likes Received:
    43
    Reputations:
    0
    Да , только сначала надо иметь теоретический минимум. Отсылаю Вас к этой книге http://www.ozon.ru/context/detail/id/2427699/ .
     
    1 person likes this.
  13. cremator (c)

    cremator (c) Elder - Старейшина

    Joined:
    20 Jun 2008
    Messages:
    258
    Likes Received:
    72
    Reputations:
    0
    Ra$cal, дело в том, что мне не нужны сложные классы парсеров и тому подобного. Мне для ргз по С++ надо сдать, в качестве своей работы) Вот поэтому и подумал может кто-то поможет разобраться в этом. С++ совсем недавно изучаю, в дельфи я бы легко нарисовал всё это..
     
  14. 6apa6aIIIka

    6apa6aIIIka New Member

    Joined:
    15 Apr 2009
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    подскажите пожалуйста:
    есть среда разработки visual c++ 2005 express edition. Значит скомпилил я в ней программу. Пробую запустить: если из командной строки, то все отлично, а если из самой среды разработки, то получаю ошибку(функция open почему-то возвращает -1). Как это исправить? может в visual c++ стоит какой-то запрет на открытие файлов?
     
  15. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    при запуске отладки в студии CurrentDirectory = директории проекта. Если же ты запускаешь сам exe, то директория меняется на туже плюс Debug. Кароч смотри где у тебя файл. Если путь относительный(без c:\\proj\\1.txt"), то проверяй, есть ли он в папке.
     
  16. Matnya

    Matnya Banned

    Joined:
    2 Dec 2009
    Messages:
    22
    Likes Received:
    1
    Reputations:
    -15
    Подскажите плиз. как реализоать прогу. Задача такая. написать просмоторщик html, а лучше mht файлов в среде C++ Builder. Я хочу написать прогу которая окрыает и показывает html, но лучще mht файлы. аподскажите какие компоненты юзать и т.д. плиз
     
  17. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Если в стктуре для передачи данных в поток.Использовать обьекты со своим внутренним конструктором,типа всяких string,это приведет к утечке памяти?
     
  18. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    вся суть использования string вместо char* и vector вместо массивов и заключается в защите от утечек памяти. почитай на вики http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%B0_%D0%B5%D1%81%D1%82%D1%8C_%D0%B8%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F
     
  19. 6apa6aIIIka

    6apa6aIIIka New Member

    Joined:
    15 Apr 2009
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    всем привет.

    Скомпилил я переборщик паролей в visual c++2005. При малой длине пароля и при малых алфавитах, все прекрасно работает. Но если ставить большие, то прога, отработав чуть больше часа, либо виснет, либо выдает ошибку типа:
    инструкция по адресу "0х00412759" обратилась к памяти по адресу "(тут разные значения получаются, например 0х0036с00а)". Память не может быть "read".
    Подскажите пожалуйста что тут вообще можно сделать: как найти эту инструкцию или что изменить для устранения ошибки или как выяснить в чем проблема.
     
  20. Irdis

    Irdis Elder - Старейшина

    Joined:
    6 Feb 2006
    Messages:
    248
    Likes Received:
    52
    Reputations:
    3
    показать код, вы, видимо, вылезаете за допустимые границы.
     
Thread Status:
Not open for further replies.