Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   DFM almacenado como recurso en ejecutable (https://www.clubdelphi.com/foros/showthread.php?t=90400)

jocaro 31-05-2016 13:19:52

DFM almacenado como recurso en ejecutable
 
Hola

¿Delphi almacena por defecto la información de los DFM´s como recurso en el ejecutable, o es necesaria alguna configuración en el IDE?

Alguno de vosotros que me pueda facilitar el código necesario para recuperar la información de DFM´s a partir de dichos recursos (Uso Delphi XE2).

Gracias. Un saludo

Casimiro Notevi 31-05-2016 14:39:54

Hola, no sé cómo se hace eso, a ver si alguien te contesta.
Aunque tengo una duda, ¿para qué sirve hacer eso?

Neftali [Germán.Estévez] 31-05-2016 18:15:26

Cita:

Empezado por jocaro (Mensaje 505799)
¿Delphi almacena por defecto la información de los DFM´s como recurso en el ejecutable, o es necesaria alguna configuración en el IDE?

No es necesario ninguna configuración especial.

Cita:

Empezado por jocaro (Mensaje 505799)
Alguno de vosotros que me pueda facilitar el código necesario para recuperar la información de DFM´s a partir de dichos recursos (Uso Delphi XE2).

Se pueden recuperar los nombres, los tipos y el contenido de los recursos, pero tal vez deberías explicar qué quieres hacer, porque es posible que utilizando RTTI o la clase TStream (WriteComponent) se pueda conseguir lo mismo.

Añado:
* EnumResourceNames: Para enumerar recursos. con eso puedes obtener nombre y tipo.
* TResourceStream: Con esta clase, puedes acceder al contenido de los recursos.

roman 31-05-2016 18:33:14

Ejemplo:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  ResourceStream: TResourceStream;
  TextStream: TMemoryStream;

begin
  ResourceStream := nil;
  TextStream := nil;

  try
    ResourceStream := TResourceStream.Create(HInstance, 'TFORM1', RT_RCDATA);
    TextStream := TMemoryStream.Create();

    ObjectBinaryToText(ResourceStream, TextStream);
    TextStream.Seek(soFromBeginning, 0);

    Memo1.Lines.LoadFromStream(TextStream);
  finally
    ResourceStream.Free;
    TextStream.Free;
  end;
end;

LineComment Saludos


La franja horaria es GMT +2. Ahora son las 15:38:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi