информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Страшный баг в WindowsВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[C++] Вот давеча читал книгу Герберта Шильдта... 26.10.01 16:16  
Автор: Смайлик Статус: Незарегистрированный пользователь
<"чистая" ссылка>
И попытался выложить в Borland С++ следующего рода мозаику из книжки,
а оно мне выдает, что программа выполнила недопустимую операцию.
Так вот, многоуважаемый All, уваж начинающего, подскажи в чем проблеммка и вообще как поприятнее оформить эти функции в C++.

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

/*
Копирование символов из экрана в буфер
*/

#include <stdio.h>
#include <dos.h>

//Прототипы

void save_video(int,int,int,int, int);
void goto_xy(int, int);


main()
{
int startx=1, starty=0, endx=5, endy=2;
int buffer[4000]=0;
int *buff_ptr;
buff_ptr=&buffer[4000];
save_video(startx, starty, endx, endy, buff_ptr);
return 0;
}


//Функции

void goto_xy(int enx1, int eny1)

{
union REGS r;

r.h.ah=2;
r.h.dl=enx1;
r.h.dh=eny1;
r.h.bh=0;
int86(0X10,&r,&r);
}


void save_video(int stx,int sty,int enx,int eny, int* buffer)
{
union REGS r;
for (int j=sty;j<=eny;j++)
for(int i=stx;i<=enx;i++)
{
goto_xy(i,j);
r.h.ah=8;
r.h.bh=0;
buffer++=int86(0X10,&r,&r);
putchar('*');
}
}
[C++] Шилдт оно конечно дело хорошее, но для изучения изыка не подходит 26.10.01 18:06  
Автор: :-) <:-)> Статус: Elderman
Отредактировано 26.10.01 18:30  Количество правок: 1
<"чистая" ссылка>
Если ты не можешь прогу даже скомпилировать (4синтаксическихошибки тут будет как минимум), то тебе надо учить C, а не читать Шилдта :-)

> /*
> Копирование символов из экрана в буфер
> */
>
> #include <stdio.h>
> #include <dos.h>
>
> //Прототипы
>
> void save_video(int,int,int,int, int);
void save_video(int,int,int,int, int*);

> void goto_xy(int, int);
>
>
> main()
> {
> int startx=1, starty=0, endx=5, endy=2;
> int buffer[4000]=0;
int buffer[4000];

> int *buff_ptr;
> buff_ptr=&buffer[4000];
эти 2 строчки выкинуть

> save_video(startx, starty, endx, endy, buff_ptr);
save_video(startx, starty, endx, endy, buffer);

> return 0;
> }
>
>
> //Функции
>
> void goto_xy(int enx1, int eny1)
>
> {
> union REGS r;
>
> r.h.ah=2;
> r.h.dl=enx1;
> r.h.dh=eny1;
> r.h.bh=0;
> int86(0X10,&r,&r);
> }
>
>
> void save_video(int stx,int sty,int enx,int eny, int*
> buffer)
> {
> union REGS r;
> for (int j=sty;j<=eny;j++)
> for(int i=stx;i<=enx;i++)
> {
> goto_xy(i,j);
> r.h.ah=8;
> r.h.bh=0;
> buffer++=int86(0X10,&r,&r);
*buffer++=int86(0X10,&r,&r);

> putchar('*');
> }
> }
[C++] Шилдт оно конечно дело хорошее, но для изучения изыка не подходит 26.10.01 19:19  
Автор: Смайлик Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Уж и незнаю - она все равно ошибку выдает...

>Шилдт оно конечно дело хорошее, но для изучения изыка не подходит
Я понимаю, и стараюсь читать другие книжки, но Шильдт уж очень
интересно все излогает. А кроме того хочется всамделошную менюшку
из псевдографики)))...

>Если ты не можешь прогу даже скомпилировать (4синтаксическихошибки)
Их (ошибок) было и одна, и восемь и три. А компилятор так тот вообще
умочка ни тебе предупреждений, ни синтетических ошибок, прямо золотко а не
компилятор. Хотя плохому танцору конечно)))...

Просто когда пишешь и у тебя что-то не получается, невольно начинаешь
перебирать различные вариации, а при отсутствии опыта (случается и такое),
постепенно перестаешь понимать что правильно, а что не очень.

Итак окончательный вариант, как я понял:

/*
Копирование экрана в буфер
*/

#include <stdio.h>
#include <dos.h>

//Прототипы
void save_video(int,int,int,int,int*);
void goto_xy(int, int);
main()
{
int startx=1, starty=0, endx=5, endy=2;
int buffer[4000];
save_video(startx, starty, endx, endy, buffer);
return 0;
}
//Функции
void goto_xy(int enx1, int eny1)
{union REGS r;
r.h.ah=2;
r.h.dl=enx1;
r.h.dh=eny1;
r.h.bh=0;
int86(0X10,&r,&r);
}
void save_video(int stx,int sty,int enx,int eny, int* buffer)
{
union REGS r;
for (int j=sty;j<=eny;j++)
for(int i=stx;i<=enx;i++)
{
goto_xy(i,j);
r.h.ah=8;
r.h.bh=0;
*buffer++=int86(0X10,&r,&r);
putchar('*');
}
}

Может кто скажет компилится ли этот код у него на компьютере.

PS: Самое обидное, что первую строчку строчку он у меня нормально
отрабатывает ***, а вот при переходе на вторую
"Программой предпринята попытка исполнить недопустимую операцию
место ошибки 0720:0788"
[C++] учи матчасть :))) 26.10.01 16:38  
Автор: XR <eXtremal Research> Статус: The Elderman
<"чистая" ссылка>

> main()
> {
> int startx=1, starty=0, endx=5, endy=2;
> int buffer[4000]=0;
> int *buff_ptr;
> buff_ptr=&buffer[4000];

Ну ка подумай - куда сей указатель смотрит


[skip]
>
> void save_video(int stx,int sty,int enx,int eny, int*
> buffer)
> {
> union REGS r;
> for (int j=sty;j<=eny;j++)
> for(int i=stx;i<=enx;i++)
> {
> goto_xy(i,j);
> r.h.ah=8;
> r.h.bh=0;
> buffer++=int86(0X10,&r,&r);
.... тоже прикольный код :))))


> putchar('*');
> }
> }
[C++] Млин, чувствую судьба умереть глупым, а как не хочится, тыб знал(((... 26.10.01 17:49  
Автор: Смайлик Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Чтож делать то?...

Ничего не придумывается, кроме как:

buff_ptr=&buffer[4000];

На ячейку памяти первого элемента массива buffer... помоему так...

>.... тоже прикольный код :))))

Так лучше?

void save_video(int stx,int sty,int enx,int eny, int* buff)
{
union REGS r;
for (int j=sty;j<=eny;j++)
for(int i=stx;i<=enx;i++)
{
goto_xy(i,j);
r.h.ah=8;
r.h.bh=0;
*buff=int86(0X10,&r,&r);
buff++;
putchar('*');
}
}

Только ошибочка никуда не исчезла, обидно(((...
Мне когданибуть (надеюсь) будет стыдно за подобное клянчание, но может найдутся еще сердобольные люди...
[C++] Млин, чувствую судьба умереть глупым, а как не хочится, тыб знал(((... 26.10.01 18:44  
Автор: XR <eXtremal Research> Статус: The Elderman
Отредактировано 26.10.01 18:57  Количество правок: 1
<"чистая" ссылка>
> Чтож делать то?...
>
> Ничего не придумывается, кроме как:
>
1)
> buff_ptr=&buffer[4000];
>
> На ячейку памяти первого элемента массива buffer... помоему
> так...

А если ПОДУМАТЬ ? :)))

>
> >.... тоже прикольный код :))))
>
> Так лучше?
>
2)
> *buff=int86(0X10,&r,&r);
> buff++;

Те же @@ токо сбоку :)))

> Только ошибочка никуда не исчезла, обидно(((...
> Мне когданибуть (надеюсь) будет стыдно за подобное
> клянчание, но может найдутся еще сердобольные люди...

3) Из за мелкого шрифта в моей мазилле я пенку с прототипом int а потом передачей туда указателя пропустил
- спасибо ':-)'
[c++] ура заработала!!!... 26.10.01 19:33  
Автор: Смайлик Статус: Незарегистрированный пользователь
<"чистая" ссылка>
УРА ЗАРАБОТАЛА!!!...

Я думал, думал, я все понял...

Чувствую, что уже стал умней на пару сантиметров...

Пойду еще съем несквика)))...

всем спасибо, особенно за матчасть, только мне ее учить
не пришлось, пришлось пимпочку с эмулятора на none
переставить, вот...

> buff_ptr=&buffer[4000];
>А если ПОДУМАТЬ ? :)))
Я уже и так думал, и этак, но в функцию массив почемуто не любят
передавать, и изначально у меня в этом смысле все было как у людей,
а потом, начал извращатся и так и этак. Хотя все еще считаю, что:
> buff_ptr=&buffer[4000];
> На ячейку памяти первого элемента массива buffer...
Может кто обяснит в чем я не прав?...

>> *buff=int86(0X10,&r,&r);
>> buff++;

>Те же @@ токо сбоку :)))

А тут честно и откровенно признаюсь - не пойму в чем трабл(((...

>3) Из за мелкого шрифта в моей мазилле я пенку с прототипом int а

Хнык, хнык, ну яж исправился!!!...
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach