PDA

Ver la Versión Completa : Crear una dll apartir de un .res


barakuda
30-11-2010, 00:57:36
Hola, despues de buscar y buscar y probar y probar, joe parece la cancion :D
les tengo que preguntar. Veran mi idea es hacer una dll apartir de un fichero de recurso y el problema es que no se como llamarle, voy por pasos

creo una dll con el siguiente codigo

library dll;
{$R xx.res}

begin
end.
donde naturalmente el xx.res es el fichero de recursos que contiene 2 string

0, 'hola'
1, 'Adios'

(puede que la estructura sea incorecta, lo hago de cabeza :rolleyes:)

hasta aki no problem...

hago una nueva aplicacion a la cual ciertos labels quiero que lea en la dll

y eh aqui el problema que no me salgo, si le digo

label10.Caption:=LoadStr(0);

me devuelve ... nada, eso lo entiendo ya que le digo que carge una cadena de un recurso que no existe y mi pregunta es como le digo que carge atraves de la dll el valor 0 en la label10.caption es decir que el caption de la label10 sea Hola o Adios

gracias de antemano y un saludo!!

ElKurgan
30-11-2010, 09:58:25
yo normalmente lo hago asi:


procedure TForm1.Btn1Click(Sender: TObject);
var
H: THandle;
buf: array[0..1024] of char;
res: integer;
Cadena: string;
begin
H := LoadLibrary(PAnsiChar(Libreria));
if H >= 32 then
try
// 0 es el número de recurso; la otra cadena seria 1
res := LoadString(H, 0, buf, SizeOf(buf));
if res <> 0 then
SetString(Cadena, buf, res)
else
Cadena := 'error';
Edit1.Text := Cadena;
Application.ProcessMessages;
finally
FreeLibrary(H);
end;
end;



Seguro que hay formas mejores de hacerlo, pero a mi me funciona

Un saludo

barakuda
30-11-2010, 18:56:29
gracias amigo, estudiare tu codigo

un saludo!!

ElKurgan
01-12-2010, 07:55:06
Obviamente, se me olvidó comentar que PAnsiChar(Libreria) está cogiendo el valor de cadena de una variable del formulario, cuyo valor en algún momento toma el nombre de la DLL correspondiente.

Lo siento si esto ha podido despistar un poco

Saludos

barakuda
01-12-2010, 19:09:36
na, tranqui ya m di cuenta gracias por tu ayuda

un saludo!!