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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2012, 16:02   #1
Kyran29
Пользователь
 
Аватар для Kyran29
 
Регистрация: 17.08.2009
Сообщений: 14
Вопрос Сохраняем изображение в Dll файле

Уважаемые форумчани,
Смысл заключается в следующем:
• загружаем изображение из Dll файла;
• изменяем изображение;
• дальше нужно схоронить изображение обратно в Dll файл;

Вопрос: как вернуть обратно в Dll файл изменённое изображение?



Загружаем изображение

Код:
private
    procedure ResError;
  public
    { Public declarations }
  end;

var
  MouseButton: Boolean;

// Ошибка ресурса
procedure TForm1.ResError;
 begin
  Image1.AutoSize:=False;
  Image1.Height:=300;
  Image1.Width:=300;
  Image1.Canvas.Brush.Color:=clWhite;
 end;

// Загружаем изображение
procedure TForm1.FormCreate(Sender: TObject);
 var
  DllName:String;
  res: TResourceStream;
  h: THandle;
 begin
  DllName:='Data.dll';
  h :=  LoadLibrary(PChar(DllName));
   if h <> 0
    then
     begin
      try
       res:= TResourceStream.Create(h,PChar('#1'),RT_RCDATA);
       image1.Picture.Bitmap.LoadFromStream(res);
        except
         on E : Exception do
          ResError;
        end;
          FreeLibrary(h);
      end
       else
        ResError;
 end;

Изменяем изображение

Код:
// Рисуем
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
 begin
   MouseButton:= True;
   Form1.Image1.Canvas.MoveTo(X,Y);
 end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
 begin
  if MouseButton = True
   then
    Form1.Image1.Canvas.LineTo(X,Y);
 end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
 begin
  MouseButton:= False;
 end;




Сохраним изменённое изображение

Код:
 // Сохраним изображение
procedure TForm1.Button1Click(Sender: TObject);
begin
  // ??????????????????????????????????????
end;
Kyran29 вне форума Ответить с цитированием
Старый 02.06.2012, 17:09   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Offtop

Почему именно dll? Только потому, что из её ресурса легко вытащить? Почему нельзя в dat-файле? Придумав свою структуру и как угодно закодировав информацию.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.06.2012, 17:26   #3
Kyran29
Пользователь
 
Аватар для Kyran29
 
Регистрация: 17.08.2009
Сообщений: 14
По умолчанию

Аватар ну, а чем dll хуже или лучше dat-файла?
Kyran29 вне форума Ответить с цитированием
Старый 02.06.2012, 17:44   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Копать в сторону BeginUpdateResource, UpdateResource и EndUpdateResource
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.06.2012, 19:47   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

А че бред писать и жрать кактусы?

Берите TStream загоняйте туда изображение, сжимайте все это дело GZIP'ом.
Для прикола, напортачте в заголовках GZIP'а, чтоб только вы знали как распаковывать картинки. вс0.
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пытаюсь понять код user32.dll и gdi32.dll Beermonza Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 43 13.07.2010 15:09
Поиск данных в текстовом файле (в самом файле! а не в Memo и не загружая всю инфу из файла в одну строку glagoff Помощь студентам 1 05.05.2010 13:00
База данных в файле .dll Sergeevich Помощь студентам 2 07.11.2009 00:51
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36