PDA

Ver la Versión Completa : Donde crear procedimienos generales?


JavierO
02-09-2005, 00:09:10
Hola a todos:

Quisieran que me orientaran con respecto a donde se deben de crear procedimientos generales que se va a estar utilizando en mi sistema, ya que algunos yo los tenia dentro de mi forma y otros los habia creado por separado en otro proyecto, tambien dentro de una forma para hacer pruebas, pero cuando los trato de utilizar al unir la forma a mi proyecto no esta reconociendo los controles que ya habia creado para hacer las consultas.

Estos procedimientos extraen información a una base de datos en Access.

Saludos y de antemano gracias

Sotrono
02-09-2005, 01:47:48
Te lo explico con un ejemplo asi es mas facil


Private
procedure Prueba(s: string);
Public
//Lo declaras en Private o Public segun lo que necesites


//Luego en Implementation lo declaras igual pero con el nombre del form antes que el nombre del procedimiento

Implementation

procedure TForm1.Prueba(s: string);
begin
label1.caption:= s;
end;


Espero que te sirva. Saludos...

Crandel
02-09-2005, 05:26:53
si son sólo procedimientos sueltos, podes crear una unit extra donde vas insertando todos los procedimientos. Despues lo que haces es llevarte esta unit de un proyecto a otro y listo.

Si estan relacionados, tambien podes crear una clase que te resuelva el problema.

Lepe
02-09-2005, 18:11:19
Yo tengo creada una carpeta llamada "PAS UTILES", dentro de ella creo varios archivos .pas:

- Lpfonts (rutinas para el manejo de fuentes)
- Lpfiles (rutinas para busquedas de archivos etc)
- LpPaths (rutinas para el manejo de caminos)

el prefijo LP es lógicamente de "Lepe", así no interfiere nunca con las originales de delphi ni con terceros. Por supuesto esa carpeta la añado al Library Paths de delphi, y la meto en E:\delphi\pas utiles, por si windows me da un susto, que no sea muy grande ;).

En cada proyecto, solo tengo que añadir la unidad que necesite a los "uses" y listo.

Existe un detalle a tener en cuenta: Al hacerlo así, no puedo modificar una rutina para un proyecto determinado, porque afectaría a todos los programas al recompilarlos. Esto no es un inconveniente.... Si algo tiene que se modificado, es porque no estaba bien diseñado ;), así que dedico siempre unos minutos a analizar una nueva rutina que quiero meter en esas unidades.

Si la rutina es solo para un proyecto, en ese proyecto añado una unidad nueva llamada publica, y coloco la rutina dentro. Si puedo hacer una rutina muy general, entonces la meto en PAS UTILES.

Un problema concreto, siempre puede ampliarse a uno más general, así que el concreto se mete en "publica" y el general en PAS UTILES, es decir, hago 2 rutinas para un mismo propósito, y las separo de ubicación:

Problema: Buscar los archivos de tipo *.txt de una carpeta:
- en PAS UTILES: buscar archivos por extensiones, devolviendo un StringList con todas las ocurrencias, posiblidad de recursion de carpetas.
- en PUBLICA: una llamada con BuscarArchivos('c:\sistema\', '*.txt', recursionAfalse, ElStringlist) y ahora hago lo que quiera con esos resultados.

Si al implementar la rutina BuscarArchivos, no tengo tiempo suficiente, puedo diseñarla así:

procedure BuscarArchivos(const ruta:string;
const TiposDeArchivos:String);


Cuando tenga más tiempo, siempre puedo ampliarla de esta forma:

procedure BuscarArchivos(const ruta:string;
const TiposDeArchivos:String
const Recursiva:Boolean = false);

Como el último parámetro es opcional, no afecta a los programas que ya usen la rutina.

No es nada nuevo, basta fijarse en las librerias NKLIBS, RXLIBS, JCL etc.

Un saludo.