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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2012, 19:40   #1
Foxtrot_1
Пользователь
 
Аватар для Foxtrot_1
 
Регистрация: 14.06.2009
Сообщений: 67
Стрелка Компиляция программы

Добрый вечер форумчане, прога ругается на компиляцию в C++Builder 6.

Программа форматирует двадцатую дорожку диска, создавая на ней сектора размером 256 байтов. После форматирования программа записывает в первый сектор нестандартной дорожки строку, введенную с клавиатуры. Затем для контроля содержимое этого сектора считывается и отображается на экране.

Код:
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
#include <bios.h>
#include "sysp.h"

// Номер форматируемой дорожки

#define TRK 20

// Код размера сектора - 256 байт

#define SEC_SIZE 1

union REGS inregs, outregs;
char _far diskbuf[512];
char _far diskbuf1[512];
char buf[80];

void main(void);
void main(void) {

        struct diskinfo_t di;
        unsigned status;
        unsigned char old_sec_size, old_fill_char, old_eot;
        int i, j;
        DPT  _far *dpt_ptr;

        printf("nПрограмма уничтожит содержимое"
                 "n20-й дорожки диска А:."
                 "nЖелаете продолжить? (Y,N)n");

// Ожидаем ответ оператора и анализируем его

        i = getch();
        if((i != 'y') && (i != 'Y')) exit(-1);

// Получаем адрес таблицы параметров дискеты

        dpt_ptr = get_dpt();

// Сохраняем старые значения из таблицы параметров

        old_sec_size  = dpt_ptr->sec_size;
        old_fill_char = dpt_ptr->fill_char;
        old_eot       = dpt_ptr->eot;

// Устанавливаем в таблице параметров дискеты
// код размера сектора, символ заполнения при
// форматировании, количество секторов на дорожке

        dpt_ptr->sec_size  = SEC_SIZE;
        dpt_ptr->fill_char = 0x77;
        dpt_ptr->eot       = 15;

// Устанавливаем тип диска

        inregs.h.ah = 0x17;
        inregs.h.al = 3;
        inregs.h.dl = 0;
        int86(0x13, &inregs, &outregs);

// Устанавливаем среду для форматирования

        inregs.h.ah = 0x18;
        inregs.h.ch = TRK;
        inregs.h.cl = dpt_ptr->eot;
        inregs.h.dl = 0;
        int86(0x13, &inregs, &outregs);

// Подготавливаем параметры для функции форматирования

        di.drive    = 0;
        di.head     = 0;
        di.track    = TRK;
        di.sector   = 1;
        di.nsectors = 15;
        di.buffer   = diskbuf;

// Подготавливаем буфер формата для 15-ти секторов

        for(i=0, j=1; j<16; i += 4, j++) {
                diskbuf[i]    = TRK;
                diskbuf[i+1]  = 0;
                diskbuf[i+2]  = j;
                diskbuf[i+3]  = SEC_SIZE;
        }

// Вызываем функцию форматирования дорожки

        status = _bios_disk(_DISK_FORMAT, &di) >> 8;
        printf("nФорматирование завершилось с кодом: %d",status);

// Записываем информацию в нестандартный сектор

        printf("nВведите строку для записи в нестандартный сектор,"
                  "nдлина строки не должна превышать 80 байтов"
                  "n->");

        gets(buf);
        strcpy(diskbuf,buf);

        di.drive    = 0;
        di.head     = 0;
        di.track    = 20;
        di.sector   = 1;
        di.nsectors = 1;
        di.buffer   = diskbuf;

        status = _bios_disk(_DISK_WRITE, &di) >> 8;

        if(status) {
                printf("nОшибка при записи в нестандартный сектор: %d",
                         status);
                exit(-1);
        }

        di.drive    = 0;
        di.head     = 0;
        di.track    = 20;
        di.sector   = 1;
        di.nsectors = 1;
        di.buffer   = diskbuf1;

        for(i = 0; i < 3; i++) {
                 status = _bios_disk(_DISK_READ, &di) >> 8;
                 if( !status ) break;
        }

        printf("nПрочитано из нестандартного сектора:n%sn",
                        diskbuf1);

// Восстанавливаем старые значения в
// таблице параметров дискеты

        dpt_ptr->sec_size  = old_sec_size;
        dpt_ptr->fill_char = old_fill_char;
        dpt_ptr->eot       = old_eot;

        exit(0);
}
Всегда бывает лучше, чем ты хочешь!!!

Последний раз редактировалось Foxtrot_1; 26.12.2012 в 20:02.
Foxtrot_1 вне форума Ответить с цитированием
Старый 26.12.2012, 22:26   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
прога ругается
Где ругается?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.12.2012, 23:05   #3
Foxtrot_1
Пользователь
 
Аватар для Foxtrot_1
 
Регистрация: 14.06.2009
Сообщений: 67
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Где ругается?
[C++ Error] Unit1.cpp(5): E2209 Unable to open include file 'bios.h'
[C++ Error] Unit1.cpp(6): E2209 Unable to open include file 'sysp.h'
[C++ Error] Unit1.cpp(16): E2450 Undefined structure 'REGS'
[C++ Error] Unit1.cpp(16): E2449 Size of 'inregs' is unknown or zero
[C++ Error] Unit1.cpp(16): E2450 Undefined structure 'REGS'
[C++ Error] Unit1.cpp(16): E2449 Size of 'outregs' is unknown or zero
[C++ Error] Unit1.cpp(17): E2141 Declaration syntax error
[C++ Error] Unit1.cpp(18): E2238 Multiple declaration for '_far'
[C++ Error] Unit1.cpp(17): E2344 Earlier declaration of '_far'
[C++ Error] Unit1.cpp(18): E2141 Declaration syntax error
[C++ Error] Unit1.cpp(24): E2450 Undefined structure 'diskinfo_t'
[C++ Error] Unit1.cpp(24): E2449 Size of 'di' is unknown or zero
[C++ Error] Unit1.cpp(24): E2450 Undefined structure 'diskinfo_t'
[C++ Error] Unit1.cpp(28): E2451 Undefined symbol 'DPT'
[C++ Error] Unit1.cpp(28): E2379 Statement missing ;
[C++ Error] Unit1.cpp(41): E2451 Undefined symbol 'dpt_ptr'
[C++ Error] Unit1.cpp(41): E2268 Call to undefined function 'get_dpt'
[C++ Error] Unit1.cpp(59): E2315 'h' is not a member of 'REGS', because the type is not yet defined
[C++ Error] Unit1.cpp(60): E2315 'h' is not a member of 'REGS', because the type is not yet defined
[C++ Error] Unit1.cpp(61): E2315 'h' is not a member of 'REGS', because the type is not yet defined
[C++ Error] Unit1.cpp(62): E2268 Call to undefined function 'int86'
[C++ Error] Unit1.cpp(66): E2315 'h' is not a member of 'REGS', because the type is not yet defined
[C++ Error] Unit1.cpp(67): E2315 'h' is not a member of 'REGS', because the type is not yet defined
[C++ Error] Unit1.cpp(68): E2315 'h' is not a member of 'REGS', because the type is not yet defined
[C++ Error] Unit1.cpp(69): E2315 'h' is not a member of 'REGS', because the type is not yet defined
[C++ Error] Unit1.cpp(69): E2228 Too many error or warning messages
Изображения
Тип файла: jpg Снимок3.jpg (131.9 Кб, 123 просмотров)
Всегда бывает лучше, чем ты хочешь!!!
Foxtrot_1 вне форума Ответить с цитированием
Старый 27.12.2012, 08:51   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

A Builder разве может компилировать DOS программы?
waleri вне форума Ответить с цитированием
Старый 27.12.2012, 11:22   #5
Foxtrot_1
Пользователь
 
Аватар для Foxtrot_1
 
Регистрация: 14.06.2009
Сообщений: 67
По умолчанию

Работает в DOS, но написана на С++
Всегда бывает лучше, чем ты хочешь!!!
Foxtrot_1 вне форума Ответить с цитированием
Старый 27.12.2012, 11:33   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Работает в DOS, но написана на С++
Компилируй ее в другом компиляторе, который под ДОС заточен. Билдер ее врядли возьмет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компиляция программы Anubys C++ Builder 1 09.05.2012 20:11
Компиляция программы atenon C++ Builder 2 15.06.2011 18:55
Компиляция программы и её запуск Kasper1 Общие вопросы по Java, Java SE, Kotlin 2 08.01.2011 15:25
(c/c++)компиляция программы @lenk@ Помощь студентам 0 02.06.2010 20:46
Компиляция программы в С++ Builder 5 Kreadlling C++ Builder 1 17.09.2009 16:58