Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/78: Рейтинг темы: голосов - 78, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 62

Установка компонента TComPort

13.10.2009, 03:37. Показов 15882. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня такой вопрос. При инсталляции компонента TComPort в C++Builder 2007 появляется ошибка: Unable to open file 'DSGNCPOTLIB2007.bpi. Такого файла я у себя не нашел. При попытке стереть упоминания о нем в файле проекта, выдалась другая ошибка, якобы этот файл все-таки нужен. Кто-нибудь знает, в чем может быть проблема, или есть у кого-нибудь такой файл?
Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.10.2009, 03:37
Ответы с готовыми решениями:

Установка компонента TPngImage
Доброе утро/День/Вечер!!! Может кто небуть подробно расписать, или скинуть источника как это делается.)) Вообще нужно как то установить...

Установка Delphi-компонента TChromium в Билдер
Второй день бьюсь, подскажите, пожалуйста, как установить Delphi компонен в C++ Builder

Установка фокуса ячейки компонента ValueListEditor
По списку идет запись значений переменных в массив посредством Cells.ToDouble() . В случае ошибки перевода вылетит MessageBox. Вопрос:...

14
0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 62
13.10.2009, 23:46  [ТС]
Может кто-нибудь подскажет другой хороший компонент для работы с ComPortoм в C++ Builder2007?
0
0 / 0 / 0
Регистрация: 12.02.2009
Сообщений: 13
26.05.2010, 10:00
Только не ТComPort ,а TCommPort наверное.Я установил в Builder 6 правда.
Я нашел на
 Комментарий модератора 
Ссылка удалена.

Установил,открыть ком порт удалось.Померил осциллом сигнал на выводе ком порта.
А как передать данные в него????
Нифига нет описания и тестовая прога не компилируется.
Кто знает как пользоваться компонентом отзовитьесь!!!!!Бьюсь уже не один день!!!
Описание свойств компонента скинте,если есть.
Под Вин апи большая программа получается и трудная для понимания....
Готовые есть с Вин Апи но мне не надо этих всяких Memo и Edit - наворотов, там что написаны.
Нужно нажать на кнопочку,передать символ в Com port ну и т д.
0
221 / 135 / 48
Регистрация: 12.04.2010
Сообщений: 248
26.05.2010, 10:57
Ну если просто послать байт в ком-порт, то проще вобще без компонентов
Вот из какой-то моей старой проги....
Инициализируешь порт в InitCom() и отправляешь байт SendByte().
После использования закрываешь порт CloseHandle(HComm);
Все предельно просто.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
bool PortInit = false;
char ComBuf[1024];
int InBuf, ReadPtr;
HANDLE HComm;
 
 
void SendByte(byte b)
{      unsigned long sended;bool t;
        if (PortInit) {
           t=WriteFile(HComm,&b,1,&sended,NULL);
           if ((!t)|(sended != 1))
                MessageDlg("Не могу записать в порт!",mtError,TMsgDlgButtons() << mbOK, 0);       
}
 
void InitCom(void)
{
        _DCB Mode;
        _COMMTIMEOUTS TimeOuts;
 
      //инициализация
     if (!PortInit){
        HComm = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE,  0, 0,  OPEN_EXISTING,  0,   0);
        GetCommState(HComm,&Mode);
    Mode.BaudRate= 115200;
    Mode.ByteSize = 8;
    Mode.Parity = 0;
    Mode.StopBits = 2;
 
    if (HComm==INVALID_HANDLE_VALUE)
     {
         MessageDlg("Не могу открыть порт.",mtError,TMsgDlgButtons() << mbOK, 0);
     } else {
    SetCommState ( HComm, &Mode );
    // Устанавливаем таймауты
 
    TimeOuts.ReadIntervalTimeout = MAXLONG;
    TimeOuts.ReadTotalTimeoutMultiplier = 100;
    TimeOuts.ReadTotalTimeoutConstant = 100;
    TimeOuts.WriteTotalTimeoutConstant=100;
    TimeOuts.WriteTotalTimeoutMultiplier=100;
 
    SetCommTimeouts(HComm,&TimeOuts);
    PortInit=true;}
}
}
0
0 / 0 / 0
Регистрация: 12.02.2009
Сообщений: 13
26.05.2010, 11:41
Что то не пошло.Вот код://---------------------------------------------------------------------------

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
 
bool PortInit = false;
char ComBuf[1024];
int InBuf, ReadPtr;
HANDLE HComm;
 
 
void SendByte(byte b)
{      unsigned long sended;bool t;
        if (PortInit) {
           t=WriteFile(HComm,&b,1,&sended,NULL);
           if ((!t)|(sended != 1))
                MessageDlg("Не могу записать в порт!",mtError,TMsgDlgButtons() << mbOK, 0);       
}
 
void InitCom(void)
{
        _DCB Mode;
        _COMMTIMEOUTS TimeOuts;
 
      //инициализация
     if (!PortInit){
        HComm = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE,  0, 0,  OPEN_EXISTING,  0,   0);
        GetCommState(HComm,&Mode);
    Mode.BaudRate= 115200;
    Mode.ByteSize = 8;
    Mode.Parity = 0;
    Mode.StopBits = 2;
 
    if (HComm==INVALID_HANDLE_VALUE)
     {
         MessageDlg("Не могу открыть порт.",mtError,TMsgDlgButtons() << mbOK, 0);
     } else {
    SetCommState ( HComm, &Mode );
    // Устанавливаем таймауты
 
    TimeOuts.ReadIntervalTimeout = MAXLONG;
    TimeOuts.ReadTotalTimeoutMultiplier = 100;
    TimeOuts.ReadTotalTimeoutConstant = 100;
    TimeOuts.WriteTotalTimeoutConstant=100;
    TimeOuts.WriteTotalTimeoutMultiplier=100;
 
    SetCommTimeouts(HComm,&TimeOuts);
    PortInit=true;}
    }
   }
 
}
//---------------------------------------------------------------------------
ошибки:
Build
[C++ Error] Unit1.cpp(29): E2141 Declaration syntax error
[C++ Error] Unit1.cpp(71): E2139 Declaration missing ;
[C++ Error] Unit1.cpp(71): E2134 Compound statement missing }
[C++ Warning] Unit1.cpp(71): W8004 'PortInit' is assigned a value that is never used

А все-таки русского,хотя бы какого нить описания компонента TCommPort нет??
Или компонента,работающего и help а к нему?А?
Поможите,если сможете.
0
221 / 135 / 48
Регистрация: 12.04.2010
Сообщений: 248
26.05.2010, 11:46

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
bool PortInit = false;
char ComBuf[1024];
int InBuf, ReadPtr;
HANDLE HComm;
 
 
void SendByte(byte b)
{ unsigned long sended;bool t;
if (PortInit) {
t=WriteFile(HComm,&b,1,&sended,NULL);
if ((!t)|(sended != 1))
MessageDlg("Не могу записать в порт!",mtError,TMsgDlgButtons() << mbOK, 0);
}
 
void InitCom(void)
{
_DCB Mode;
_COMMTIMEOUTS TimeOuts;
 
//инициализация
if (!PortInit){
HComm = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
GetCommState(HComm,&Mode);
Mode.BaudRate= 115200;
Mode.ByteSize = 8;
Mode.Parity = 0;
Mode.StopBits = 2;
 
if (HComm==INVALID_HANDLE_VALUE)
{
MessageDlg("Не могу открыть порт.",mtError,TMsgDlgButtons() << mbOK, 0);
} else {
SetCommState ( HComm, &Mode );
// Устанавливаем таймауты
 
TimeOuts.ReadIntervalTimeout = MAXLONG;
TimeOuts.ReadTotalTimeoutMultiplier = 100;
TimeOuts.ReadTotalTimeoutConstant = 100;
TimeOuts.WriteTotalTimeoutConstant=100;
TimeOuts.WriteTotalTimeoutMultiplier=100;
 
SetCommTimeouts(HComm,&TimeOuts);
PortInit=true;}
}
}
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
       InitCom();//инициализируем порт
       SendByte(0xFE);//посылаем байт 0xFE
       CloseHandle(HComm);//закрываем порт
}
//---------------------------------------------------------------------------
0
0 / 0 / 0
Регистрация: 12.02.2009
Сообщений: 13
26.05.2010, 12:55
ЭЭЭхххх....
Все равно:
Build
[C++ Error] Unit1.cpp(32): E2141 Declaration syntax error
[C++ Error] Unit1.cpp(79): E2139 Declaration missing ;
[C++ Error] Unit1.cpp(79): E2134 Compound statement missing }

Видно не судьба нам обогнать японцев в электронике.
А я еще хотел принимать символы потом и еще по определённому алгоритму и записывать в разные мемо.
Даже сцуко символ не передается.
0
221 / 135 / 48
Регистрация: 12.04.2010
Сообщений: 248
26.05.2010, 13:39
Ну неужели трудно прочитать то что говорит компилятор?
Не хватает закрывающей фигурной скобки "}" в строке 30 или 29... (Нужно закрыть функцию SendByte()). Куда-то она потерялась.

Цитата Сообщение от vladi Посмотреть сообщение
Видно не судьба нам обогнать японцев в электронике.
С таким подходом точно не судьба...

Вот примерно так можно читать из ком-порта.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//очистка буфера приема
void ClearCB(void){
while(ReadMessages()!=0);
for(int i=0;i<10000;i++)ComBuf[i]=0;
InBuf=0;
ReadPtr=0;
}
//прием сообщения в буфер ComBuf
int ReadMessages(void)
{
  unsigned long ErrorCode;
  COMSTAT StatPort;
  unsigned long BytesIn;
  unsigned long Readed;
     Readed=0;
     ClearCommError(HComm, &ErrorCode, &StatPort);
     BytesIn = StatPort.cbInQue;
     if (BytesIn>0 ){
       if (BytesIn>sizeof(ComBuf)-1)BytesIn = sizeof(ComBuf)-1;
       ReadFile(HComm,&ComBuf[ReadPtr],BytesIn,&Readed,NULL);
       recv+=Readed;
       ReadPtr+=Readed;
       InBuf+=Readed;
}
return Readed;
}
Вообще почти вся работа с ком-портом сводится к работе с ним как с файлом в простейшем случае.


Не в тему:... помойму люди разучаются думать...
1
0 / 0 / 0
Регистрация: 01.07.2010
Сообщений: 38
16.07.2010, 13:05
Мне понадобилось тоже отправлять побайтно в ком-порт, но в асинхронном режиме. Пока флаг FILE_FLAG_OVERLAPPED был равен 0, все вроде выполнялось, по крайней мере компилировалось без ошибок и осциллографом отмечал сигнал на TXD (правда, почему-то не было реакции на RXD).

Стоило установить FILE_FLAG_OVERLAPPED, как при посылке байта выдает сообщение "Не могу записать в порт".

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
bool PortInit = false;
char ComBuf[1024];
int InBuf, ReadPtr;
static int rs232_byte=0; //статическую – потому что потом надо будет подобрать байт в цикле
HANDLE HComm;
DWORD nb=0;
OVERLAPPED Overlapped = {0,0,0,0,0};
 
void InitCom(int _Baud, int _ByteSize, int _Parity, int _StopBits);
 
void SendByte(byte b)
{ 
  unsigned long sended;
  bool t;
 if (PortInit)
 {
  t=WriteFile(HComm,&b,1,&sended,&Overlapped);
  if ((!t)|(sended != 1))
// также здесь пробовал просто « if (sended != 1) » - все равно не пишет
  MessageDlg("Не могу записать в порт",mtError,TMsgDlgButtons() << mbOK, 0);
 }
}
 
void InitCom(int _Baud, int _ByteSize, int _Parity, int _StopBits)
{
 _DCB Mode;
 _COMMTIMEOUTS TimeOuts;
 
 //Инициализация порта
 if (!PortInit)
 {
  HComm = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
  GetCommState(HComm,&Mode);
  Mode.BaudRate= _Baud;
  Mode.ByteSize = _ByteSize;
  Mode.Parity = _Parity;
  Mode.StopBits = _StopBits;
 
  if (HComm==INVALID_HANDLE_VALUE)
  {
   MessageDlg("Не могу открыть порт",mtError,TMsgDlgButtons() << mbOK, 0);
  }
  else
  {
   SetCommState ( HComm, &Mode );
 
   // Устанавливаем тайм-ауты
   TimeOuts.ReadIntervalTimeout = MAXLONG;
   TimeOuts.ReadTotalTimeoutMultiplier = 100;
   TimeOuts.ReadTotalTimeoutConstant = 100;
   TimeOuts.WriteTotalTimeoutConstant=100;
   TimeOuts.WriteTotalTimeoutMultiplier=100;
 
   SetCommTimeouts(HComm,&TimeOuts);
   PortInit=true;}
  }
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
       InitCom(9600, 8, 0, 1);//инициализация
       rs232_byte=0x46; //пусть отправляемый байт равен этому значению
       SendByte(rs232_byte);//отправим байт
}

Чего не хватает?


И еще вопрос - а разве функция WriteFile() что-либо возвращает? (я про t=WriteFile() в функции SendByte(byte b) )

Добавлено через 21 час 26 минут
В строке 19 пробовал также
if (sended ==0)
0
0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 62
22.02.2012, 13:47  [ТС]
В продолжение темы:
нет ли компонента для работы с компортом, поддерживаемого Builder XE?
Последний вариант ComPort Library от Dejan Crnila поддерживает только дельфи последней версии, и билдер - нет. Или как можно сконвертировать его?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
22.02.2012, 14:06
COM-порт в Windows
Работа с последовательными портами (Статья)
Настройка порта:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
HANDLE TForm1::OpenAndSetupPort (UnicodeString APortName, int ASpeed, int AByteSize, int AParity, int AStopBits)
{
HANDLE ComHandle;
DCB ComDCB;
COMMTIMEOUTS ComTimes;
UnicodeString Msg = "\\\\.\\" + APortName.UpperCase();
 
ComHandle = CreateFile(Msg.t_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (ComHandle == INVALID_HANDLE_VALUE)
  {
  Msg = "Ошибка при открытии порта " + APortName + ":\n" + GetLastError(); goto OnError;
  }
 
ZeroMemory(&ComDCB, sizeof(ComDCB));
ComDCB.DCBlength = sizeof(ComDCB);
if (!GetCommState(ComHandle, &ComDCB))
  {
  Msg = "Ошибка при получении параметров порта " + APortName + ":\n" + GetLastError(); goto OnError;
  }
ComDCB.BaudRate = ASpeed;
ComDCB.ByteSize = AByteSize;
ComDCB.Parity   = AParity;
ComDCB.StopBits = AStopBits;
ComDCB.fBinary  = 1;
ComDCB.fParity  = (ComDCB.Parity != NOPARITY) ? 1 : 0;
ComDCB.fOutxCtsFlow = 0;
ComDCB.fOutxCtsFlow = false;
ComDCB.fOutxDsrFlow = false;
ComDCB.fDtrControl = DTR_CONTROL_DISABLE;
ComDCB.fDsrSensitivity = false;
ComDCB.fNull = false;
ComDCB.fRtsControl = RTS_CONTROL_DISABLE;
ComDCB.fOutX = 0;
ComDCB.fInX = 0;
ComDCB.fAbortOnError = false;
if (!SetCommState(ComHandle, &ComDCB))
  {
  Msg = "Ошибка при настройке параметров порта " + APortName + ":\n" + GetLastError(); goto OnError;
  }
 
if (!GetCommTimeouts(ComHandle, &ComTimes))
  {
  Msg = "Ошибка при получении таймаутов порта " + APortName + ":\n" + GetLastError(); goto OnError;
  }
ComTimes.ReadIntervalTimeout         = MAXDWORD;
ComTimes.ReadTotalTimeoutMultiplier  = 0;
ComTimes.ReadTotalTimeoutConstant    = 300;
ComTimes.WriteTotalTimeoutMultiplier = 0;
ComTimes.WriteTotalTimeoutConstant   = 0;
if (!SetCommTimeouts(ComHandle, &ComTimes))
  {
  Msg = "Ошибка при настройке таймаутов порта " + APortName + ":\n" + GetLastError(); goto OnError;
  }
 
SetupComm(ComHandle, 1024, 1024);
PurgeComm(ComHandle, PURGE_RXCLEAR | PURGE_TXCLEAR);
 
ErrorInfo = "Успешно завершено";
return ComHandle;
 
OnError:
if (ComHandle != INVALID_HANDLE_VALUE) CloseHandle(ComHandle);
 
ErrorInfo = Msg;
return NULL;
}
Отправка в порт:
C++
1
2
3
4
5
6
7
8
9
DWORD temp;
 BYTE comanda[4];
 comanda[0] = 0x00;
 comanda[1] = 0x00;
 comanda[2] = 0x01;
 comanda[3] = 0xB0;
 
 WriteFile(ComHandle, &comanda, 4, &temp, NULL);  //Отправляем команду прибору
 ReadFile(ComHandle, &comanda, 4, &temp, NULL);
UnicodeString применяю по причине использования Builder XE: функция CreateFile в первом параметре требует wchar_t.
0
0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 62
22.02.2012, 15:19  [ТС]
Да, наверно ничего не поделаешь, придется осваивать API ф-ции...)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
22.02.2012, 15:20
мне кажется, что так более гламурно
0
117 / 74 / 6
Регистрация: 23.01.2012
Сообщений: 186
22.02.2012, 16:00
Вот Вам класс для начало изучение API функций Com порта.
P.S. Вас должен интересовать только класс SerialPort, есть небольшие рудименты от других классов, просто удалите их.
P.P.S. коллега говорит, что смог его запустить на Builder XE (писал этот класс лет 7 назад, поэтому цитирую классика LK, не помню как точно у него, но смысл такой: "поддержки кода не осуществляю" )
Вложения
Тип файла: rar COM_PORT.RAR (3.0 Кб, 189 просмотров)
0
0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 62
22.02.2012, 16:06  [ТС]
ОК, спасибо. Посмотрим.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.02.2012, 16:06
Помогаю со студенческими работами здесь

Удаление компонента и установка нового (rad studio)
Как удалить установленный компонент в Rad Studio? Как установить AlphaSkins для C++ XE7?

Установка компонента TComPort
Скачал компонент TComPort для работы с ком-портом (качал с соусфоржа), а он не усланвливается, в смысле не компилируется. Ругается на uses...

Установка компонента TCommPortDriver
Здравствуйте, возникла такая проблема, раньше стояла винда хр и на ней стояла Delphi7_Lite_Full_Edition_Setup_7.3.4.3_Build_20110801 и не...

Установка компонента
Как установить данный компонент на Delphi7? помогите, с ним куча проблем

Установка компонента
Помогите пожалуйста, не могу установить компонент. У меня Delphi 10 seattle . Вот такие ошибки: После нажатия OK: Сам...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru