PDA

Ver la Versión Completa : Pasar de Turbo Pascal 7 a DELPHI7


BEPAI
12-03-2007, 13:31:15
Hola buenos días.
Me encuentro con muchas dudas para realizar esta operación, y me dispongo a enumerar de la forma más clara que sé explicarme:
-Tengo una aplicación en Turbo Pascal 7, sencilla con sus USES,LABEL,TYPE,VAR, a continuación PROCEDURES, y empezamos con el Principal, Begin....end.
-El programa hace unos cálculos y los graba en un archivo de texto.(PRIMER BOTON).
-El programa carga datos, compara un archivo de texto si son validos estos datos, y genera un archivo nuevo.(SEGUNDO BOTON)
QUIERO: Hacer el mismo programa, con dos botones, y en cada botón es un trozo de programa independiente que tiene que utilizar variables globales a todo el programa, aparte de las locales.
Sé que cada cosa es un módulo,........pero no quiero entrar en grandes complicaciones, declarar UNIT etc,.........vamos a puro güevo.

PREGUNTAS:
-¿Donde coloco las VARIABLES GLOBALES PARA TODA LA APLICACIÓN, así como otras estructuras, vamos las que defino yo, no Delphi?
-En los dos botones(o paneles, u otra cosa que me sirva...), que coloco dos subprogramas, necesito declarar variables locales de todo tipo(label,arrays,var)
-¿Puedo definir dentro de los botones procedimientos, funciones,.............?
¿donde lo coloco?

Creo que no se me escapa nada. He leido tanto sobre DELPHI, que tengo un lío impresionante.
CON LA SIMPLE COLOCACIÓN, ME HACEIS UN FAVOR IMPRESIONANTE.

Muchas gracias anticipadas.

dec
12-03-2007, 13:45:30
Hola,


-¿Donde coloco las VARIABLES GLOBALES PARA TODA LA APLICACIÓN, así como otras estructuras, vamos las que defino yo, no Delphi?


En la "interface" de cualquier unidad del proyecto. Incluso en el mismo archivo de proyecto ("*.dpr"). En cualquier lugar, podría decirse, al que tengas acceso desde cualquier punto del proyecto. Si añades las variables en la parte "interface" de una determinada unidad y a su vez añades esta unidad en otra, en esta segunda estarán disponibles las variables declaradas en la primera.


En los dos botones(o paneles, u otra cosa que me sirva...), que coloco dos subprogramas, necesito declarar variables locales de todo tipo(label,arrays,var)


Ningún problema... tal como yo lo veo. Puedes colocar casi cualquier cosa capaz de capturar los eventos del ratón. Si no quieres complicarte usa formularios y botones de la VCL. Es decir, inicia un nuevo proyecto en Delphi (Aplicación para Win32, no del tipo "consola") y en el formulario que te aparece sitúas dos botones. En los propios eventos "OnClick" de dichos botones puedes declarar variables y en definitiva hacer lo que necesites hacer.


-¿Puedo definir dentro de los botones procedimientos, funciones,.............? ¿donde lo coloco?


Esa pregunta es un tanto ambigua. Puedes estar queriendo decir, ¿puedo ampliar la clase "TButton" para añadir nuevos procedimientos y funciones (o sea métodos) en la misma? La respuesta obviamente es que sí. Pero también puedes querer decir, ¿puedo incluir procedimientos y funciones dentro del evento "OnClick" de un botón (que es a su vez un procedimiento)? Y la respuesta es que sí también, puesto que puedes añadir funciones y procedimientos "anidados". Tal que así:


procedure Saludo();

procedure HolaMundo();
begin
ShowMessage('¡Hola mundo!');
end;

begin
HolaMundo();
end;


Aunque en este caso no habría mucha diferencia entre codificar de este modo:



procedure HolaMundo();
begin
ShowMessage('¡Hola mundo!');
end;

procedure Saludo();
begin
HolaMundo();
end;


Dependerá de lo que te traigas entre manos pero creo que podría decirse que no es lo común encontrarse procedimientos y funciones anidadas en otros procedimientos y funciones.

No sé si he resuelto alguna de tus dudas o qué. :)

BEPAI
12-03-2007, 15:01:35
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;


implementation

{$R *.dfm}


end.


Este código corresponde al Form1, que supongo que es el principal.
Entiendo que despues de implementation
y antes de {$R *.dfm} puedo definir todo??

y entre.....
{$R *.dfm}.......
........codigo...........
........codigo...........
........codigo...........

y................end.;
puedo poner el código ejecutable no expuesto a ningún boton, panel, etc.................

Saludos y gracias por contestar tan rápido.

dec
12-03-2007, 15:19:38
Hola,

Hombre... todo, todo, no. Según y depende. Por ejemplo si quieres declarar variables globales (como decías arriba) es menester hacerlo en la parte "interface" y no en la "implementation". Yo creo que sería mejor si nos centramos en el código que tratas de añadir... no sé...

BEPAI
12-03-2007, 16:25:23
Supongamos este código Turbo Pascal7:





Program Demo;

USES
crt,dos,turbo3;
LABEL
etiqueta;
TYPE
matriz=array[1..12,1..24]of integer;
VAR
mat:matriz;
a,b:integer;
cantidad:real;
fic:text;

{$I C:\PROGAMAS\UTILIDADES\CALCULADORA.PAS}

PROCEDURE CALCULO(VAR A:INTEGER,c,d);

type dado=array[1..23,1..12]of char;
var tran:dado;
h,j,i:string[6];
begin
a:=c*d;
end;

BEGIN{...........principal}
CLRSCR;

CALCULADORA;
CALCULO;

{aquí podriámos por ejemplo meter código puro y duro}

for a:=1 to 345 do write('*');
repeat until keypressed;

END.

{yo hago cosas para salir del paso}

¿cómo colocaría yo todo esto en Delphi, sin entrar en grandes algoritmos?
TODO LO GLOBAL en el Form1 por ejemplo??
Donde iría colocado???.....sin grandes cosas raras y excepciones que creo que las habrá.

Lo que corresponde a Form1 es esto:

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.


..................y supongo que después lo que coloque en un botón para ejecutar, irá colocado de forma similar, porque el código del botón será otra Unit, indepediente, pero en mi caso debe trabajar con esas variables globales de las que te he hablado.

tu lo de propiedades y eventos, no te preocupes, eso lo sé bastante bien, quiero decir que lo entiendo, y ya he practicado creando menús, submenús,........y creo que hasta métodos, etc,.....
En su conjunto entiendo Delphi y como funciona en general. Lo malo es que yo no tengo el nivel, para sacarle todo el rendimiento. Yo hago chapucillas que me sacan de muchos atascos y me alivian en mi trabajo cotidiano, aunque no sea el mejor código.

Con que me ayudes en esto, que creo que es de lo más importante, me haces un gran favor.

Gracias, Dec.

Delphius
12-03-2007, 16:25:59
Aparte de lo añade Dec... sería recomendable que te fijes en la página 58, 60, 62 y siguientes de La Cara Oculta de Delphi 4 (http://www.clubdelphi.com/foros/www.marteens.com/caraoculta.htm). Alli se describe bien tus dudas. Te recomiendo que la leas, te va a servir de mucha ayuda para iniciarte; no te asustes por lo de Delphi 4... porque mucho no ha cambiado.

En cuanto a un procedimiento, función, o evento la forma de hacerlo es igual e intuitiva que pascal:

procedure TForm1.Button1Click(Sender: TObject);
// Button1Click hace referencia al evento de un click sobre el botón 1
const MI_CONSTANTE = 1; //constantes... si son necesarias
var i,j: integer; //variables... si son necesarias
begin // comienzo del cuerpo del evento/procedimiento/función
i := 0;
j := (i + 60) div 2;
ShowMessage(IntToStr(j)); //ShowMessage muestra una ventana con el resultado
// IntToStr transforma un entero en string. ShowMessage recibe como parametro strings
end;

Saludos,

BEPAI
14-03-2007, 11:44:19
gracias a todos, voy a intentarlo.
saludos.