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

Поставил перед собой следующую задачу:
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
06.11.2013, 10:09
    #38454019
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция выводящая BMP
Kast2K,

Это не такой и простой вопрос.
Самое главное — зачем тебе битмап?
...
Рейтинг: 0 / 0
06.11.2013, 10:47
    #38454076
Kast2K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция выводящая BMP
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
06.11.2013, 13:00
    #38454338
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция выводящая BMP
Kast2K, нормальная себе функция. Перенеси только "resultbmp.bmp" в аргументы и всё будет ОК.
...
Рейтинг: 0 / 0
06.11.2013, 13:42
    #38454420
Kast2K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция выводящая BMP
mayton,

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

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

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

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

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

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

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

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


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

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

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

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


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


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


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


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