Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 421 • Страница 18 из 22<  1 ... 15  16  17  18  19  20  21  22  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 21.01.2004
Откуда: ядерная помойка
progn писал(а):
если списки как структура данных, то надо пользоваться STL классом list, а не изобретать велосипед

STL - это библиотека C++, а вопрос был про Си.

_________________
memento mori



Партнер
 

Member
Статус: Не в сети
Регистрация: 15.08.2007
ядерный отход писал(а):
progn писал(а):
если списки как структура данных, то надо пользоваться STL классом list, а не изобретать велосипед

STL - это библиотека C++, а вопрос был про Си.


да ну? :)

Цитата:
как правильно создавать списки в С++


 

Member
Статус: Не в сети
Регистрация: 21.01.2004
Откуда: ядерная помойка
progn
указано ведь, что stdio.h
Кроме того, я подозреваю, что это нужно для сдачи какой-нибудь контрольной на понимание указателей.

_________________
memento mori


 

Member
Статус: Не в сети
Регистрация: 15.08.2007
ядерный отход
stdio.h можно и в С++ использовать :) причем тут она и списки я чесно говоря вообще не понял.


 

Member
Статус: Не в сети
Регистрация: 21.01.2004
Откуда: ядерная помойка
progn писал(а):
stdio.h можно и в С++ использовать причем тут она и списки я чесно говоря вообще не понял.

ну я, честно говоря, тоже :confused:
но библиотека всё же чисто сишная :)

_________________
memento mori


 

Всем привет. Дали задание, а сделать не получается((( Обьясните, плиз, что и как. Задание такое(язык С++):

1) Дана целочисленная матрица размером MxN. Найти количество ее столбцов, все элементы которых различны

2)Дана строка-предложение. Зашифровать ее, поместив вначале все символы, расположенные на четных позициях строки, а затем, в обратном порядке, все символы, расположенные на четных позициях(например, строка "Программа" превратится в "ргамамроП")


 

Member
Статус: Не в сети
Регистрация: 17.07.2005
Подскажите что за проблема с канвой в листбоксе
Код:
void __fastcall TForm1::Button6Click(TObject *Sender)
{
Graphics::TBitmap *pBitmap = new Graphics::TBitmap;
pBitmap->LoadFromResourceName((int)HInstance,"IDB_BITMAP1");
for(int i=0; i<30;i++)
{
ListBox1->Items->AddObject("qwerty",pBitmap);   
}
}
void __fastcall TForm1::ListBox1DrawItem(TWinControl *Control, int Index,
      TRect &Rect, TOwnerDrawState State)
{
Graphics::TBitmap *pBitmap;
  int     Offset = 1;   
  TCanvas *pCanvas = ((TListBox *)Control)->Canvas;
  pCanvas->FillRect(Rect); // clear the rectangle
pBitmap = (Graphics::TBitmap *)((TListBox *)Control)->Items->Objects[Index];
if (pBitmap)
{
pCanvas->BrushCopy(Bounds(Rect.Left + Offset, Rect.Top, pBitmap->Width, pBitmap->Height), pBitmap, Bounds(0, 0, pBitmap->Width, pBitmap->Height), clWhite);
Offset += pBitmap->Width+1;   // add four pixels between bitmap and text
}
pCanvas->TextOut(Rect.Left + Offset, Rect.Top, ((TListBox *)Control)->Items->Strings[Index]);
}

При выделение итема видно такое
http://img139.imageshack..us/my.php?imag ... 811sz0.jpg Вроде при выделение итема на месте рисунка или пустое место оказывается или что то перекрывает канву в том месте


 

Member
Статус: Не в сети
Регистрация: 15.08.2007
_nic
честно говоря ничего не понятно из твоей картинки.

но, в коде Button6Click замечена утечка памяти, и вообще странно очень написано, зачем то 30 раз добавляется один и тот же указатель на битмап

можно попробовать перенести
Graphics::TBitmap *pBitmap = new Graphics::TBitmap;
pBitmap->LoadFromResourceName((int)HInstance,"IDB_BITMAP1");

в ListBox1DrawItem

в конце delete pBitmap


 

Member
Статус: Не в сети
Регистрация: 17.07.2005
Проблема в том что канва в 3х итема которые больше по индексу выделенного непрорисовывается :( И я немогу понять почему :(


 

Слушайте, господа, будьте так добры подсказать пример какого-то банального текстового редактора или вроде того!
Ато уродская виста не читает хэлп-файлы BCB6. А в чем неходится функция Open и как ею открыть картинку я после трех лет без программирования ужо не помню, блин...


 

Помогите! Понадобилось вот прочитать MBR с помощью С++. Мож кто знает как это зделать? Нашел в инете такой код

Код:
/*==          ПРИМЕР 10.2          ==*/
/*=== Чтение и анализ гл.загруз.записи твердого диска ===*/
#include <dos.h>
#define byte unsigned char
#define word unsigned int
#define dword unsigned long
#define SECT(x) x&0x3f
#define TRK(x) (x>>8)|((x<<2)&0x300)
main()
 {
 /* структура элемента раздела */
 struct Part {
  byte ActFlag;           /* описатель*/
        /* физический адрес начала раздела */
   byte Begin_Hd;         /* # головки */
   word Begin_SecTrk;  /* # сектора и дорожки */
  byte SysCode;          /* код системы */
         /* физический адрес конца раздела */
   byte End_Hd;          /* # головки */
   word End_SecTrk;   /* # сектора и дорожки */
  dword RelSec;       /* # сектора начала */
  dword Size;         /* число секторов */
  };
 /* стpуктуpа главной загpузочной записи */
 struct MBR {
  char LoadCode[0x1be];  /* пpогpамма загpузки */
  struct Part rt[4];     /* 4 эл-та pазделов */
  word EndFlag;          /* подпись MBR */
  } mbr;
 int x=10,y;   /* экpанные кооpдинаты */
 byte head=0;   /* номеp головки (0) */
 word Sect_Trk=1; /* номеp доpожки и сектоpа (0,1) */
 int ndrive=0;  /* номеp лог.диска */
 word *EndList;  /* указатель на подпись */
 union REGS rr;
 struct SREGS sr;
 word i;

 clrscr();
 printf("Разделы жесткого диска # 1\n");
 printf("==========================\n\n");
 printf("Лог.диск    \nПризнак   =  \n
 printf("Код системы =  \nНачало: гол.=  \n");
 printf("   дор. =  \n   сект. =  \n");
 printf("Конец : гол.=  \n    дор. =  \n");
 printf("    сект.=  \nНач.сектор =  \n");
 printf("Размер   =  \n");
NEXT:
  /* Чтение при помощи прерывания 13. Только таким путем
    можно прочитать MBR, т.к. она не принадлежит никакому
    логическому диску. */
  rr.h.ah=2;      /* Чтение */
  rr.h.al=1;      /* Секторов 1 */
  rr.h.dl=0x80;    /* Тв.диск */
  rr.h.dh=head;    /* Головка */
  rr.x.cx=Sect_Trk;  /* Дорожка, сектор */
  sr.es=FP_SEG(&mbr); /* Адрес буфера в ОП */
  rr.x.bx=FP_OFF(&mbr);
  int86x(0x13,&rr,&rr,&sr);
  /* Проверка ошибок чтения */
  if (rr.x.cflag) {
   printf("Ошибка чтения: %x. ",rr.h.ah);
   printf("Нажмите любую клавишу...\n\7");
   getch();
   exit();
   }
 /* В нач.установках EndList указывает на 1-й
   байт 1-го элемента pаздела */
 for (EndList=(word *)&mbr.rt[(i=0)];
   /* пока не встpетилась подпись MBR или pаздел
     нулевого pазмеpа */
   (*EndList!=0xaa55)&&(mbr.rt[i].Size>0L);
   /* пеpеход к след. эл-ту (++i), EndList указывает
     на 1-й байт следующего элемента pаздела */
   EndList=(word *)&mbr.rt[++i]) {
  /* кооpдинаты куpсоpа */
  y=4; x+=7; gotoxy(x,y++);
  if (mbr.rt[i].SysCode==5) printf("Ext  ");
  else printf("%-7c",'C'+ndrive++);
  gotoxy(x,y++); printf("%02xH    ",mbr.rt[i].ActFlag);
  gotoxy(x,y++); printf("%-7d",mbr.rt[i].SysCode);
  gotoxy(x,y++); printf("%-7d",mbr.rt[i].Begin_Hd);
  gotoxy(x,y++);
  printf("%-7u",TRK(mbr.rt[i].Begin_SecTrk));
  gotoxy(x,y++);
  printf("%-7u",SECT(mbr.rt[i].Begin_SecTrk));
  gotoxy(x,y++); printf("%-7d",mbr.rt[i].End_Hd);
  gotoxy(x,y++);
  printf("%-7u",TRK(mbr.rt[i].End_SecTrk));
  gotoxy(x,y++);
  printf("%-7u",SECT(mbr.rt[i].End_SecTrk));
  gotoxy(x,y++); printf("%-7lu",mbr.rt[i].RelSec);
  gotoxy(x,y++); printf("%-7lu",mbr.rt[i].Size);
  if (mbr.rt[i].SysCode==5) {
   /* если код системы 5, pаздел содеpжит свою таблицу
    pазделов; устанавливается ее дисковый адpес,
    и новая таблица считывается в память */
   head=mbr.rt[i].Begin_Hd;
   Sect_Trk=mbr.rt[i].Begin_SecTrk;
   goto NEXT;
   }
  }
 gotoxy(x,y++); printf("\n\nНажмите любую клавишу...");
 getch();
}


но при запуске ругается на [i] union REGS rr; и struct SREGS sr ...

http://khpi-iip.mipk.kharkiv.edu/library/sp/book/prt10.html -


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 26.09.2008
Я не в теме, поможите, пожалуйта, как сделать вывод консольного приложения в окне на C++ Bordland.

_________________
Геноцид русских - Белая Книга памяти:http://www.radosvet.net/zdrava/genocid/4331-genocid-russkix-belaya-kniga-pamyati.html


 

Member
Статус: Не в сети
Регистрация: 01.05.2007
Откуда: Тель-Авив
Фото: 1
4elovek Tapok,
Это потому что REGS и SREGS в наше время не определены. По идее, он еще должен выругаться на отсутствие функции int86x()
Так что ищите другой, более свежий пример. Приведенный работал только под чистым ДОС.


 

Member
Статус: Не в сети
Регистрация: 21.01.2004
Откуда: ядерная помойка
EXORCIST:) уточни условие, что нужно сделать. Запустить консольное приложение и перехватить его вывод ?
А то неясно.

_________________
memento mori


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 26.09.2008
ядерный отход
Да, чтобы ход выполнения консольного приложения отображался в окне формы
Типа Bart PE, где выполнение батников в окне сборщика отображается

_________________
Геноцид русских - Белая Книга памяти:http://www.radosvet.net/zdrava/genocid/4331-genocid-russkix-belaya-kniga-pamyati.html


 

Member
Статус: Не в сети
Регистрация: 21.01.2004
Откуда: ядерная помойка
EXORCIST:)
Довольно запарная тема, сам с этим парился.
Вот, от чего плясал:
http://www.codeproject.com/KB/threads/redir.aspx

_________________
memento mori


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 26.09.2008
ядерный отход Спасибо, сейчас попробую демку закачать

_________________
Геноцид русских - Белая Книга памяти:http://www.radosvet.net/zdrava/genocid/4331-genocid-russkix-belaya-kniga-pamyati.html


 

Member
Статус: Не в сети
Регистрация: 15.08.2007
я так делал:


Код:
   SECURITY_ATTRIBUTES sa;
   STARTUPINFO si;


   sa.nLength = sizeof(sa);
   sa.lpSecurityDescriptor = 0;
   sa.bInheritHandle = true;
   HANDLE hf = CreateFile(message_file, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, &sa, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,0);
...

   ZeroMemory(&si,  sizeof(si));
   si.cb = sizeof(si);
   si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
   si.hStdOutput = hf;
   si.wShowWindow = SW_HIDE;

   if(CreateProcess(0, cline,0,0,true,0,0,0,&si,&pi))
   {
      CloseHandle(pi.hThread);
      WaitForSingleObject(pi.hProcess,INFINITE);
      GetExitCodeProcess(pi.hProcess ,&ecode);
      CloseHandle(pi.hProcess);   

....



 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 26.09.2008
Ребята, такая трабла, помогите пожалуйста:

В переменную записывается

usver = getenv("USERNAME") ;

далее эта переменная передается функцией
char* usr = usver.c_str();
ShellExecute(0,"open","cmdprog.exe",usr,"",1);

в качестве параметра консольной проге, которая отображает вместо того самого %username% параметра кракозябру.
Как переделать чтобы воспринималось в правильной кодировке?

_________________
Геноцид русских - Белая Книга памяти:http://www.radosvet.net/zdrava/genocid/4331-genocid-russkix-belaya-kniga-pamyati.html


 

Member
Статус: Не в сети
Регистрация: 15.08.2007
EXORCIST:)
если дело в кодировке то смотри функции OemToChar и CharToOem


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 421 • Страница 18 из 22<  1 ... 15  16  17  18  19  20  21  22  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  

Лаборатория














Новости

Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan