Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подмена ресурсов, UpdateResource для всех версий Windows 
:(
    Опции темы
Dino99rus
Дата 5.4.2007, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 10.1.2007

Репутация: нет
Всего: 2



Народ все хорошо получается. Запись в ехе файл и сохранение этих файлов на диск. 
Код

LoadFileToResourceW('test\project1.exe', 'RCDATA', 'MYTEST', 'test\new.tes');


Код

SaveFileToDiscW('test\Project1.exe', 'RCDATA', 'MYTEST','D:\new.txt');


Плиз, подскажите как можно не сохраняя  на диск файла, а сразу его загрузить например в МЕМО. Пожалусто подскажите

Это сообщение отредактировал(а) Alexeis - 6.4.2007, 11:53
PM MAIL   Вверх
Alkash
Дата 6.4.2007, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



Сохраняй в поток-)


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
Dino99rus
Дата 6.4.2007, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 10.1.2007

Репутация: нет
Всего: 2



Да ты прав спасибо.
Все ок... (глупые вопросы здаю smile )
PM MAIL   Вверх
karlos34
Дата 18.11.2007, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 11.11.2007

Репутация: нет
Всего: нет



Может немного туповатым покажется вопрос, но: используя LoadFileToResourceW добавляю в библиотеку картинку. вроде все ок, но прога, которая использует картинки из этой библиотеки не может подключить эту картинку. в ресхакере открываю - вроде все есть, НО: когда добаляю картинку (нужно заменить старую на новую) - не заменяет, а добавляет новый тип ресурса. короче вот часть кода:
Код

procedure TMain.ChangeImageExecute(Sender: TObject);
var namefile:string;  
    typeres:string;   
    nameres:string;   
    nameimg:string;  
begin
if OpenPictureDialog1.Execute then
begin
nameimg:=OpenPictureDialog1.FileName;
namefile:=(ExtractFilePath(Application.ExeName)+'Images.dll');
typeres:='Bitmap';
case typ of
1:nameres:='TDEVICE';
2:nameres:='TSWITCH';
3:nameres:='THUB';
4:nameres:='TTERMINATOR';
5:nameres:='TMARSH';
6:nameres:='TPC';
7:nameres:='TMULPC';
8:nameres:='TTELEGRAF';
9:nameres:='TFAX';
10:nameres:='TFONE';
11:nameres:='TSERVER';
12:nameres:='TCONNECT';
13:nameres:='TUSELUPR';
14:nameres:='TUSELNUPR';
15:nameres:='TUSELAVT';
16:nameres:='TOMS';
17:nameres:='TSECNET';
18:nameres:='TFIRNET';
19:nameres:='TFORNET';
20:nameres:='TMOST';
21:nameres:='TTHIRREP';
22:nameres:='TSECREP';
23:nameres:='TFIRREP';
24:nameres:='TFORREP';
25:nameres:='TMAGIST';
26:nameres:='TPOVTOV';
27:nameres:='THUBOV';
30:nameres:='TTRANS';
31:nameres:='TLINE';
32:nameres:='TPORTS';
33:nameres:='TPORTITEM';
34:nameres:='TPORT';
end;
//ShowMessage(namefile);
//ShowMessage(typeres);
//ShowMessage(nameres);
//ShowMessage(nameimg);
LoadFileToResourceW(StringToPWide(namefile),StringToPWide(typeres),StringToPWide(nameres),StringToPWide(nameimg));
end;
end;

Нужно сделать так, что б прога заменяла картинку в библиотеке по ее типу ресурса и имени.
в результате вот что в библиотеке

Присоединённый файл ( Кол-во скачиваний: 16 )
Присоединённый файл  2.rar 18,29 Kb
PM MAIL   Вверх
karlos34
Дата 18.11.2007, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 11.11.2007

Репутация: нет
Всего: нет



понял в чем дело: моя прога работает с рисунками типа Bitmap и типом информации (Data type) Bitmap. а когда я добавляю рисунок - тип рисунка - Bitmap, а тип данных - Bitmap image. но от этого не легче... помогите кто знает как решить проблемму.
PM MAIL   Вверх
my666
Дата 18.12.2007, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 10.12.2007

Репутация: нет
Всего: нет



кто-нить объяснит как работать со строковыми ресурсами типа RT_String?
PM MAIL   Вверх
Alexeis
Дата 18.12.2007, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(my666 @  18.12.2007,  15:41 Найти цитируемый пост)
кто-нить объяснит как работать со строковыми ресурсами типа RT_String? 

  Работать в смысле заменять или просто создавать и использовать?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
fgn1
Дата 11.1.2008, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 11.1.2008

Репутация: нет
Всего: нет



Кто-нибудь, помогите решить проблему.
Есть файл без расурсов, соответственнно без секции ресурсов. Надо запихнуть туда иконку.
Секция как я понял, автоматически не создаётся (сложно?). Даже если секция присутствует, необходимо создать группу иконок... вобщем  smile как всё это сделать...
Заранее спасибо
PM MAIL   Вверх
DelphiExpert1
  Дата 17.5.2010, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 7.5.2010

Репутация: нет
Всего: нет



Небольшой модуль для работы со строками:
Код

unit stringwork;

interface
function InversionString(Sx : string) : string;
function LTrimUnChar(UnChar , Sx : string) : string;
function RTrimUnChar(UnChar , Sx : string) : string;
function AllTrimUnChar(UnChar , Sx : string) : string;
function CountWord(UnChar , Sx : string) : integer;



implementation
{Инвертирует строку}
function InversionString(Sx : string) : string;
Var
  i : integer;
begin
  Result:=Sx;
  if Length(Sx)>0 then begin
     Result:='';
     for i:=Length(Sx) downto 1 do
      begin
        Result:=Result+Sx[i];
     end;
  end;
end;

{Удаляет НЕсимволы слева}
function LTrimUnChar(UnChar , Sx : string) : string;
//UnChar - строка разделителей(не символов). Аналог множества
//Sx - входная строка
Var
  YesExit : byte;
begin
  Result:=Sx;
  if (length(Sx)>0) and (length(UnChar)>0) then begin
     YesExit:=0;
     while YesExit<=0 do
      begin
        if POS(Result[1],UnChar)>0 then begin
           Delete(Result,1,1);
        end
        else begin
           YesExit:=2;
        end;
        if length(Result)<=0 then YesExit:=1;
     end;
  end;
end;

{Удаляет НЕсимволы справа}
function RTrimUnChar(UnChar , Sx : string) : string;
//UnChar - строка разделителей(не символов). Аналог множества
//Sx - входная строка
begin
  Result:=InversionString(Sx);
  Result:=LTrimUnChar(UnChar,Result);
  Result:=InversionString(Result);
end;

{Удаляет НЕсимволы слева и справа}
function AllTrimUnChar(UnChar , Sx : string) : string;
//UnChar - строка разделителей(не символов). Аналог множества
//Sx - входная строка
begin
  Result:=LTrimUnChar(UnChar,Sx);
  Result:=RTrimUnChar(UnChar,Result);
end;

//Определяет кол-во слов в строке
function CountWord(UnChar , Sx : string) : integer;
//UnChar - строка разделителей(не символов). Аналог множества
//Sx - входная строка
var
  InWord : byte;
  i : integer;
begin
  Result:=0;
  InWord := 0;
  i:=0;
  while i<length(Sx) do
   begin
    i:=i+1;
    if POS(Sx[i],UnChar)<=0 then begin
       if InWord<=0 then Result:=Result+1; //переход на начало слова
       InWord:=1; //Мы внутри слова
    end
    else begin
       InWord:=0; //Мы снаружи слова
    end;
  end;
end;
end.

PM MAIL   Вверх
simsmann
Дата 3.2.2011, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 26.11.2006

Репутация: нет
Всего: нет



Не работает приведенный код по выгрузке jpg из ресурса допустим в Image

Код

procedure LoadJPEGFromRes(Exe, JPEG: string; ThePicture: TPicture);
var
 hExe     : Cardinal;
 Stream: TResourceStream;
 JPEGImage: TJPEGImage;
begin
 hExe:= LoadLibrary(PChar(Exe));
 Stream:= TResourceStream.Create(hExe, JPEG,'JPG');
 JPEGImage:= TJPEGImage.Create;
 try
   JPEGImage.LoadFromStream(MemStream);
   ThePicture.Assign(JPEGImage);
 finally
   JPEGImage.Free;
   Stream.Free;
 end;
end;


Вот вызов

Код

LoadJPEGFromRes(ParamStr(0), 'MYJPEG', Image1.Picture);


С загрузкой jpg в ресурс и выгрузку в файл на диске все окей, а вот выгрузка в Image - ОШИБКА!  Помогите в чем дело! smile 

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  error.JPG 10,93 Kb
PM MAIL   Вверх
MetalFan
Дата 4.2.2011, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(simsmann @  3.2.2011,  21:47 Найти цитируемый пост)
   JPEGImage.LoadFromStream(MemStream);

а откуда взялася MemStream? Судя по коду туда надо просто Stream вставить.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
simsmann
Дата 5.2.2011, 02:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 26.11.2006

Репутация: нет
Всего: нет



С этим понятно, это было подпраленно, тут дело в другом.
В прочем вариант я нашел.
В указанном вышге коде вообще несколько ошибок.
Ясделал по другому, причем можно 2 вариантами.
PM MAIL   Вверх
CodeMonkey
Дата 5.2.2011, 02:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



В оригинальную тему про BeginUdate/Update/EndUpdateResource на всех платформах: эти функции есть в MSLU.

Вовсе не нужно было их реализовывать с нуля самому.

Ну и ещё в тему формата строковых ресурсов.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
northener
Дата 5.2.2011, 03:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



<offtop>
 Некроманты/Некрофилы, блин. smile
</offtop>


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0923 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.