Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2009, 14:28   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Не компилится DLL тыкает в TBitMap.Create;

Код:
library Engine;

uses
  SysUtils,
  Classes,
  ComCtrls, ExtCtrls, Graphics, Windows;

Type
  TArBM = Array[1..21] of TBitMap;

{$R *.res}


Procedure LoadBM(Var LoadIMG:TImage; Dir:String;
                     MasBM: TArBM; Num: Byte);
Var
 {...}
begin
 {...}
   MasBM[Num]:=TBitMap.Create;
 {...}
End;

begin
end.
Цитата:
OBJECT OR CLASS TYPE REQURED
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 01.08.2009, 14:39   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Вы переинициализируете обычную переменную как массив.
Код:
Procedure LoadBM(Var LoadIMG:TImage; Dir:String;
                     MasBM: TArBM; Num: Byte);
Var
 {...}
begin
 {...}
   MasBM[Num]:=TBitMap.Create;
 {...}
End;
Тогда уж лучше передавать массив или передавать количество эл. массива и инициализировать дин. массив внутри процедуры:

Код:
Procedure LoadBM(Var LoadIMG:TImage; Dir:String; Num: Byte);
Var
 {...}
  MasBM: TArBM;
begin
 {...}
   SetLength(MasBM, Num);
   MasBM[Num]:=TBitMap.Create;
 {...}
End;

Последний раз редактировалось psycho-coder; 01.08.2009 в 14:42.
psycho-coder вне форума Ответить с цитированием
Старый 01.08.2009, 15:33   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

То есть заполнять массив внутри ДЛЛ как одиночный битмап, а в гл. программе назначать ячейке массива это значение? Просто смысл этой функции - заполнение битмапа (одного, с заданным номером Num)


---

Перебил переменную в локалку, все равно тычет в эту строку. Даже когда я поменял её тип просто на TBitMap.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 01.08.2009 в 15:36.
Alex Cones вне форума Ответить с цитированием
Старый 01.08.2009, 15:43   #4
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Тогда может передавать конкретный элемент массива (MasBM[i])?
psycho-coder вне форума Ответить с цитированием
Старый 01.08.2009, 15:49   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Да не в том дело, я могу конечно передавать отдельный элемент или просто переменную типа TBitMap, но факт в том, что где бы я её не описывал, компилятор все равно тычет в эту строку пальцем.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 01.08.2009, 15:54   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

попробуй так описать заголовок функции

Код:
Procedure LoadBM(Var LoadIMG:TImage; Dir:String;var MasBM: TArBM; Num: Byte);
а красный не нужен...или вы создаете обьект типа TImage там?
(не забывайте что есть обьявление класса, от этого и нужно пахать)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 01.08.2009 в 15:56.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.08.2009, 15:59   #7
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Неее...((( Все равно не хочет работать. Может попробовать что-то добавить в юзесы? (в смысле свойства класса описываются где-то отдельно)...


--------------------------------------------------------------------------------------------------------------------

Так и знал!!! Добавил все юзесы пачкой:
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ComCtrls, Menus;
Все откомпилировалось без ошибок!
Теперь такой вопрос:
Что отсюда можно отмести, чтоб уменьшить объем ДЛЛ, а то 3 мб это слишком.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 01.08.2009 в 16:03.
Alex Cones вне форума Ответить с цитированием
Старый 01.08.2009, 16:01   #8
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Даже не знаю что сказать:
Код:
Type
  TArBM = Array[1..21] of TBitMap;

procedure TForm1.Button2Click(Sender: TObject);
var
  MasBM: TArBM;
begin
  MasBM[1] := TBitMap.Create;
  MasBm[1].LoadFromFile('q.bmp');
  Image1.Picture.Bitmap := MasBM[1];
  MasBM[1].Free;
end;
Или я опять не так понял?
psycho-coder вне форума Ответить с цитированием
Старый 01.08.2009, 16:03   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

попробуйте сделать так:
Код:
Procedure LoadBM(LoadIMG:TImage; Dir:String;var MasBM: Array of TBitMap; Num: Byte);
правда не помню нужен ли тут вар...но пусть будет на всяк
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.08.2009, 23:06   #10
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
Что отсюда можно отмести, чтоб уменьшить объем ДЛЛ, а то 3 мб это слишком.
Нет ничего легче. Удаляйте по одному, если компилит - удаляйте следующее, не компилит - возвращайте и перходите к другому элементу.
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из .exe TBitMap передать в DLL(форма) lexaltd Мультимедиа в Delphi 13 14.07.2009 17:47
Не компилится проект на студии 2005 prikolist Общие вопросы C/C++ 31 15.06.2009 19:18
Не компилится данный исходник. В чём проблемма? AngelOfDeath Общие вопросы C/C++ 4 16.10.2008 00:34
Create DLL Altera Свободное общение 4 12.02.2008 03:28