powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Функция выводящая BMP
25 сообщений из 27, страница 1 из 2
Функция выводящая BMP
    #38453924
Фотография Kast2K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Сильно извиняюсь если вдруг поднял такой простейший вопрос, но ответа я пока не нашел.

Поставил перед собой следующую задачу:
1. Сделать DLL на С++
2. В DLL должна быть функция выводящая BMP (затык)

Если в Дельфи функцию я могу написать как
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
function GenerateBMP :TBitmap
var
bmp:TBitmap;
begin
bmp:=TBitmap.Create;
....
result:=bmp
end;



то в С++ я просто не понимаю как это выполнить :(

пытался написать

Код: plaintext
1.
2.
3.
4.
5.
bitmap CreateMyBitmap (char mytxt)
{
	
return bitmap;
}



и получал ошибку "Declaration syntax error".

Я понимаю, что где-то что-то не объявлено, но что - не понимаю :(

Помогите, пожалуйста, создать эту функцию.

Спасибо.

Никогда не бойся делать то, что не умеешь.
Помни, профессионалы построили Титаник, а Ковчег любители.
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454019
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kast2K,

Это не такой и простой вопрос.
Самое главное — зачем тебе битмап?
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454076
Фотография Kast2K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Добрый день!
Мне достался код на С++ генерирующий файл BMP на основании переданного текста.
Сейчас код работает через одно место, т.к. по таймеру в нем вызывается следующая процедура
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if (FileExists("inputdata.exchange")){
        Memo1->Lines->LoadFromFile("inputdata.exchange");
        Edit1->Text="/"+Memo1->Text;
        Button1->Click();
        }
}



После обработки данных программа создает на диске в этой же папке файл

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
void BmpImage(int xdim, int ucut, output *out) {
	int i, j, k, l, start, nwords, obt, ebit, sbit, sebit, q = 1;
	FILE *ofile;

	ofile = fopen("resultbmp.bmp","wb");
	BmpHeader(xdim,out,ofile);
.....
.....
	fclose(ofile);
}



Естественно, что это выглядит чересчур убого и не функционально.

Поэтому у меня родилась идея в программе получателе подключить библиотеку с генерирующим кодом, передать в нее текст и получить картинку на выхлопе.
На создании библиотеки и произошел затык :(
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454338
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kast2K, нормальная себе функция. Перенеси только "resultbmp.bmp" в аргументы и всё будет ОК.
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454420
Фотография Kast2K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

прошу прощения за свою серость, но не могли бы вы показать как?
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454428
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну как-то так

Код: plaintext
1.
2.
3.
4.
5.
void BmpImage(char *filename,int xdim, int ucut, output *out) {
    ....
    ofile = fopen(filename,"wb");
    ..
}
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454463
Фотография Kast2K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

но ведь в этом случае я получу файл на диске, а мне необходимо передать картинку в мою программу минуя диск.
Или я вас неправильно понимаю?
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454489
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kast2Kа мне необходимо передать картинку в мою программу минуя диск.
Я - пас! Я не знаю каким образом я мог догадаться что тебе нужно получить картинку
"не на диск".
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454507
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kast2Kмне необходимо передать картинку в мою программу минуя диск.

А что это за программа, на чём написана и в каком виде картинку принимать согласна?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454568
Фотография Kast2K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

автор должна быть функция выводящая BMP
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454586
Фотография Kast2K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Программа написана на Дельфи. Принимать хочет в виде TBitmap.

Хочу получить следующее:
1. Пользователь вводит текст в поле Edit
2. Пользователь нажимает кнопку "Сгенерировать картинку"
3. Программа осуществляет подключение библиотеки DLL с С++ кодом и передает в Си-шную функцию текстовую строку.
4. По принятии строки Си-шная функция обрабатывает её, создает картинку bitmap и возвращает в Дельфи как TBitmap.
Дельфи выводит полученную картинку в TImage (
Код: pascal
1.
image1.picture.assign(myReceivedBitmap)

)
5. Программа отключает библиотеку
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454612
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kast2KХочу получить следующее:
Хочешь ты бред. А твоя задача сводится к одной строчке:
Код: sql
1.
image1.Canvas.TextOut(Edit1.text);


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454639
Фотография Kast2K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Моей задачей не является конвертация текста в картинку.
Задача СИ-шной библиотеки на основании полученных данных сгенерировать картинку, состоящую из нескольких элементов и штрих-кода.
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454647
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kast2KЗадача СИ-шной библиотеки на основании полученных данных сгенерировать
картинку, состоящую из нескольких элементов и штрих-кода.
Программа на Delphi это всё способна сделать и самостоятельно, без помощи левых библиотек.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454655
Фотография Kast2K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Я и не спорю.
Но проблема состоит в том, что в моем случае в СИ-шных исходниках лежит код правильной генерации штрих-кода Aztec (от производителя сканеров HoneyWell), а заниматься переписыванием кода на Дельфи нет ни времени ни желания.

p.S. Бесплатные аналоги искал в интернете. К сожалению, новыми моделями сканеров штрихкоды ими (аналогами) генерируемые не читаются, т.к. содержат ошибки.
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454702
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kast2KПринимать хочет в виде TBitmap.
Обломись. Классы из DLL не возвращаются. Лучшее на что ты можешь рассчитывать это буфер с
битмапом или HBITMAP. Я бы рекомендовал буфер, его потом можно обернуть в TMemoryStream.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454703
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не верю что в Aztec не заложена функция получения растра в memory.
Ищи ее. Потом совокупляй результат с Дельфийским TBitmap. Попиксельно
для начала. Соптимизируешь потом.
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454727
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovKast2KПринимать хочет в виде TBitmap.
Обломись. Классы из DLL не возвращаются. Лучшее на что ты можешь рассчитывать это буфер с
битмапом или HBITMAP. Я бы рекомендовал буфер, его потом можно обернуть в TMemoryStream.


Почему же не возвращаются ?
Смотря какие классы, смотря откуда, и смотря куда. Кое-какие классы кое-откуда кое-куда точно возвращаются.
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454733
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivКое-какие классы кое-откуда кое-куда точно возвращаются.
Да, но TBitmap между ними отсутсвует.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454774
Фотография Kast2K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Не могу согласиться. Вот простейший пример DLL:
Код: pascal
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.
library testlib;

uses
  Classes, Graphics;

function GenerateBitmap(input:string):Tbitmap;

  function ProcessBitmapCreation:Tbitmap;
  var
  bmp:TBitmap;
  begin
  bmp:=TBitmap.Create;
  bmp.Width:=100;
  bmp.Height:=100;
  bmp.Canvas.Brush.Color:=clGreen;
  bmp.Canvas.Rectangle(100,100,100,100);
  result:=bmp;
  end;
begin
if length(input)>0 then
result:=ProcessBitmapCreation;
end;

exports GenerateBitmap name 'GenerateTestBitmap';
{$R *.res}

begin
end.



Клиент
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
function GenerateBitmap(input: string):Tbitmap; stdcall;
  external 'Testlib.dll' name 'GenerateBitmap';

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
s:=edit1.Text;
image1.Picture.Bitmap:=GenerateBitmap(s);
end;



и всё замечательно передается.
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454783
Фотография Kast2K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выдрано из тестовых примеров
только в клиенте
Код: pascal
1.
2.
function GenerateBitmap(input: string):Tbitmap; stdcall;
  external 'Testlib.dll' name 'GenerateTestBitmap';
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38454890
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kast2KНе могу согласиться.
Сколько Вам угодно. Вот только во-первых, эти ваши тесты собираются одним компилятором с
одинаковой VCL и RTL, а во-вторых, приводят к утечке памяти.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38455025
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovMasterZivКое-какие классы кое-откуда кое-куда точно возвращаются.
Да, но TBitmap между ними отсутсвует.


Я понятия не имею, что это за класс такой.
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38455038
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЯ понятия не имею, что это за класс такой.
В таком случае тебе стоит больше доверять людям, которые такое понятие имеют.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция выводящая BMP
    #38455222
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kast2Kвыдрано из тестовых примеров
только в клиенте
Код: pascal
1.
2.
function GenerateBitmap(input: string):Tbitmap; stdcall;
  external 'Testlib.dll' name 'GenerateTestBitmap';


Kast2K а откуда C++ компиллятор узнает что такое Tbitmap?
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Функция выводящая BMP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]