Студентам с вопросами о лабораторных работах сюда

Тема в разделе "WASM.BEGINNERS", создана пользователем IceStudent, 11 ноя 2006.

  1. JangaMa

    JangaMa New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    30
    Адрес:
    Казань
    похоже работает, спасибо. только вот получается, что перед тем, как эту программузапускать на другом компьютере, нужно сначала этот dsn создать?
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Кажись и сразу путь можно указать, пробуй.
    Да, уже же выше приводили подобную строку.
    "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" + MyAccessFileName
     
  3. JangaMa

    JangaMa New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    30
    Адрес:
    Казань
    так надо было написать?
    _bstr_t bsConnString (L"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=C:\Таблицы.mdb");
    если так, то он запускается, но потом перестает работать.
    поняла в чем ошибка! вроде работает!
     
  4. Arnor

    Arnor New Member

    Публикаций:
    0
    Регистрация:
    10 ноя 2008
    Сообщения:
    10
    TermoSINteZ, спасибо!!! Работает. Сейчас буду понемногу пробовать остальные процедурки переделывать.

    Стоп. Вру ) Выдаёт следующие:
    Unhandled exception at 0x004bc842 in lesson9.exe: 0xC0000096: Privileged instruction.

    Почему?
     
  5. Arnor

    Arnor New Member

    Публикаций:
    0
    Регистрация:
    10 ноя 2008
    Сообщения:
    10
    Перефразирую.
    Когда заминяю:

    Код (Text):
    1. glEnable(GL_TEXTURE_2D);                           
    2.     glShadeModel(GL_SMOOTH);                           
    3.     glClearColor(0.0f, 0.0f, 0.0f, 0.5f);              
    4.     glClearDepth(1.0f);                            
    5.     glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); 
    6.     glBlendFunc(GL_SRC_ALPHA,GL_ONE);                  
    7.     glEnable(GL_BLEND);
    На:

    Код (Text):
    1. float var00f = 0.0f, var05f=0.5f, var10f=1.0f;
    2.     _asm {
    3.     push GL_TEXTURE_2D
    4.     call glEnable
    5.  
    6.     push GL_SMOOTH
    7.     call glShadeModel
    8.  
    9.     push var00f
    10.     push var00f
    11.     push var00f
    12.     push var05f
    13.     call glClearColor
    14.  
    15.     push var10f
    16.     call glClearDepth
    17.  
    18.     push GL_PERSPECTIVE_CORRECTION_HINT
    19.     push GL_NICEST
    20.     call glHint
    21.  
    22.     push GL_SRC_ALPHA
    23.     push GL_ONE
    24.     call glBlendFunc
    25.  
    26.     push GL_BLEND
    27.     call glEnable
    28.     }
    Выбивает:
    Unhandled exception at 0x004bc842 in lesson9.exe: 0xC0000096: Privileged instruction.

    В чем ошибка?
     
  6. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    FullZer0
    Если нужны координаты, то надо просто спроецировать два конца отрезка. Чтобы найти проекцию точки, надо решить систему из 2х уравнений: (1) уравнение прямой, на которую производится проекция; (2) уравнение прямой, перпендикулярной первой и проходящей через проецируемую точку. Решение приводить не буду, сразу приведу код на Си. Обозначение как и раньше: отрезок задается концами (x1,y1),(x2,y2), прямая - двумя точками (x3,y3),(x4,y4). Концы отрезка-проекции обозначим (xp1,yp1) и (xp2,yp2).
    Код (Text):
    1. double a = x4-x3, b = y4-y3, aa = a*a, bb = b*b, ab = a*b, c = a*a+b*b;
    2.  
    3. double xp1 = (aa*x1 + bb*x3 + ab*(y1-y3))/c;
    4. double yp1 = (bb*y1 + aa*y3 + ab*(x1-x3))/c;
    5.  
    6. double xp2 = (aa*x2 + bb*x3 + ab*(y2-y3))/c;
    7. double yp2 = (bb*y2 + aa*y3 + ab*(x2-x3))/c;
    писал на скорую руку, на деле лучше оформить некоторые повторяющиеся части этого кода (типа "(aa*x1 + bb*x3 + ab*(y1-y3))/c") в функцию-помошник. Я лишь показал суть.
    Надеюсь ниче не напутал, пока печатал.

    Кстати, если уже есть координаты отрезка-проекции, то можно сразу и длину посчитать:
    Код (Text):
    1. double x = xp2-xp1, y = yp2-yp1;
    2. double len = sqrt(x*x+y*y);
     
  7. Dresden

    Dresden New Member

    Публикаций:
    0
    Регистрация:
    8 дек 2008
    Сообщения:
    1
    Народ, помогите пожалуйста
    Нужно 2 небольшие программы с описанием их работы:
    1я-с использованием функции оAh
    2я-с использованием прерывания int 08h

    Сам в ассемблере ничего не понимаю, поэтому и прошу
     
  8. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    FullZer0
    Ну проецировать один отрезок на одну прямую ты уже можешь, осталось только перебрать все пары for-for'ом.
     
  9. FullZer0

    FullZer0 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2008
    Сообщения:
    24
    2 meduza :
    Да с массивом думаю сам разберусь =)
    Главное было узнать как координаты вычесть !
    Кстати - СПАСИБО !
     
  10. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.551
    Адрес:
    Russia
    Arnor
    Выкладывай весь сорс, по коду ошибок, приводящих к такому исключению, не наблюдаю.
     
  11. Arnor

    Arnor New Member

    Публикаций:
    0
    Регистрация:
    10 ноя 2008
    Сообщения:
    10
    Вот-с, там есть файл lesson9_org.cpp - это оригинальный с урока, не обращай внимание на него
     
  12. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.551
    Адрес:
    Russia
    Arnor
    Эх... Хотяб иногда отладчик смотрели бы...
    Рабочий код. Компиль студии отказывался делать норм дальние вызовы без dword ptr [].
    Код (Text):
    1.     __asm {
    2.     push GL_TEXTURE_2D
    3.     call dword ptr [glEnable]
    4.  
    5.     push GL_SMOOTH
    6.     call dword ptr [glShadeModel]
    7.  
    8.     push var00f
    9.     push var00f
    10.     push var00f
    11.     push var05f
    12.     call dword ptr [glClearColor]
    13.  
    14.     push var10f
    15.     call dword ptr [glClearDepth]
    16.  
    17.     push GL_PERSPECTIVE_CORRECTION_HINT
    18.     push GL_NICEST
    19.     call dword ptr [glHint]
    20.  
    21.     push GL_SRC_ALPHA
    22.     push GL_ONE
    23.     call dword ptr [glBlendFunc]
    24.  
    25.     push GL_BLEND
    26.     call dword ptr [glEnable]
    27.     }
    Да и отключите chkesp когда проверять будете. Иначе будет ругаться на то, что стек не такой как надо ). Ну а чего вы хотели, делая в наглую асм вставки.
    Да и еще 1 - зря вы это затеяли. Смысла нет - вставлять такие вставки.
    Ну да ладно, решать вам. У студии отличный компилятор, и может неплохо соптимейзить код. Асм вставки для другого предназначены.
    Чтобы можно было реализовывать свои быстрые FPU\SSE вычисления например, или делать некий base independed код, который можно бы было потом выполнить. В общем это уже другая тема.
     
  13. Remlin

    Remlin New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2008
    Сообщения:
    5
    Помогите, плиз, нужна программа которая выводит полное имя под которым она была запущена.
     
  14. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Remlin
    Какое имя, своё или имя пользователя ?
     
  15. Arnor

    Arnor New Member

    Публикаций:
    0
    Регистрация:
    10 ноя 2008
    Сообщения:
    10
    TermoSINteZ, спасибо за то, что не поленились посмотреть и помочь!
    Я понимаю, что вставки может глупая затея. Но это будет идти замисть курсовой работы, а там неменее глупое задание - протабулировать функцию и так же зделать асм вставки. Принести преподу просто с++ код немогу - в задании четко написано, что вставки должны быть в обезательном порядке. Вот и я занимаюсь глупостями)

    А каким образом это зделать?
     
  16. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.551
    Адрес:
    Russia
    Arnor
    Самое простое - собрать Release проект, а не Debug.
     
  17. FullZer0

    FullZer0 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2008
    Сообщения:
    24
    2 meduza :
    Слушай я тут походу написания не понял как прямую в С++ нарисовать , прямая по ходу - без конечна ! Есть в С++ функция для ее прорисовки ?
     
  18. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    FullZer0
    Находишь точки её пересечения с границами экрана (элементарная арифметика) и рисуешь её бесконечную ровно столько сколько видно ;))
     
  19. FullZer0

    FullZer0 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2008
    Сообщения:
    24
    то есть в принципе можно рисовать между краев екрана, используя GetMaxX GetMaxY !?
     
  20. Remlin

    Remlin New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2008
    Сообщения:
    5
    Clerk
    Имя программы, т.е. нужно чтобы она брала из программного сегмента два байта по адресу es:002c, эти 2 байта вроде как адрес, по которому надо найти место где 2 нулевых байта после которых и будет нужное имя, которое и надо вывести.Вроде както так