информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Атака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[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-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach