Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ayuda al crear Dll (https://www.clubdelphi.com/foros/showthread.php?t=68369)

kurono 09-06-2010 20:40:27

ayuda al crear Dll
 
hola amigos estoy aprendiendo a crear dll y necesito su ayuda e puesto este codigo en la dll y me da error al compilar

Código Delphi [-]
library dll;

uses
   Windows,SysUtils,Classes;

{$R *.res}
 function NombreUsuario : String;
 var
    pcUser   : PChar;
    dwUSize : DWORD;
 begin
    dwUSize := 21;
    GetMem( pcUser, dwUSize );
    try
       if Windows.GetUserName( pcUser, dwUSize ) then
          Result := pcUser
    finally
       FreeMem( pcUser );
    end;
 end;
begin
end.

el error que me dice es que el proyecto no puede ser depurado al menos que exsista una aplicacion definida . que significa esto?

droguerman 09-06-2010 23:08:32

No sé si entendí mal, pero creo quieres decir que te da error al ejecutar, en Delphi entra al menú Run->Parameters y escoge una aplicación que tú sepas va a usar esta DLL

kurono 09-06-2010 23:29:21

e asociado la dll a la aplicacion y me tira el error de que la aplicacion no pudo iniciarse correctamente uso el siguiente codigo para llamar la dll .es algo que estoy haciendo mal o me faltaria algun otro codigo

Código Delphi [-]
unit AplicacionDll;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function NombreUsuario:string; stdcall; external 'dll.dll';
procedure TForm1.Button1Click(Sender: TObject);
begin
  NombreUsuario;
  Edit1.Text:=NombreUsuario;
end;

end.

droguerman 09-06-2010 23:31:24

No estoy muy seguro pero creo tienes que declarar tu función con stdcall

kurono 09-06-2010 23:33:40

igual me da el mismo error con stdcall o sin el

dado 10-06-2010 00:01:42

Tienes que partir de la base de ¿Que es un dll?

Un dll (dinamic lynk library) es un juego de funciones o procedimientos que VAN A SER LLAMADOS POR UN PROGRAMA EXTERNO.

Ahi ta', tienes que hacer un programa que LLAME A TU DLL con los parametros necesarios y obtenga lo que espera.

O que es lo mismo, la DLL NO SE PUEDE "AUTOEJECUTAR" ya que no es un programa, es una libreria de funciones.

droguerman Menciono que con RUN - > Parameters, mmmh, no, ahi especificas los "command line parameters" o parametros de linea, de los que se usaban en MS-DOS, por ejemplo la instruccion de MSDOS

c:>copy c:\archivo1 a: ((( uuuy se acuerdan de esto !! je je je )))

Tiene dos parametros, el parametro 0 = c:\archivo1 y el parametro 1 = a:
pero eso es otra cosa

kurono 10-06-2010 00:22:44

amigos ya solucione el error solo tenia que poner al final de la dll el siguiente codigo

Código Delphi [-]
 exports NombreUsuario;
;)

kurono 10-06-2010 04:54:17

amigos disculpen la molestia tengo un solo problemita mas resulta que la aplicacion funciona perfectamente solo que al terminar la ejecucion del codigo el formulario se cierra

kurono 12-06-2010 05:18:10

amigos nuevamente he solucionado el ultimo problema que e tenido creando esta dll solo me costaba buscar un poco en google:p nada mas tuve que agregar el codigo
Código Delphi [-]
stdcall ; export
en las funciones declaradas en la dll


La franja horaria es GMT +2. Ahora son las 13:05:16.

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