PDA

Ver la Versión Completa : librerías personalizadas para agregar en "uses"


ssouto
24-09-2016, 00:56:07
Hola soy re novato en delphi y un tanto grandecito, pero me estoy animando a aprender, aunque mis neuronas no son las de la juventud.

necesito para la Facu, generar unas librerías de manejo de pilas, listas y colas. Tengo los códigos, pero no me doy cuenta como generar la librería.
no debo llamar con botón sino que tienen que estar disponible al incorporarla en "uses". existe ya algún tutorial que me ayude?

desde ya muchas gracias

BDWONG
24-09-2016, 01:42:18
Hola aquí esta un tutorial http://www.codigo-facil.com/es/crear-unit-delphi.php en el foro hay también mucha información basta con que uses el buscador y escribas UNIT
Aqui tienes otro ejemplo precisamente del foro: https://www.clubdelphi.com/foros/showthread.php?t=21032

SALUDOSSS:)

ecfisa
24-09-2016, 01:51:54
Hola ssouto, bienvenido a los foros de Club Delphi. Y como acostumbramos con los ingresantes, te invitamos a que leas nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php).

Primero creas una nueva unidad ( File -> New -> Unit ). Delphi te creará un esqueleto similar a este:

unit Unit2;

interface {1}

implementation {2}

end.

Todo lo que desees que sea accesible desde cualquier unidad que incluya a esta, lo declaras en la sección interface (luego de {1}), ej.:

unit Unit2;

interface {1}

type
PNodo = ^TNodo;
TNodo = packed record
dato1 : string[50];
dato2 : integer;
ant : PNodo;
sig : PNodo;
end;

procedure CrearLista(var Nodo: PNodo; const cad: string; const nro: Integer);
...


Y todo lo que no desees que sea accesible desde otras unidades, en la sección implementation (luego de {2}), vg.:

...

implementation {2}

procedure CrearLista(var Nodo: PNodo; const cad: string; const nro: Integer);
begin
New(Nodo);
Nodo^.dato1 := cad;
Nodo^.dato2 := nro;
Nodo^.ant := nil;
Nodo^.sig := nil
end;

...

end.

Luego ya podrías hacer:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; // (también podrías incluirla aqui)

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;

var
Form1: TForm1;

implementation

uses Unit2; // <- aquí, incluida la unidad

procedure TForm1.Button1Click(Sender: TObject);
var
Lista: PNodo;
begin
CrearLista(Lista, 'Hola', 115);
end;
...


Mas sobre unidades:

Programas y unidades (http://www.marcocantu.com/epascal/Spanish/ch11unit.htm)
Como crear nuestra Unit en Delphi ? (http://www.codigo-facil.com/es/crear-unit-delphi.php)
Working with units... (http://delphi.about.com/od/beginners/l/aa100103a.htm)
Programs and Units (... (http://docwiki.embarcadero.com/RADStudio/Seattle/en/Programs_and_Units)

Buscando en la web, seguramente encuentres mas información.

Saludos :)

ssouto
24-09-2016, 02:13:33
Agradezco la rápida respuesta, prometo leer el manual de estilo, ya comencé, estuve usando el buscador; pero cuando uno es ignorante de un tema busca mal, y estuve dando muchas vueltas sin encontrar nada, lo que encontré me llevaba a otras alternativas para usuarios mas adelantados que yo en delphi, ya introducidos en programación orientada a objetos.
En mi camino de aprendizaje todavía no hemos vistos nada de programación orientada a objetos. Me indicaron que seria en el próximo cuatrimestre. Actualmente utilizamos delphi como evolución de freepascal para avanzar con modularidad, reutilización, ocultamiento y encapsulamiento, como así también uso y aplicación de listas, pilas y colas.

muchas gracias

ssouto
25-09-2016, 21:57:54
luego de leer todo lo que me sugirieron, no me doy cuenta donde debe guardar una unit para que luego la encuentren posteriores proyectos al referirla en el uses de dicho nuevo proyecto.
no estoy haciendo una dll, sino una unit que se pueda utilizar desde otros proyectos.
estoy utilizando Delphi 7.

Adicionalmete, hay una forma de identar varios renglones juntos? cuando lo quiero hacer como lo hacia en geany, dando TAB, me los borra.

desde ya muchas gracias

Lepe
26-09-2016, 18:32:28
La unidad debe estar en una ruta donde Delphi la encuentre.

Para hacerlo de forma global:

Tools -> enviroment options -> library; añade en "Library paths" y también en "Browsing paths" por ejemplo $(delphi)\Projects\MisUnidades (tienes que crear la carpeta y poner la Unit allí).

Para un proyecto determinado nada más:
En Project -> Add to project -> elegir la unidad donde esté y listo.

Con respecto a sangrar el código, las teclas rápidas del IDE son CTRL + SHIFT + I (Indent) y CTRL+ SHIFT + U , que no sé como decir disminuir sangría en inglés :D Unindent??.

Si instalas cnWizards (gratis y open source) añade muchas cosas al IDE de Delphi, entre ellas el sangrar con TAB y disminuir el sangrado con SHIFT + TAB. Además de colorear el código fuente... indispensable hoy día jejeje.

Saludos!

ssouto
27-09-2016, 03:33:38
muchas gracias por todos los datos!!!
lo intento, cualquier cosa consulto.

ssouto
21-10-2016, 22:33:43
Hola Club Delphi, logre instalar en cnWIzard, la verdad muuy bueno, para un iniciado como yo es muy útil poder ver las conexiones entre sentencias de código.
Agradezco mucho.

los temas que tengo dudas tratare de buscar en lo foros.

Pero si alguien lee este mensaje, ando buscando entender el funcionamiento de las Pilas, Colas, Listas, Árbol binario de búsqueda y Árbol B, si tienen sugerencias para entrarle al tema para alguien que repito e un iniciado en programación y en delphi .

saludos