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

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

  1. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    LomuX
    Ну не знаю.. А как тогда обьяснить что если я настрою в RTC будильник, выкину из компа жёсткий диск, выключу его(не вынимая из сети, чтоб 5V доп. было) и когда будильник сработает комп включитсо, в оперативе ведь ничего не выполняется да и значения не имеет что там, микрокод биоса это включает или там через аппаратную логику чипсета ртк на ибп завязан не знаю.
     
  2. OlechkaA

    OlechkaA New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2008
    Сообщения:
    35
    q_q
    А можно ещё вопрос.
    А если мне надо разгрузить три таблицы, то как надо????
     
  3. LomuX

    LomuX New Member

    Публикаций:
    0
    Регистрация:
    18 ноя 2008
    Сообщения:
    6
    Clerk

    Если так сложно, то ж.па...

    вот всё что нарыл:
    http://olddos.narod.ru/doc/comp/bsp/v33/ch4.htm
    http://www.cyberguru.ru/programming/assembler/assembler-programming-timers-sound-page5.html
    http://forum.codenet.ru/showthread.php?t=32761
    http://www.codenet.ru/progr/asm/cmos.php

    дополнительно:

    ;---сбрасываем будильник------------------------------
    mov ah,07h
    int 1ah
    ;---устанавливаем будильник-------]--------------------
    mov ah,06h
    mov ch,hours
    mov cl,minutes
    mov dh,seconds
    int 1ah

    Адресное пространство, выделяемое второму контроллеру
    прерываний – 0А0h-0ВFh. Адреса, реально используемые контроллером–
    0А0h-0А1h. Вместе с этим изменился адрес регистра NMI – для разрешения
    или запрета немаскируемых прерываний используется запись бита 7 по
    адресу 70h. 1 в этом бите запрещает поступление сигнала NMI на
    процессор, 0 - разрешает;

    Для обращения к
    внутренним регистрам RTC и CMOS-памяти используются два адреса - 70h
    и 71h. В первом цикле обращения по адресу 70h заносится внутренний
    адрес регистра, по которому должно быть выполнено обращение. Во-втором
    цикле - по адресу 71h выполняется чтение или запись выбранного в первом
    цикле регистра.

    это АЛЕСС...

    поплачусь в жилетку:

    я - админ (самоучка) работаю в конторе, 8 серверов, пару сотен машин. Обязанности: сервера, машины (есть помощники), хелп юзверям...
    пошёл учиться (ну хотел корочки и знания по сетям (осталось корочки)) учёба 5 лет(заочно)(сейчас последний курс)... за это время:
    delfi
    c#
    c++
    UML
    Prolog
    Flash
    html
    assembler
    статистика
    моделирование

    + психология, социология, бугалтерия, экономика, математика, физика.... и ещё много всего "интересного"

    а-а-а... ну ещё пару предметов по несколько часов по системам и сетям...

    учитывая что математику и програмирование не любил (а теперь в дрожь бросает)... осталось желание получить хотя бы корку с гордой надписью СЕТЕВОЙ АДМИНИСТРАТОР.

    ... а так уже всё так достало..... одни мысли и те матом....

    ну это всё не потеме...

    может у тебя есть код на асме завязанный на железе (типа который я в примере выставил) с пояснениями и желательно покороче...

    спасибо.

    да кстати... С Новым годом! :)
     
  4. OlechkaA

    OlechkaA New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2008
    Сообщения:
    35
    Здравствуйте, помогите, пожалуйста, решить вот такую проблемку.

    Вот файл, который нужно загрузить
    1;1;дискинезия;+
    1;2;дискинез;я ( ; - это разделитель,его печатать не надо)

    Как сделать сам вот этот цикл, который передвигается по записям (в строчку и столбик) и записывает.
    recordset->Fields->GetItem(strName)->PutValue(var);
    А var-как нужно объявить????
     
  5. OlechkaA

    OlechkaA New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2008
    Сообщения:
    35
    Вот что я сделала:
    Код (Text):
    1. //чтение и запись
    2.     int nNumFields = recordset->Fields->Count;
    3.     while (!feof(fvh))  //!recordset->adoEOF
    4.     {
    5.         /*чтение из файла
    6.         for(long i=0;i<nNumFields;i++)
    7.         {  
    8.            connection->Execute("DELETE FROM Тип 1"); //удаление записей таблицы
    9.            recordset->AddNew(); // добавление новой записи
    10.  
    11.             _bstr_t strName = recordset->Fields->Item[i]->Name;
    12.             _bstr_t strValue = recordset->Fields->Item[i]->Value;
    13.             _variant_t var;
    14.             var = recordset->Fields->GetItem(strName)->PutValue();
    15.  
    16.  
    17.                                  //CString strText =(char *)_bstr_t(var);
    18.                                  //TCHAR * pBuf = (TCHAR *)(LPCTSTR)strText;
    19.                                  //txt_length=lstrlen(pBuf);
    20.                                                       //pBuf[txt_length]=';';
    21.                                 //WriteFile(f, pBuf, txt_length+1, &written, NULL);
    22.         } */
    23.                                                      //WriteFile((HANDLE)fvih, "\n", 1, &written, NULL);
    24.        
    25.         //подтвердить внесение изменений
    26.         recordset->Update();
    27.         //передвижение по записям
    28.         recordset->MoveNext();
    29.     }
    30.  
    31.     //закрытие таблицы
    32.     recordset->Close();
     
  6. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    OlechkaA
    #1262 > надо разгрузить три таблицы
    Если "разгрузить" - это "загрузить", то написать подпрограмму загрузки одной таблицы (имя таблицы и исходные данные, например, имя файла, будут параметрами) и вызывать ее три раза с соответствующими параметрами.

    #1264 > Вот файл, который нужно загрузить ...
    Где описание структуры таблицы, в которую грузить файл?

    #1265 > Вот что я сделала ...
    Код (Text):
    1. int nNumFields = recordset->Fields->Count;
    2. while (!feof(fvh))
    3. {
    4.     recordset->Update();
    5.     recordset->MoveNext();
    6. }
    7. recordset->Close();
    остальное закомментировано.
    В коде отсутствуют:
    1) чтение строки из файла;
    2) разбор строки на значение полей;
    3) добавление новой записи;
    4) заполнение записи;
    5) не видно как открыт recordset.
    т.е. в коде почти ничего нет.

    Что означает "DELETE FROM Тип 1"?
     
  7. OlechkaA

    OlechkaA New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2008
    Сообщения:
    35
    Если можно, то удалить все записи из таблицы, например, connection->Execute("DELETE FROM Table1"),
    "DELETE FROM Тип 1"- Тип 1 - это имя одной из трех моих таблиц

    Вот структура моей таблицы:
    recordset->Open("INSERT INTO Тип 1 VALUES ('Номер словосочетания', '№ основы в словосочетании', 'Возможная основа', 'Возможное словосочетание')", connection.GetInterfacePtr(), ADODB::adOpenForwardOnly, ADODB::adLockReadOnly, ADODB::adCmdText);

    Я вообще-то не очень понимаю в этом ADO. :-((
     
  8. OlechkaA

    OlechkaA New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2008
    Сообщения:
    35
    q_q
    А как сделать вызов таблицы, чтобы параметром было имя файла?
     
  9. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    OlechkaA
    > Тип 1 - это имя одной из трех моих таблиц
    Imho пробел в имени таблицы/поля плохо.

    > Вот структура моей таблицы ...
    Это не структура. Это попытка выполнить sql-команду, которая, добавляет запись в таблицу. Под структурой таблицы я понимаю описание ее (таблицы) полей, т.е. их наименование, тип, значение по умолчанию и т.п.

    > как сделать вызов таблицы, чтобы параметром было имя файла?
    Не понял. Я писал про вызов подпрограммы.
     
  10. Andrej_ka

    Andrej_ka New Member

    Публикаций:
    0
    Регистрация:
    3 янв 2009
    Сообщения:
    3
    Привет ребята!
    Новичок хотит спросить))
    Вот отсюда http://sources.codenet.ru/?cid=9 взял исходник PEinfo v 1.1.
    В универе дали задание сделать программу вывода таблиц экспорта и импорта.
    Взял с Вашего сайта компилятор http://www.wasm.ru/toollist.php?list=7
    Проблема в том, что надо слегка перекомпилировать, изменить ФИО автора на свою, убрать лишние поля и сдать лабу в универе.. Но увы, почему то не строиться проект. Пробовал и
    Project/Compile Resource File
    Project/Build All
    Ничего не строиться, никакого исполняемого файла, наверное что то не так делаю?.
    Run Project - вызываеться уже построенный проект, а новый не строиться..
    Помогите пожалуйсто. Хочу сделать, перекомпилировать но не выходит, увы...
    Заранее спасибо.
     
  11. OlechkaA

    OlechkaA New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2008
    Сообщения:
    35
    q_q
    Вот эта штучка не работает, выдается ошибка:error C2660: 'ADODB::_Connection15::Execute' : function does not take 1 arguments, какой аргумент добавить??

    connection->Execute("DELETE FROM Тип_1"); //удаление записей таблицы
     
  12. OlechkaA

    OlechkaA New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2008
    Сообщения:
    35
    Структура:
    Таблица называется Тип_1(Тип_2 и Тип_3 такие же, только значения в них разные)
    Номер_словосочетания-Числовой(длинное целое)
    №_основы_в_словосочетании-Числовой(целое)-значение по умолчанию 0
    Возможная_основа-Текстовый(50)
    Возможное_окончание-Текстовый(10)
    Обязательных полей нет, ключей тоже нет.
    Такая???
     
  13. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    ухты. это в каком универе токое задают?
     
  14. OlechkaA

    OlechkaA New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2008
    Сообщения:
    35
    Просто запись заданных значений в заданные поля таблицы у меня получилась, а как сделать запись из файла, я не пойму. Мне программу уже послезавтра сдавать, а она не работает. Может быть посмотрите как все-таки это разбиение сделать, точнее просто разбиение я могу, а вот чтоб оно записывало в таблицу никак :-(((

    Код (Text):
    1. int main(int argc, _TCHAR* argv[])
    2. {   DWORD pid;
    3. //    DWORD written;
    4.     char vhod[13];
    5.     printf(Rus("Введите имя входного файла: "));
    6.     gets(vhod);
    7.     strcat(vhod,".txt");
    8.     fvh=fopen(vhod, "r");
    9.     if (fvh==NULL)
    10.         {  
    11.             printf (Rus("Файл \"%s\" не найден в текущем каталоге!\n"), vhod);
    12.             return 1;
    13.         }
    14.         char str [1000];
    15.         for(int i=0;!feof(fvh); i++)
    16.         str[i]=fgetc(fvh);
    17.         str[i]='\0';
    18.    
    19.     HANDLE  h1=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFunc1,&str,NULL,&pid);
    20.     WaitForSingleObject(h1, INFINITE);
    21.     HANDLE  h2=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFunc2,&str,NULL,&pid);
    22.     WaitForSingleObject(h2, INFINITE);
    23.     HANDLE  h3=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFunc3,&str,NULL,&pid);
    24.     WaitForSingleObject(h3, INFINITE);
    25.     fclose(fvh);
    26.    
    27.     //Доступ к базе
    28.     HRESULT hr1;
    29.     CoInitialize(NULL); //инициализация среды COM, посредством вызова API функции
    30.     ADODB::_ConnectionPtr connection; //объявление указателя на соединение
    31.     hr1 = connection.CreateInstance(__uuidof(ADODB::Connection)); //Создание объекта Connection
    32.     if(!SUCCEEDED(hr1))
    33.         return 1;
    34.     _bstr_t bsConnString (L"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:\\ТЕКСТ.mdb");
    35.     _bstr_t bsUserID(L"");
    36.     _bstr_t bsUserPwd(L"");
    37.     //создание соединения с базой
    38.     connection->Open(bsConnString, //строка соединения
    39.                      bsUserID, //имя пользователя
    40.                      bsUserPwd, //пароль пользователя
    41.                      ADODB::adConnectUnspecified);  //синхронное соединение (м.б.асинхронным)
    42.      
    43.  
    44. /*HRESULT hr1 = connection->Open(bsConnString, bsUserID, bsUserPwd, ADODB::adConnectUnspecified);
    45.     if(SUCCEEDED(hr1))
    46. { printf("Olechka");
    47.   //Если макрос SUCCEEDED вернул true, значит мы успешно соединились.
    48. }*/
    49.  
    50.     HRESULT hr;
    51.     ADODB::_RecordsetPtr recordset; //для доступа и управления данными
    52.     hr = recordset.CreateInstance(__uuidof(ADODB::Recordset));
    53.     if(!SUCCEEDED(hr))
    54.         return 1;
    55.  
    56.     //Доступ к таблице
    57.         // _bstr_t bsCommand(L"select * from Тип_1");
    58.          //bsCommand +=fname1;
    59.            _bstr_t strTableName="Тип_1";
    60.            recordset->Open(strTableName, //источник выборки(набора записей),имя таблицы
    61.                            connection.GetInterfacePtr(),//соединение, используемое для создания набора записей (выборки)  ссылка на connection
    62.                            ADODB::adOpenForwardOnly, //для курсора(статический), прокрутка записей только вперед
    63.                            //ADODB::adLockPessimistic, //тип блокировки записей, запись блокируется сразу после начала редактирования и до момента сохранения записей
    64.                            ADODB::adLockOptimistic, //провайдер осуществляет блокировку записей только в момент сохранения изменений
    65.                            ADODB::adCmdTable); //возвращае long(2),создать запрос, возвращающий все строки заданной таблицы
    66.  
    67.  
    68.     //чтение и запись
    69.     //int nNumFields = recordset->Fields->Count;
    70.     char simv;
    71.     while (!feof(fvh))  //!recordset->adoEOF
    72.     {
    73.         //чтение из файла и запись в базу
    74.         //connection->Execute("DELETE FROM Тип_1"); //удаление записей таблицы
    75.         //recordset->Delete(ADODB::adAffectAll);
    76.            
    77.                 simv=fgetc(fvh);
    78.                 if(simv==';')
    79.                    {
    80.                        putchar('\n');
    81.                        //передвижение по записям
    82.                        recordset->MoveNext();
    83.                        
    84.                   }
    85.                 else
    86.                 putchar(simv);  
    87.                        // добавление новой записи
    88.                        recordset->AddNew();
    89.                        //recordset->Fields->Item["Возможная_основа"]->Value=_bstr_t("Запись получилась");
    90.  
    91.                        _bstr_t strName = recordset->Fields->Item[i]->Name;
    92.                        recordset->Fields->GetItem(strName)->PutValue(var);
    93.                        //подтвердить внесение изменений
    94.                        recordset->Update();
    95.  
    96.     }
    97.  
    98.     //закрытие таблицы
    99.     recordset->Close();
    100.     //закрытие БД
    101.     connection->Close();
    102.  
    103.     getch();
    104.     return 0;
    105. }
     
  15. OlechkaA

    OlechkaA New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2008
    Сообщения:
    35
    Вот эта программка печатает мой файл просто в столбик, получается нужно добавить передвижение по записям и запись в таблицу.(Запись одной строчки->передвижение, запись->передвижение,так?) Да, все строчки всегда заполнены, поэтому пустых полей не будет.
    Код (Text):
    1. #include "stdafx.h"
    2. char Bufer[100];
    3. char* Rus(const char* text)
    4. {
    5.     CharToOem(text,Bufer);
    6.     return Bufer;
    7. }
    8. int _tmain(int argc, _TCHAR* argv[])
    9. {   FILE *f;
    10.     char simv;
    11.     f=fopen("Тип 1.txt","r");
    12.     if (f==NULL)
    13.       {puts (Rus("Файл Тип 1 не найден!"));
    14.        //getch();
    15.       }
    16.     else
    17.         while(!feof(f))
    18.             {
    19.                 simv=fgetc(f);
    20.                 if(simv==';') putchar('\n');
    21.                 else
    22.                 putchar(simv);
    23.             }
    24.         fclose(f);
    25.     return 0;
    26. }
     
  16. OlechkaA

    OlechkaA New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2008
    Сообщения:
    35
    q_q
    Может быть как-то вот так должна загрузка выглядеть(только я незнаю как некоторые функции писать с помощью ADO)

    Код (Text):
    1. char simv;
    2.     while (!feof(fvh))  //!recordset->adoEOF
    3.     {
    4.         //чтение из файла и запись в базу
    5.         //connection->Execute(bsCommand, &vtMissing,ADODB::adCmdText); //удаление записей таблицы?????????
    6.         //recordset->Delete(ADODB::adAffectAll);
    7.            
    8.                 simv=fgetc(fvh);
    9.                 if(simv=='\n')
    10.                    {
    11.                        //передвижение по записям
    12.                        recordset->MoveNext();
    13.                        
    14.                   }
    15.                 else { if(simv==';')
    16.                        putchar('\n');
    17.                        else
    18.                        putchar(simv);  
    19.                        // добавление новой записи
    20.                        recordset->AddNew();
    21.                        //recordset->Fields->Item["Возможная_основа"]->Value=_bstr_t("Запись получилась");
    22.  
    23.                        _bstr_t strName = recordset->Fields->Item[i]->Name;
    24.                        recordset->Fields->GetItem(strName)->PutValue(var); //_variant_t var; var=
    25.                        //подтвердить внесение изменений
    26.                        recordset->Update();
    27.                      }
    28.  
    29.     }
     
  17. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    OlechkaA
    #1274 > Мне программу уже послезавтра сдавать
    см. аттач
     
  18. OlechkaA

    OlechkaA New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2008
    Сообщения:
    35
    q_q
    Спасибо.
    А что такое аттач???
    А foo.rar Это что???
     
  19. OlechkaA

    OlechkaA New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2008
    Сообщения:
    35
    q_q
    Мне что все из этого файла нужно, а покороче никак????
     
  20. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    OlechkaA
    > А foo.rar Это что???
    В архиве:
    1) исходник;
    2) собранный exe'шник;
    3) база (acces97) с которой он (exe'шник) работает (структуру таблиц взял из твоего #1272);
    4) bat-файл, который демонстрирует, как запускать exe'шник.

    > а покороче никак?
    Я мог бы ограничиться исходником, а хватит ли тебе времени разобраться в нем? Это не хеловорлд.