Introduc Al Delphi

download Introduc Al Delphi

of 46

Transcript of Introduc Al Delphi

  • 8/16/2019 Introduc Al Delphi

    1/46

    INTRODUCCIÓN AL PROCESO DE PROGRAMACIÓN. El trabajo de un programador consiste en escribir instrucciones tales como lasinstrucciones del programa de encontrar el doble de un número, por ejemplo. Latarea de un programador se puede dividir en seis pasos:

    1. Entender el problema2. Plantear la lógica para la resolución del problema3. Desarrollar la aplicación para resolver el problema. !ompilar la aplicación". Probar la aplicación#. Poner la aplicación en ejecución

     

     $ continuación se reali%ar&n de manera detenida cada uno de estos puntos. Entender el problema.

     'e escriben programas para satis(acer las necesidades de otras personas. Dic)aspersonas se les da el nombre de usuarios. *n cl&sico ejemplo de esto es unprograma o aplicación de )oja de c&lculo. E+ista una necesidad de manejoordenado de números - de procesamiento de in(ormación, una empresa se abocóa la tarea de crear una aplicación ue maneje la in(ormación de manera tabular, lea/adió capacidades de procesamiento a dic)as tablas - por último la o(reció a losusuarios para resolución de problemas ue manejen datos de manera tabular. $l(inal de cuentas, el usuario no necesita saber cómo (unciona de manera internauna )oja de c&lculo, sino resolver el procesamiento del in(ormación en las tablas. 'upongamos ue un ingeniero residente le dice a uno de los supervisores de obraue 0se necesita una lista de todos los obreros sujetos a jornal, ue )an estadotrabajando au durante los últimos cinco o m&s das, porue ueremos o(recer unbono especial por el trabajo reali%ado0. Este problema puede considerarse ue noest& completamente e+plicado. Esto inclu-en a los trabajadores ue llegarontarde el lunes u4 )a- de las personas ue salieron temprano los dem&s dasu4 sucede con auellas personas ue no rindieron lo ue supuestamentedeben rendir u4 pasara si alguno de los empleados estuvo incapacitado por el seguro social 5 as por el ejemplo pueden surgir aún m&s dudas. Entender realmente el problema puede ser uno de los aspectos m&s di(ciles antesde intentar resolverlo. En cualuier trabajo, la descripción de lo ue usuarionecesita puede ser vaga o peor aún, el usuario puede incluso no saber u4 es loue realmente uiere. Plantear la lóg!a para la re"ol#!ón del problema. La esencia del proceso de programación reside en plantear la lógica del programa.Durante esta (ase del proceso de programación, el programador plantear lospasos del programa, diciendo tanto ue pasos incluir como en ue orden. 6a-

  • 8/16/2019 Introduc Al Delphi

    2/46

    muc)as (ormas de plantear la solución de un problema. Las dos )erramientas m&scomunes son los diagramas de (lujo - el pseudo código. $mbas )erramientassirven para escribir los pasos del programa. Lo ue se conoce como elplanteamiento del problema, de manera m&s e+acta se le conoce como0desarrollar un algoritmo0. El programador no se preocupa de la sinta+is del

    lenguaje de programación en este punto, sino por averiguar u4 - secuencias desucesos conducir& a la salida deseada desde los datos de entrada disponibles.Esto puede compararse a la planificación de un viaje sobre el papel antes desubirse un automóvil . De"arrollar la apl!a!ón para re"ol$er el problema 

    *na ve% ue el programador )a desarrollado la lógica del programa, entoncespuede escribir programa en uno de los 77 o m&s lenguajes de programación uee+isten. Es en este punto en el ue el programador puede empe%ar a preocuparsede cada comando se )alla escrito correctamente - ue la puntuación va-a en

    lugares correctos8en otras palabras, utili%ar la sinta+is correcta del lenguaje ue se)a escogido para la programación. 

     $lgunos programadores mu- e+perimentados pueden combinar con 4+ito elplanteamiento lógico - estructura real de las instrucciones, o codi(icación delprograma, en un solo paso. 'i los programas son mu- simples, incluso algunaspersonas con e+periencia pueden saltarse varios pasos, -endo directamente a lacodi(icación. Pero si el problema a resolver es m&s complejo de lo ue parece, lacodi(icación de manera directa puede resultar mu- di(cil, sobre todo si la personaue se dedica a la programación no tiene e+periencia. 9ecurriendo al ejemploanterior, esto significaría subir y manejar un automóvil, sin conocer la ruta a seguir . En este momento, puede parecer ue escribir el programa en un lenguaje deprogramación es una tarea mu- di(cil, teniendo en cuenta todas las reglasgramaticales - escritura ue se deben aprender. 'in embargo, el planteamiento esrealmente el paso m&s di(cil. Complar la apl!a!ón. 

     $ún u4 )a- muc)os lenguajes de programación, muc)os entornos deprogramación, muc)as aplicaciones dirigidas al desarrollo de aplicaciones paraindo;s, las computadoras solamente conocen un lenguaje, su propio lenguajede m&uina, ue consta de ceros - unos. Las computadoras entienden estelenguaje de m&uina porue ellas mismas est&n )ec)as de miles depeue/simos interruptores el4ctricos, cada uno de los cuales puede estar enestado de encendido o apagado, ue se representan mediante un 1 - un 7respectivamente. Es en este momento ue el lenguaje de programación o elentorno de programación entra a los rescate. Los entornos de programación convierten las aplicaciones ue se )an dise/ado enuna pantalla, en lo ue las computadoras pueden entender. $ este proceso se le

  • 8/16/2019 Introduc Al Delphi

    3/46

    conoce como compilar. Los lenguajes de programación est&n escritos de manerade ue las personas ue los utili%an entiendan (&cilmente lo ue est& escrito en lapantalla de la computadora. !asi todas las aplicaciones dirigidas a laprogramación poseen un elemento ue convierten dic)as instrucciones en ellenguaje de la m&uina. $ este elemento se le conoce con el nombre compilador.

    Es pues el trabajo del compilador el reunir todos los recursos necesarios paraejecutar una aplicación, as de todos los elementos ue componen la aplicaciónue el programador )a desarrollado - convertirlos en el lenguaje de la m&uina. Es en este momento necesario discutir estos dos puntos: el lenguaje ue el)umano entiende, - el lenguaje ue la m&uina entiende.

  • 8/16/2019 Introduc Al Delphi

    4/46

    nuevo ue se acomoda 4se programa. Puede ocurrir tambi4n ue e+istan manerasm&s e(icientes para manejar la in(ormación, por lo ue la aplicación reuiera demejoras. En resumidas cuentas, la conversión para utili%ar una nueva aplicación oconjunto de programas puede a veces tardan meses cuando nos - llevarse a caboen una organi%ación.

     LA &ISTORIA DEL DESARROLLO DE APLICACIONES DE 'INDO'S. Las inter(aces gr&(icas de usuario =@*A, por sus siglas en ingl4s> )anrevolucionado el mundo in(orm&tico. ui%& m&s importante a largo pla%o es el)ec)o de ue las aplicaciones indo;s tienen una inter(a% de usuario consistente- )asta cierto punto, mas agradable - (&cil de utili%ar. Esto conlleva a ue losusuarios de los ordenadores tienen m&s tiempo para dominar una aplicación, sintener ue preocuparse de las teclas ue deben pulsarse dentro de los menús -cuadros de di&logo.

    El 4+ito ue tuvieron el desarrollo - la utili%ación de aplicaciones orientadas aindo;s dejaron relegada la programación orientada a DB' a aplicacionessencillas ue no reueran de una inter(a% gr&(ica - a la ense/an%a de diversoslenguajes de programación, en entornos ue no tampoco reueran decapacidades gr&(icas. !on el atrevimiento de indo;s C", la ventana dedesarrollo de DOS uedó aún m&s relegada dentro del menú de inicio de la barrade indo;s, -a no con su nombre original =DB'>, sino como (S)mbolo delS"tema(, dentro de los $ccesorios del menú de Programas del botón de Anicio. Por otro lado, las compa/as ue producan compiladores para lenguajes deprogramación, comen%aron a darle pre(erencia al desarrollo de entornos para laprogramación en indo;s. Esto a su ve% tuvo como consecuencia de ue dic)asempresas dejaran de mantener sus productos orientados al entorno de DB'. !onel paso del tiempo, las )erramientas - entornos de programación orientadas aDB' uedaron obsoletas. $)ora es posible conseguir tales productos de maneragratuita, pero desa(ortunadamente las aplicaciones ue se desarrollen con ellos -atienen un uso mu- restringido o incluso no son compatibles con las nuevastecnologas de computación. Es obvio ue la programación orientada a indo;s o(rece muc)as m&s ventajas,tanto tecnológicas, cient(icas - comerciales. Pero todo esto tiene un precio? antesde la e+istencia de aplicaciones tales como isual asic, isual ! o Delp)i, eldesarrollo de aplicaciones para indo;s era muc)o m&s complicado uedesarrollar aplicaciones para DB'. Los programadores tenan ue preocuparsem&s de lo ue estaba )aciendo el ratón, de dónde estaba el usuario dentro de unmenú - de si estaba reali%ando un clic o un doble clic en un punto determinado.Desarrollar aplicaciones para indo;s reuera e+pertos programadores en !, eincluso 4stos tenan problemas. 

    !on el uso común de entornos para el desarrollo r&pido de aplicaciones =9$D>para indo;s, se pueden desarrollar aplicaciones completas m&s r&pidamente.

  • 8/16/2019 Introduc Al Delphi

    5/46

    Los errores de programación no se generan tan (recuentemente -, si lo )acen, sonm&s sencillos de corregir. $dem&s inclu-e dos conceptos importantes:

    1. *n m4todo visual de creación de aplicaciones, inclu-endo (ormularios=ventanas>, controles -, componentes del (ormulario.

    2. La )abilidad de asociar código directamente a cada evento de cadaelemento del dise/o visual. 

    DESARROLLO DE APLICACIONES EN 'INDO'S. indo;s C"FCGFH de 32 bit, para la manipulación devolúmenes aún m&s grandes de in(ormación.

    *n modelo de memoria sin muc)as de las restricciones de versionesanteriores de indo;s, lo ue signi(ica ue las cadenas -a no est&nlimitadas a #"."3" caracteres, pudiendo alcan%ar casi los 2 billones decaracteres de longitud.

    • La capacidad de incrustar objetos BLE entre la inmensa ma-ora deaplicaciones indo;s C" con solo arrastrar - soltar.

    • La adaptación de los controles BLE =B!Js> para utili%arlos en cualuier aplicación.

    • La utili%ación de libreras de intercambio din&mico, mejor conocidas comoDLL, a su iniciación en cualuier aplicación - as reducir el es(uer%o dedesarrollo de nuevos programas.

    • Bptimi%ación del registro central para almacenar in(ormación de lasaplicaciones. Esto sustitu-e a los (ic)eros AHA utili%ados en indo;s 3.+para mantener in(ormación acerca del sistema - las aplicaciones.

    • Bptimi%ación de la implementación de multimedia, inclu-endo sonidos,gr&(icos - animaciones.

    • Antroducción de un nuevo modo de presentación de las aplicaciones,inclu-endo la barra de tareas, controles de (ic)a - arc)ivos de a-uda.

    LA PROGRAMACIÓN *ISUAL + GUIADA POR E*ENTOS. *n programa reali%ado en DB' es un conjunto de sentencias ue se ejecutan dearriba a abajo m&s o menos, en el orden ue el programador )a dise/ado. *naaplicación en indo;s presenta todas las opciones posibles en uno o m&s(ormularios para ue el usuario elija entre ellas. !ada (ormulario puede contener uno o m&s objetos =mejor conocidos como controles>, los cuales pueden reali%ar una o m&s acciones. Bbviamente cada acción estar& compuesta de un grupo desentencias. La secuencia en la ue se ejecutar&n las sentencias no puede ser prevista por el programador. Esto da lugar a la Programación Orientada aEventos. Para programar una aplicación en indo;s )a- ue escribir código

  • 8/16/2019 Introduc Al Delphi

    6/46

    separado para cada objeto en general, uedando la aplicación dividida enpeue/os procedimientos, conducidos cada uno de ellos por un evento. *n eventoes una acción reconocida por un objeto =(ormulario o control> el suceso puede ser causado por el usuario o, indirectamente por el código. En una aplicación, cada(ormulario - cada control tienen prede(inidos un conjunto de eventos. !uando

    ocurren estos eventos, la aplicación invoca al procedimiento asociado con elobjeto para ese evento. Para desarrollar una aplicación orientada a indo;s, los pasos ue se seguir&nson los siguientes: 

    • De(inir de manera precisa el problema ue se pretende resolver con laaplicación.

    • !rear la inter(a% de usuario. Esto signi(ica esto signi(ica crear los(ormularios ue necesite la aplicación, a/adir los controles u objetosnecesarios para cada (ormulario.

    • Iodi(icar las propiedades de cada objeto. Esto signi(ica a/adir ttulos, darle(ormatos, modi(icar colores, modi(icar tama/os, estilos, artculos, opciones,etc, para cada objeto.

    • Escribir el código asociado a los eventos de cada objeto - 4sta es la partem&s importante. Es mediante la combinación del código de los eventos, lainteracción de los componentes u objetos en el (ormulario - las tareasreali%adas por todos los (ormularios con los cuales el problema se resuelveo no.

     

    EL PROCESO DE LOS E*ENTOS 

    !onocer dic)o anteriormente cada uno de los procesos de los eventos consiste enuna serie de instrucciones se reconocen con el nombre de programa. Dic)oprograma es tan sólo una porción del total del código necesario para crear unaaplicación. Por ejemplo, supongamos ue tenemos un (ormulario con control -deseamos ue se control realice una operación. 'e tienen ue tener en cuentaprimero ue in(ormación reuerida de entrada: es un número 'on variosnúmeros 'er& una (rase Ho proporcionar& el usuario el dato de manera libre'e reuerir& al usuario introdu%can in(ormación de un grupo de datos, etc. Estain(ormación se le conoce como datos de entrada. 'eguidamente se reuerir& un proceso espec(ico para la manipulación del

    in(ormación ue el usuario )a-a introducido al programa. Es au donde se debetener -a de(inida una lógica para resolución del problema. Esto es lo ue seconoce como proceso. Kinalmente, ser& necesario especi(icar si el programa muestra el resultado alusuario, si no lo muestra, si el resultado ser& utili%ado por otro proceso en otroevento, etc. $ esto se le conoce como in(ormación de salida. 

  • 8/16/2019 Introduc Al Delphi

    7/46

    En t4rminos llanos, un proceso =o mejor dic)o el proceso completo> comprender&ue estas tres partes: datos de inicio, el proceso, - datos de salida. Es en este punto donde los pasos ue se propusieron para el proceso deprogramación son tambi4n v&lidas, sólo ue esta ve% est&n espec(icamente

    orientadas al proceso del evento. Puede ue un control no reuiera de procesoalguno.

  • 8/16/2019 Introduc Al Delphi

    8/46

    *nit1.dcu est4 una unidad compilada de Delp)i*nit1.d(m este arc)ivo es la representación gr&(ica del (ormulario*nit1.pas en esta arc)ivos se guardan el código asociado a todos los

    controles del (ormulario ue se )a creado, aunue no tenga ningúncontrol puesto en ese (ormulario

     los arc)ivos anteriores sirven para ue Delp)i produ%ca el siguiente arc)ivo:Project1.e+e. Dic)o arc)ivo es el programa ejecutable. El compilador de Delp)ile-ó la in(ormación contenida en el arc)ivo Project1.dpr, para generar dic)oejecutable. 

     $parentemente el trabajo con un pro-ecto -a sea de Delp)i o de cualuier entornode programación es bastante complicado, sin embargo el entorno deprogramación es el ue se encarga de administrar todos estos arc)ivos. $dem&sDelp)i crea varios arc)ivos temporales en el directorio donde se locali%a en dic)opro-ecto. Esto reduce el es(uer%o de la persona ue desarrolla una aplicación,pero no lo libera de tener cuidado con la administración de los arc)ivos -directorios donde radican los pro-ectos. 'i por algún error se borra alguno de losarc)ivos anteriores, la aplicación probablemente no (uncione. Esta aparentecomplejidad no debe amedrentar al programador. 'i se tiene cuidado conadministración de los arc)ivos - directorios en el disco rgido de la computadora,no debe de )aber ningún problema. Las aplicaciones actuales no necesariamente est&n compuestas por un pro-ectoen particular. *n pro-ecto puede )acer uso de recursos de otros pro-ectos oincluso, un pro-ecto puede estar compuesto de diversos pro-ectos o ser parte deotro pro-ecto. Pero por el momento, las aplicaciones del curso estar&n limitadas aun solo pro-ecto, salvo se especi(iue lo contrario. ,orm#laro" Ob%eto" Pr&cticamente todos los elementos de los entornos visuales son objetos, ue unasveces se encuentran de(inidos de antemano =los (ormularios, los controles, objetosno visuales, etc>, - otras se de(inen en nuestra propia aplicación. 

  • 8/16/2019 Introduc Al Delphi

    9/46

    datos provenientes de una )oja de c&lculo o una base de datos.

    La propia programación visual de algunos entornos de desarrollo, )acen posibleutili%ar objetos de (orma pr&ctica sin tener por u4 comprender al cien por cien su(uncionamiento.

     Controle" *n control es cualuiera de los elementos ue podemos insertar en un (ormulario,tanto si su (unción es visual como si no lo es =obviamente un control es tambi4n unobjeto>. *n ejemplo de control puede ser uno e+clusivamente para dibujar gr&(icas.'in conocer e+actamente el cómo reali%a su (unción, el programador manipula unaserie de propiedades, m4todos - eventos ue caracteri%an al control, a trav4s delos cuales se 0maneja0 el control en la (orma deseada. Por supuesto el usuariopuede crear sus propios controles - usarlos en distintas aplicaciones, de (ormaue la reusabilidad del código es m&+ima. $ los controles ue cuentan con unaparte visual, como puede ser un botón, se les denomina controles. Propedade" Los controles en la ma-ora de los casos son de uso general, por lo ue a la )orade usarlos de alguna (orma se deben de adecuar a las necesidades del programa.Para ello se )ace uso de las propiedades de cada objeto, mediante las cualespodremos establecer el ttulo de una ventana, el tipo de letra de una etiueta dete+to o el color en el ue aparecen los distintos controles.

    'e puede pensar en las propiedades como si (uesen variables pertenecientes a unobjeto =aunue no necesariamente es as>, de tal (orma ue para acceder a ellasgeneralmente )abr& ue indicar no sólo el nombre de la propiedad, sino tambi4n au4 objeto pertenece.

    La modi(icación o consulta del valor de una propiedad puede di(erir segúnintentemos acceder a ella mientras estamos dise/ando un (ormulario, en tiempode dise/o, o bien mediante el código del programa, en tiempo de ejecución.!iertas propiedades est&n sólo accesibles en tiempo de ejecución, por lo uemientras estamos dise/ando la (ic)a no aparecer&n. $dem&s )a- algunaspropiedades ue son de sólo lectura, por lo ue su valor puede ser consultado,pero no modi(icado, - otras ue son sólo de escritura.

     $unue a primera vista si se usa un control pre(abricado, las propiedades puedenparecer simples variables, en la ma-ora de las ocasiones una propiedad no esuna variable, - la modi(icación o consulta de su valor puede conllevar ueinternamente el componente ejecute un cierto código. 'i por ejemplo se tuviese uncontrol para comunicaciones serie ue se encargase de enviar mensajes a unordenador remoto, se podra tal ve% asignar una cadena de caracteres a una)ipot4tica propiedad 0Envia0. De esta (orma, con una simple asignación=Envia:MIensaje a mandarM> se pondra en marc)a todo el mecanismo implcito en

  • 8/16/2019 Introduc Al Delphi

    10/46

    el componente para enviar el mensaje al ordenador remoto. Esta propiedad podraser un ejemplo de propiedad de sólo escritura, -a ue sólo interesa mandar elmensaje al ordenador remoto, sin conservar in(ormación acerca del mensaje, por lo ue sera inapropiada su lectura.

    E$ento" !omo se )a descrito anteriormente, la programación en el entorno indo;s secaracteri%a por estar dirigida por eventos, de tal (orma ue un programa no tienepor u4 ejecutarse necesariamente de (orma secuencial, sino ue ciertasporciones de código se ejecutar&n cuando ocurra un cierto evento.

    Los eventos son se/ales ue el entorno recibe desde distintos elementos, comopuedan ser el ratón, el teclado o un tempori%ador. Estos eventos son redirigidos alas aplicaciones, ue en caso de aceptarlos deber&n responder adecuadamentede ellos. !iertos eventos pueden ser gestionados por el propio indo;s, otrosuedar&n a cargo del propio lenguaje ue se est4 usando, - un tercer grupo ser&nlos ue lleguen )asta el programa. En los entornos visuales, pr&cticamente todo elcódigo ue se escribe ir& asociado a algún evento. 'i se retoma el ejemplo delcomponente para comunicaciones serie, podra interesar ue se ejecutara unevento cada ve% ue se recibiese un car&cter por el puerto serie, de (orma uepodramos escribir el código necesario para guardar el car&cter en un arc)ivo cadave% ue se produjese el evento. Hormalmente los eventos a los ue reaccionar&nlos componentes ser&n las pulsaciones del teclado o el ratón, activaciones de loscomponentes, etc.

    M-todo" Los componentes visuales adem&s de disponer de propiedades - poder responder a ciertos eventos, )abitualmente tambi4n disponen de m4todos. *n m4todo es unprocedimiento o (unción ue nos permite reali%ar una determinada acción en elcomponente, pudiendo necesitar o no el paso de algún par&metro.

     $l igual ue ocurre en las propiedades, al momento de usar un cierto m4todonormalmente se tiene ue indicar primero el objeto o componente al uepertenece, de tal (orma ue la acción del m4todo recaiga sobre 4l, - no sobrecualuier otro. El )ec)o de ue cada objeto sea propietario de una serie depropiedades - m4todos, variables - código, ue no son accesibles a ningún otroobjeto e+terno, recibe el nombre de encapsulación, aunue tambi4n es posiblede(inirlos de tal modo ue sean accesibles a otros objetos.

  • 8/16/2019 Introduc Al Delphi

    11/46

    Ident!adore"

     $dem&s de variables, se utili%an dent!adore" para nombres de procedimientos, de funciones,campos en registros, nombres de unidades, - m&s. Los identi(icadores pueden me%clar letrasma-úsculas - minúsculas e incluir números - el car&cter de guión bajo = N >, pero no puedencontener espacios u otros caracteres especiales, tales como O 0 Q R S F T , etc. Losidenti(icadores deben comen%ar con un car&cter. Ho )a- una longitud m&+ima permisible para4stos, aunue se ignora todo lo ue rebase los 2"" caracteres. En realidad, de manera pr&ctica,todo lo ue e+ceda unos 27 caracteres es demasiado largo para ser útil. Los siguientes sonejemplos de nombres de variables:

    UnaVariableconNombreMuyLargo : integer;

      { un nombre largo de variable entera }

    mi_variable : integer; { una variable con guiones bajos }

    x : real; { nombre de variable real de un solocarácter }

    Y : real; { igual que el anterior }

    Label2 : string; { un nombre de variable que contieneuna cadena de caracteres }

    Los siguientes son ejemplos de cómo HB de(inir identi(icadores

    MiFunción Senoua!ra!o { Tiene un espacio en blanco }

    "_#ntento { Comienza con un número }

    Salario$ { Contiene un carácter no válido en el nombre }

    %&o { Igual que el anterior }

  • 8/16/2019 Introduc Al Delphi

    12/46

    'Mx (elta { Comienza con números y contiene espacios enblanco }

    Nota  $unue Bbject Pascal no es sensible al uso de ma-úsculas, debe es(or%arse parautili%ar las ma-úsculas de manera consistente en sus programas. El uso apropiado delas ma-úsculas (acilita la lectura del programa - le a)orrar& m&s de un dolor de cabe%asi alguna ve% necesita portar su aplicación a otros lenguajes de programación m&s

    adelante =por ejemplo, portar un programa Deip)i a !UUuilder>.

     

    Palabras 9eservadas

     $ di(erencia de los identi(icadores, las palabras reservadas son identi(icadores ue representaninstrucciones, etiuetas, operadores, (unciones o procedimientos propios del lenguaje. La siguientetabla muestra un peue/o conjunto de estas palabras reservadas:

     ABSOLUTE AND ARRAY ASM ASSEMBLER 

    BEGIN BOOLEAN BYTE CASE CHAR  

    COMP CONST CONSTRUCTOR DESTRUCTOR DIV  

    DO DOUBLE DOWNTO ELSE END

    EXPORT EXPORTS EXTENDED EXTERNAL FAR  

    FILE FOR FORWARD FUNCTION GOTO

    IF IMPLEMENTATION IN INDEX INHERITED

    INLINE INTEGER INTERFACE INTERRUPT LABEL

    LIBRARY LONGINT MOD NAME NEAR  

     NIL NOT OBJECT OF OR 

    PACKED POINTER PRIVATE PROCEDURE PROGRAM 

    PUBLIC REAL RECORD REPEAT RESIDENT

    SET SHL SHORTINT SHR SINGLE

    STRING THEN TO TYPE UNIT

    UNTIL USES VAR VIRTUAL WHILE

     WITH WORD XOR   

    Ninguna de estas palabras reservadas puede ser usada como identificador, ya que cada una

    de ellas tiene predefinida su función.

    Tpo" de dato" de Ob%e!t Pa"!alEn Bbject Pascal, un tpo de dato" define la forma en que el compilador almacena información enla memoria. En algunos lenguajes de programación, se puede asignar cualuier tipo de valor a unavariable. Por ejemplo, observe los siguientes ejemplos de código isual asic:

    X = -1.0 ) *eal negativo

    X = -1 ) +ntero negativo

  • 8/16/2019 Introduc Al Delphi

    13/46

    X = 1000 ) +ntero ,ositivo

    X = 3.14 ) *eal ,ositivo

    En $'A!, el int4rprete se encarga de asignar su(iciente espacio de almacenamiento paraajustarse a cualuier tama/o o tipo de número.

    De!lara!ón de #na $arable

    En Bbject Pascal debe declarar el tipo de variable antes de poder utili%arla:

    var

      -" : Integer;

      - : Integer;

      Y : Dou!e;

      . : B"te;

     

    /// y m0s a!elante

     

    -" :1 ";

      - :1 "333;

      Y :1 '/"4;

      . :1 25;

    Esto le permite al compilador e(ectuar una veri(icación de tipo - asegurarse de ue las cosas est4nen orden al ejecutarse el programa. El uso inadecuado de un tipo de datos dar& como resultado unerror o advertencia del compilador ue puede anali%arse - corregirse de modo ue pueda prevenir un problema antes de ue empiece.

     $lgunos tipos de datos tienen signo - otros no. *n tpo de dato" !on "gno  puede contener números tanto positivos como negativos, mientras ue un tpo de dato" "n "gno sólo puedecontener números positivos. La

  • 8/16/2019 Introduc Al Delphi

    14/46

    C#$r " 7 a 2"" =igual ue -te>

     W%&eC#$r 2 7 a #","3" =igual ue ord>

    S'$!!Int 2 832,V#G a 32,V#V

     Wor&  2 7 a #","3"

    LongInt 4 82,1V,G3,#G a2,1V,G3,#V

    Int() 6 8C,223,3V2,73#,G",VV",G7G a C,223,3V2,73#,G",VV",G7V

    Integer 4 Agual ue LongAnt

    C$r&%n$! 4 7 a 2,1V,G3,#V

    S%ng!e 4 1." J 178" a 3. J 173G

    Dou!e 6 ".7 J 17832 a 1.V J 1737G

    Re$! 6 ". 7 J l7832 a 1.V J 1737G =igual ue Double>

    E*ten&e&  "3 3. + 178C32 a 1.1 J 17C32

    Co'+ 6 8C,223,3V2,73#,G",VV",G7G a C,223,3V2,73#,G",VV",G7V

    Curren," 6 8C22,33V,273,#G",VV."G7G a C22,33V,273,#G",VV."G7V

    Boo!e$n "

  • 8/16/2019 Introduc Al Delphi

    15/46

    Nota El tipo de datos Int() es nuevo en Delp)i. 6a- muc)as ra%ones para la e+istencia deun tipo de enteros de este tama/o. *na de las m&s importantes es la necesidad de unvalor entero ue pueda contener los grandes valores ue los discos duros actualesreuieren. Por ejemplo, indo;s contiene una (unción llamada  GetDiskFreeSpaceEX, lacual puede devolver valores ma-ores a 2,1V,G3,#V =el valor m&+imo de unInteger). *n tipo de datos entero de # bits era necesario por ra%ones como 4sta.

    Nota Los tipos de datos S%ng!e, Dou!e, E*ten&e&   - Curren,"  utili%an números depunto (lotante =números con posiciones decimales>. Los dem&s tipos de datos sóloutili%an valores enteros. Ho es posible asignar un valor ue contenga una (raccióndecimal a un tipo de datos entero. Por ejemplo, el siguiente código generar& un error del compilador:

    -$r

    X / Integer0

    I&s adelante ...

    - :1 '/58;

    9ealmente no necesita preocuparse muc)o por esto, debido a ue el compilador esmu- bueno al decirle u4 puede )acer - u4 no. 

    Con$er"ón entre tpo" de dato"

    Bbject Pascal reali%a, cuando es posible, la conversión entre di(erentes tipos de datos.

  • 8/16/2019 Introduc Al Delphi

    16/46

    valor de 32,V#V - se le suma 1 Bbtendr& un valor de 832,V#G. Esto es en esencia igual al contador de Wilómetros de un automóvil ue pasa de CC,CCC a 77,777 al conducir ese último Wilómetro. Parailustrarlo, realice los siguientes pasos:

    1. Anicie con una nueva aplicación - coloue una etiueta - un botón sobre el(ormulario.

    2. 6aga doble clic en el botón para crear un controlador de evento para el eventoBn!licW del botón.

    3. Iodi(iue el código del dic)o evento para ue lu%ca como 4ste:

     

     +ro,e&ure orm"/

  • 8/16/2019 Introduc Al Delphi

    17/46

    Este error e in"ica !e est' tratan"o "e asi*nar !n $aor !e no p!e"e a(acenarse en !n

    tipo "e "atos en partic!ar. Otro error "e co(pia"or !e po"r+a $er tiene !e $er con o!e se "eno(ina verificación de rango. Por eje(po, to(e este c%"i*o

    -$r

      - : B"te;

      eg%n

      - :1 "333;en& ;

     

    Este c%"i*o *enerar' !n error "e co(pia"or !e "ice "Constant expression violates

    subrange bounds" . E co(pia"or e in"ica !e est' tratan"o "e asi*nar !n $aor "e 1000 a

    a $ariabe X, a !e X est' "ecara"a co(o "e tipo B"te  !n bte s%o p!e"e contener

    $aores "e 0 a //.

    Nota  $prenda a observar los mensajes, sugerencias - advertencias del compilador cuandoocurran errores. !uando ocurren errores o se emiten advertencias, el compilador trata

    de decirle ue algo no est& bien en su código, - necesita )acer algo respecto a esasadvertencias. En última instancia, debe es(or%arse por tener compilaciones libres deadvertencias. En algunos casos raros no es posible evitar una advertencia, peroasegúrese de e+aminar con detenimiento todas las advertencias. 6aga su mejor es(uer%o por entender la ra%ón de la advertencia - de ser posible corrjala.

     

    La" #ndade" de Pa"!al

  • 8/16/2019 Introduc Al Delphi

    18/46

    Programar es algo m&s ue sólo introducir código. Es, en última instancia, la combinación deconceptuar una tarea de programación - despu4s escribir el código para llevarla a cabo. El códigoue usted escribe simplemente va a un arc)ivo de te+to. El compilador toma ese arc)ivo - locompila en código de m&uina ue la computadora puede entender. El arc)ivo de te+to ue Delp)icompila en código de m&uina se denomina unidad.

    *na #ndad es un arc)ivo de te+to ue puede compilarse a un módulo de código.

    Tpo" de #ndade"

    *na aplicación GUI =Interfaz r!fica de "suario, por sus siglas en ingl4s> de Delp)i contendr& por lo menos dos unidades. La unidad (uente del pro-ecto contiene el código (uente del mismo. Estasunidades tienen la e+tensión DP9. Puede ver la unidad (uente del pro-ecto seleccionando Project #$ie% # &ource. Hormalmente no es necesario modi(icar la unidad (uente del pro-ecto. De )ec)o, nodebe modi(icarla a menos de ue sepa e+actamente lo ue est& )aciendo. 'i la modi(ica en (ormaaccidental, podra descubrir ue su aplicación -a no compila. =!iertas t4cnicas de programaciónavan%ada reuieren modi(icaciones al código (uente del pro-ecto, pero eso es algo de lo ue notiene ue preocuparse por el momento.>

    El segundo tipo de unidad ue siempre tiene una aplicación @*A de Delp)i es la unidad del(ormulario principal. *na unidad de (ormulario, como su nombre implica, es una unidad de código(uente con un (ormulario asociado. Este tipo de unidad tiene una e+tensión de nombre de arc)ivoPAS. Xste es el tipo de unidad ue usar& con m&s (recuencia en sus programas Delp)i. *naaplicación @*A de Delp)i siempre tendr& una unidad de (ormulario =para el (ormulario principal>,pero tambi4n puede tener una o m&s unidades de (ormulario adicionales. Por ejemplo, unaaplicación ue despliega un cuadro $bout =$cerca de>, tendr& la unidad del (ormulario principal -una unidad para el cuadro $bout.

     

    Nota 6abr& notado ue se sigue diciendo 0apl!a!ón GUI de Delp)iM. Esto se debe a ue se uiere distinguir entre

    una aplicación @*A - una aplicación de consola. *na apl!a!ón de modo !on"ola es una aplicación dindo;s de 32 bits ue se ejecuta en una ventana de consola =cuadro de DB'>. *na aplicación de consolano tiene (ormulario principal - podra o no contener otros (ormularios. 'in embargo, una aplicación de consols tiene una o m&s unidades.

     

    6a- un tercer tipo de unidad ue puede emplear en aplicaciones Delp)i. Xsta es una unidad uesólo contiene código (uente. *na unidad de sólo código contiene código ue se llama desde otrasunidades en el pro-ecto.

    Anatom)a de #na #ndad de Delp1

    Las unidades de Delp)i deben seguir un (ormato prede(inido. Esto no debe sorprenderle. La unidadtiene ue estar en un (ormato prede(inido a (in de ue el compilador pueda leerla - compilar elcódigo de la misma.

    *na unidad de pro-ecto Delp)i contiene la palabra clave +rogr$' , seguida por el nombre de launidad - un bloue de código marcado por las palabras clave eg%n - en& . Puede ver cómo luceuna unidad b&sica seleccionando Project Y ie; 'ource. La unidad (uente de pro-ecto para unpro-ecto Delp)i predeterminado luce como en el Listado 1.

  • 8/16/2019 Introduc Al Delphi

    19/46

     

    Nota Los números de lnea del Listado 1 no (orman parte de la unidad en s. 'e pusieronsólo para re(erencia. $lgunos de los listados ue ver& en estos apuntes tendr&nnúmeros de lnea para re(erencia - otros no. !omo sea, tenga en cuenta ue ellenguaje Pascal no utili%a números de lnea como )acen otros lenguajes =el m&s

    notable, $'A! est&ndar>.

    L"tado /.0 El !ódgo #ente para #n pro2e!to Delp1 predetermnado

    3":  +rogr$'  MiCrimer%,;

    32:  

    3': U1e1

    34:   FormsD

    38:   Crimero in )Crimero/,as) EForm";

    37:  35: E$* 9/*+S

    36:  

    3G:  eg%n

    "3:   %,,lication/#nitialiHe;

    "":   %,,lication/reateForm>Form"D Form"A;

    "2:   %,,lication/*un;

    "': en&2

     

    En la lnea 1 la palabra clave +rogr$'  identi(ica a esta unidad como la unidad (uente principal delprograma. Puede ver ue el nombre de la unidad, MiCrimer%,, sigue a la palabra clave +rogr$' =Delp)i asigna al pro-ecto un nombre predeterminado )asta ue usted guarde el pro-ecto con unnombre m&s signi(icativo>. $ partir de la lnea 3 se ve una sección identi(icada por la palabra claveu1e1. .

    La lnea C contiene la palabra clave eg%n, - la lnea 13 la palabra clave en& . Hote ue la palabraclave en&  en la unidad est& seguida de un punto. =*na unidad puede tener muc)os bloues decódigo delimitados con eg%n - en& , pero sólo una instrucción en&  (inal.> El código de las lneas17, 11 - 12 es el ue iniciali%a la aplicación, crea el (ormulario principal de la aplicación e inicia laejecución de 4sta. Para escribir programas en Delp)i no es necesario ue se preocupe por losdetalles de este código.

  • 8/16/2019 Introduc Al Delphi

    20/46

    Nota Las palabras clave eg%n  - en&  marcan un bloue de código. *n bloue de códigopuede contener sólo unas cuantas lneas, o puede contener cientos o incluso miles delneas de código.

     

    eamos otra unidad b&sica de Pascal. Elija Kile Y He;. !uando apare%ca el cuadro de di&logo He;Atems, localice el icono con el nombre un%t - )aga doble clic en 4l. Delp)i crear& una nuevaunidad - la desplegar& en el editor de código. El Listado 2 muestra el código generado para estaunidad.

     

    L"tado 3.0 Una #ndad Pa"!al $a!)a

    34/ Un%t Un%t50

    35/  

    36/ Inter7$,e

    3)/  

    38/ I'+!e'ent$t%on

    3(/  

    39/ en&2

     

    Esta unidad tiene dos cosas en común con la unidad mostrada en el Listado 1. Primero, 4stacomien%a con la palabra clave un%t  seguida por el nombre de unidad *nit2 =un nombre

    predeterminado creado por Delp)i>. $unue el código del Listado 1 comien%a con la palabra clave +rogr$'   - ue el código anterior inicia con la palabra clave un%t, )a- algunos elementos en

    común: una unidad Pascal comien%a con una de estas dos palabras seguidas del nombre de launidad, - al (inal de ambos listados aparece la palabra clave en& . $u, otra ve%, la palabra claveen&  est& seguida de un punto para se/alar el (inal de la unidad.

    El código del Listado 2 di(iere del código del Listado 1 en ue tiene secciones marcadas como%nter7$,e e %'+!e'ent$t%on. *na unidad ue no es la unidad (uente principal del programadebe contener una sección %nter7$,e - una %'+!e'ent$t%on. Estas dos Palabras clave sedescribir&n con m&s detalle en las secciones tituladas 0La sección %nter7$,e0 - 0La sección%'+!e'ent$t%on0, respectivamente. El Listado 2 tambi4n di(iere del Listado 1 en ue no )a-instrucción eg%n. La unidad principal de un programa debe tener tanto las instrucciones eg%n

    como en& , pero una unidad (uente sólo debe contener una instrucción en&  (inal.

    Las siguientes secciones describen palabras clave ue se emplean dentro de una unidad Pascal.

    La l"ta u1e1

    La lista u1e1 es una lista de unidades e+ternas a las ue )ace re(erencia esta unidad.

  • 8/16/2019 Introduc Al Delphi

    21/46

    Bbserve el Listado 1. Hote la palabra clave u1e1 en la lnea 3. Xsta indica el inicio de una secciónue contendr& una lista de otras unidades de las ue depende esta unidad. Por ejemplo, la lnea 11del Listado 1 se ve como sigue:

    %,,lication/reateForm>Form"D Form"A;

    Esta lnea de código contiene in(ormación ue se locali%a en otras unidades - no puedeencontrarse en esta unidad. El procedimiento identi(icado por %,,lication/reateForm  seubica en una unidad de Delp)i de nombre Korms.pas, - los identi(icadores orm"  - Form"  selocali%an en la unidad del (ormulario principal del pro-ecto, la cual se llama Primero.pas. La listauses  le indica a Delp)i dónde buscar in(ormación adicional ue reuerir& para compilar estaunidad. $u tenemos otra visión de la lista uses:

    u1e1

      FormsD

      Crimero in )Crimero/,as) EForm";

    Hote ue la lista uses contiene dos nombres de unidades, Korms - Primero. En cierto modo 4steno es un buen ejemplo de una lista uses -a ue la segunda unidad listada contiene te+to adicionalue por lo regular no se encuentra en una lista uses =Crimero in )Crimero/,as) EForm">.

    Este te+to se emplea para especi(icar un (ormulario ue est& contenido en una unidad - ue sóloser& utili%ado por la unidad (uente principal del pro-ecto. =El te+to entre llaves es un comentarioutili%ado como re(erencia - no tiene relación con el resto del código. Los comentarios se discutenm&s adelante en la sección 0!omentarios en el código0>.

    6a- dos reglas ue necesita tener presentes al construir la lista uses:

    Primera, cada unidad de la lista debe estar separada de la siguiente por medio de una coma.

    'egunda, despu4s de la última unidad listada debe seguir un punto - coma. El punto - comase/ala el (inal de la lista uses.

    Haturalmente, la lista debe contener nombres de unidad v&lidos. Entonces, la lista uses  est&indicada por la palabra clave uses - termina con un punto - coma. Kuera de eso, no importa cómoest4 organi%ada dic)a lista. Por ejemplo, por lo ue toca al compilador, las siguientes dos listasuses son id4nticas:

    u1e1

    Iin!oJsD MessagesD SysUtilsD lassesD Kra,csD ontrolsD FormsD (ialogsD

    St!trls;

    u1e1

    Iin!oJsD

    MessagesD

    sysutilsD

  • 8/16/2019 Introduc Al Delphi

    22/46

    lassesD

    Kra,icsD

    ontrolsD

    FormsD

    (ialogsD

    St!trls;

    *na unidad puede tener cualuier número de listas uses. Ho es necesario ue todas las unidadesue esta unidad necesite est4n en una sola lista uses.

    Nota En ciertos casos, Delp)i agregar& por usted unidades a su lista uses. Esto se )ace atrav4s del elemento de menú Kile Y *se *nit.

     

    La "e!!ón %nter7$,e

    Bbserve de nuevo el Listado 2. Hote ue tiene una sección marcada con la palabra clave%nter7$,e. Esta palabra clave marca el inicio de la sección de inter(a% de la unidad.

    La sección %nter7$,e es la sección de una unidad en la ue se declaran los dent!adore"e+portados desde esta unidad. *n dent!ador e4portado es au4l ue puede ser accedido por otras unidades del pro-ecto.

    La ma-ora de las unidades contendr&n código ue otras unidades utili%an. El código podraimplementarse como una clase, un procedimiento, una (unción o una variable de datos.

  • 8/16/2019 Introduc Al Delphi

    23/46

    pro-ecto. En ese caso declarara el procedimiento ace%lgo en la sección %nter7$,e - despu4slo de(inira en la sección %'+!e'ent$t%on. La unidad completa lucira como la del Listado 3.

    L"tado 5.0 Una #ndad !on #na #n!ón p6bl!a.

    un%t Unit2;

     

    Inter7$,e

       +ro,e&ure ace%lgo;

     

    I'+!e'ent$t%on

     

     +ro,e&ure ace%lgo;

       eg%n

      ///

      E%Ou va el có!igo !e ace%lgo/

    ///

      en& ;

     

    en& /

    Hote ue el procedimiento ace%lgo  se declaró en la sección interace  - se de(inió m&s

    adelante en la sección %'+!e'ent$t%on. $u se est& adelantando un poco. Las (unciones -procedimientos se e+pondr&n en otra sección - ser& entonces cuando se abord4 en detalle lasdeclaraciones - de(iniciones.

    La" "e!!one" %n%t%$!%:$t%on 2 7%n$!%:$t%on

    Las secciones %n%t%$!%:$t%on  - 7%n$!%:$t%on se pueden emplear para reali%ar cualuier código de inicio - de limpie%a ue reuiera una unidad.

  • 8/16/2019 Introduc Al Delphi

    24/46

    *na unidad puede contener de manera opcional una o m&s secciones ,on1t. La sección ,on1tse designa con la palabra clave ,on1t. Dic)a sección describe una lista de variables ue seconocen como !on"tante".

    *na constante es un identi(icador ue no cambia. Por ejemplo, digamos ue tiene ciertos valoresue su programa utili%a una - otra ve%. Puede asignar variables constantes para dic)os valores.

    Para ilustrarlo, agreguemos una sección ,on1t al programa del Listado 3. $gregar& una sección,on1t  para las constantes ue son públicas =disponibles para otras unidades> - otra sección,on1t para las constantes ue sólo est&n disponibles para esta unidad. El Listado muestra launidad con las dos secciones ,on1t incorporadas.

    L"tado 7.0 La #ndad !on "e!!one" ,on1t n!orporada".

    un%t Unit2;

     

    Inter7$,e

     

    ,on1t

      %,,a,tion 1 )Mi Crimer Crograma v/ "/3);

     

    ,roce!ure ace%lgo;

     

    I'+!e'ent$t%on

     

     +ro,e&ure ace%lgo;

     

    ,on1t

     

  • 8/16/2019 Introduc Al Delphi

    25/46

     

    Debido a ue la constante %,,a,tion est& declarada en la sección %nter7$,e, se puedeutili%ar en cualuier parte de la unidad - en cualuier unidad ue 4sta tenga en su lista uses. 'inembargo, las constantes

  • 8/16/2019 Introduc Al Delphi

    26/46

     $)ora puede utili%ar el identi(icador . 6a- varios lugares en los ue puede declarar unasección -$r. Puede tener una sección -$r  a nivel de la unidad, puede tener una para unprocedimiento o (unción, o ambos. Ancluso puede tener varias secciones -$r en una unidad. Ellistado 1." muestra la unidad de ejemplo con las secciones t"+e - -$r incorporadas.

     

    L"tado 8.0 La #ndad !on la" "e!!one" t2pe 2 $ar n!orporada".

    un%t Unit2;

     Inter7$,e

     

    t"+e

      Mi%rray 1 $rr$" P3//"GQ o7 B"te;

     

    ,on1t

      %,,a,tion 1 )Mi Crimer Crograma v/ "/3);

     -$r

      - : Integer;

      Mi%rrayD Mi?tro%rray : i,oMi%rray;

     

     +ro,e&ure ace%lgo;

     

    I'+!e'ent$t%on

      +ro,e&ure ace%lgo;

     

    ,on1t

     

  • 8/16/2019 Introduc Al Delphi

    27/46

     

     eg%n

      ///

      E%Ou va el có!igo !e ace%lgo/

    ///

      en& ;

     

    en& /

     

     $l igual ue con la palabra clave ,on1t, -$r  tiene m&s de un uso.

  • 8/16/2019 Introduc Al Delphi

    28/46

     

    Probablemente el tipo m&s común de comentario utili%ado en Delp)i utilice llaves, como se ilustraen el segundo caso. Para iniciar el comentario se emplea una llave de apertura - para terminarlouna llave de cierre E / Btro tipo de comentario utili%a >9 para iniciarlo - 9A para concluirlo.E+iste una di(erencia entre los comentarios indicados en esta (orma - el empleo de llaves: los

    comentarios del par >9 9A pueden emplearse para comentar grandes secciones de código uecontengan otras lneas de comentarios. Estos dos tipos de comentarios pueden utili%arse paracomentar una o varias lneas de código.

    Nota En Pascal, las llaves tienen otro uso. !uando se emplean junto con un signo demoneda =Q>, signi(ican una dre!t$a del !omplador . Para indicarle al compilador ueno genere sugerencias de compilación, puede colocar una lnea como 4sta en sucódigo (uente:

    ;

  • 8/16/2019 Introduc Al Delphi

    29/46

    La" $arable" tenen 9#e de!larar"e ante" de 9#e p#edan "er #tl:ada". *na variable sedeclara, como antes se describió, en una sección especial de código indicada con la palabra clave$ar , por ejemplo,

    -$r

     - : Integer; { variable X declarada como una variable

    entera }

      Y : Integer; { variable Y declarada como una variableentera }

     

     $ntes se e+puso a la palabra clave -$r en t4rminos de una unidad de Pascal. 'e dijo ue lasvariables utili%adas en la unidad se declaran en la sección $ar  de la misma. Esto es cierto, perotambi4n puede tener una sección -$r en una (unción o procedimiento. Esto le permite declarar variables en (unciones - procedimientos, as como en unidades. El siguiente es un ejemplo de unasección -$r en un procedimiento:

     +ro,e&ure N*Main/+@ecutalic=>Sen!er: ?b@ectA;

     

    -$r

      -n_"D -nD !elta-DCrecision

    : re$!;

      # : %nteger;

     

     eg%n

      ///

      { qu! va más c"digo }

    ///

      en& ;

     

    en& /

     

    Despu4s de declarar una variable, puede utili%arla para manipular datos en la memoria. ui%&sesto no tenga muc)o sentido para usted, as ue se dar&n algunos ejemplos. Los siguientes(ragmentos de código emplean las variables de nombre J - 5 antes declaradas. $l (inal de cadalnea de código )a- un comentario ue describe lo ue sucede cuando se ejecuta la lnea:

    - :1 "33; { #X# a$ora contiene el valor %&& }

    - :1 - B 83; { #X# a$ora contiene el valor %'& }

  • 8/16/2019 Introduc Al Delphi

    30/46

    Y :1 "83; { #Y# a$ora contiene el valor %'& }

    - :1 - B Y; { #X# a$ora contiene el valor (&& }

     

    *na $arable  es una ubicación que se aparta en la memoria de la computadora para contener alg)n valor .

     

    Hote varias cosas respecto a este código. Primero, note ue el valor de J cambia al manipularse lavariable. =*n poco m&s adelante se e+pondr&n los operadores, (unciones - procedimientos deBbject Pascal ue se emplean para manipular variables>. Puede ver ue se asignan valores a lasvariables, se suman, se incrementan, etc4tera.

     

    Hote adem&s ue cada instrucción en este segmento de código termina con un punto - coma = ; >.El p#nto 2 !oma "e #"a al nal de toda n"tr#!!ón de #n programa Pa"!al.

    Nota Iu- pronto en el proceso de aprendi%aje del lenguaje Pascal, el programador debeaprender la di(erencia entre una e4pre"ón - una n"tr#!!ón. La de(inición o(icial den"tr#!!ón  es una e'presión seguida de un punto y coma. *na e4pre"ón  es unaunidad de código que se eval)a a una cierta cantidad .

    'i esto produce con(usión, considere la siguiente instrucción:

     c :1 a B b;

     

    En este ejemplo la porción a la derec)a del operador de asignación, a U b, es una e+presión. Lalnea completa es una instrucción. Podra decirse ue una e+presión es un subconjunto de unainstrucción. "na sola instrucción puede estar conformada por varias e'presiones. *os nombres devariables siguen las reglas descritas para los dent!adore".

    Con"tante"

    !omo se e+puso con anterioridad, una !on"tante es un identificador asignado a un valor que nocambia. Los t4rminos 0variable0 - 0constante0 no se eligieron al a%ar. El programador puedemodi(icar un valor de variable? un valor de constante no puede cambiarse. Las constantes sedeclaran utili%ando la palabra clave ,on1t. Para declarar una constante, simplemente liste elnombre de la constante - su valor, por ejemplo:

    ,on1t

  • 8/16/2019 Introduc Al Delphi

    31/46

      %nco,or(eecto 1 433;

      %lto,or(eecto 1 233;

      (escri,cion 1 ) Mensa@e !el ,rograma!or/);

    Hote ue al declarar una constante, se utili%a el signo de igual - no el operador de asignación =:1>.Hote adem&s ue no se especi(ica un tipo de datos. El compilador determina el tipo de datos de laconstante con base en el valor ue se le est& asignando. Las constantes pueden emplearse en sucódigo en donde normalmente tendra un valor literal.

    El uso sensato de constantes (acilita la modi(icación posterior del comportamiento de un programa,en caso necesario. Para modi(icar el comportamiento de un programa, sólo es necesario cambiar elvalor de una o m&s constantes en la parte superior de la unidad, en ve% de rastrear a lo largo de launidad todas las ocurrencias del valor - cambiarlas por otro.

     

    Operadore" de Ob%e!t Pa"!alLos operadore" se utili%an para manipular datos. Los operadores reali%an c&lculos, veri(ican laigualdad, )acen asignaciones, manipulan variables - reali%an otras labores m&s esot4ricas ue laina-ora de los programadores nunca emplea. 6a- muc)os operadores en Bbject Pascal. En ve%de presentarlos todos au, sólo listar4 los de uso m&s común. La x 1 "A an! >y 1 2A ten

    or B9 Lógico i >x 1 "A or >y 1 2A ten

    Operadore" de g#aldad

  • 8/16/2019 Introduc Al Delphi

    32/46

    1 Agual a i >x 1 "3A ten

    W Di(erente de i >x W "3A ten

    Ienor ue i >x "3A ten

    W Ia-or ue i >x W "3A ten

    1 Ienor ue o igual a i >x 1 "3A ten ///

    W1 Ia-or ue o igual a i >x W1 "3A ten ///

    Operadore" #naro"

    X Bperador de apuntador Mi?b@eto/(ataX;

    Dirección de operador ,tr :1 Mi*egistro;

    an!  $HD a nivel de bits x :1 x an! $32;

    or B9 a nivel de bits x :1 x or $FF;

    not HB< a nivel de bits x :1 x an! not $32;

    not HB< lógico i not Vali!o ten ///

    Operadore" d$er"o"

    $ Bperador de valor )e+adecimal - :1$FF;

    P Q Bperador de subndice de arreglo - :1 Mi%rrayP8"Q;

    / Bperador de membresa =punto> - :1 *ecor!/(ata;

    !omo puede ver, la lista de operadores es un tanto abrumadora. Ho se preocupe por tratar de

    memori%ar cada uno. $l trabajar con Bbject Pascal, aprender& en (orma gradual cómo emplear todos los operadores. $lgunos, si acaso, se utili%an rara ve% - otros los utili%ar& todo el tiempo.

    Hotar& ue las palabras clave $n& , or - not se emplean en dos conte+tos: lógico - a nivel de bits.Por ejemplo, la palabra clave $n&  puede usarse para especi(icar una operación de $HD lógico ouna operación de $HD a nivel de bits. Bbserve este código:

    i >- W 23A ten . :1 -;

    En este ejemplo la palabra clave $n&  se est& usando en dos conte+tos completamente di(erentes.'in duda en un principio puede resultar con(uso. Descanse seguro de ue el compilador sabecómo se est& empleando la palabra clave - )ar& lo correcto. Estamos viendo material avan%adomu- temprano en el libro, as ue no se preocupe si esto no tiene muc)o sentido para usted a)ora.

    Es casi seguro ue m&s adelante tenga m&s sentido del ue a)ora tiene.

     $l avan%ar en el libro ver& muc)os ejemplos de estos operadores. En ve% de tratar de memori%ar la(unción de cada operador, trate de aprender a trav4s del estudio minucioso de los programas demuestra - (ragmentos de código.

     

  • 8/16/2019 Introduc Al Delphi

    33/46

     Alg#na" #n!one" de O=>ECT PASCAL

    %bs 9eturns t)e absolute value o( t)e argument.

    %!!r 9eturns t)e address o( a speci(ied object.

    %rcan 9eturns t)e arctangent o( t)e argument.

    r 9eturns a c)aracter ;it) a speci(ied ordinal number.

    oncat !oncatenates a seuence o( strings.

    o,y 9eturns a substring o( a string.

    os 9eturns t)e cosine o( t)e argument =+ is an angle, in radians>.

    Seg 9eturns t)e current value o( t)e !' register.

     

    (Seg 9eturns t)e current value o( t)e D' register.

    +o 9eturns t)e end8o(8(ile status.

    +oln9eturns t)e end8o(8line status o( a te+t (ile.

    +x, 9eturns t)e e+ponential o( t)e argument.

    FileCos 9eturns t)e current (ile position o( a (ile.

    FileSiHe 9eturns t)e current si%e o( a (ile.

    Frac 9eturns t)e (ractional part o( t)e argument.

    i 9eturns t)e )ig)8order b-te o( t)e argument.

     

    #nt 9eturns t)e Anteger part o( t)e argument.

    #?*esult 9eturns t)e status o( t)e last AFB operation per(ormed.

    Lengt 9eturns t)e d-namic lengt) o( a string.Ln 9eturns t)e natural logarit)m o( t)e argument.

    Lo 9eturns t)e lo;8order -te o( t)e argument.

    Max%vail 9eturns t)e si%e o( t)e largest contiguous (ree blocW in t)e )eap.

    Mem%vail 9eturns t)e amount o( all (ree memor- in t)e )eap.

     

    ?!!

  • 8/16/2019 Introduc Al Delphi

    34/46

    Ctr !onverts a segment base and an o((set address to a pointer8t-pe value.

    *an!om 9eturns a random number.

    *oun! 9ounds a real8t-pe value to an Anteger8t-pe value.

    See=+o 9eturns t)e end8o(8(ile status o( a (ile.

    See=+oln 9eturns t)e end8o(8line status o( a (ile.Seg 9eturns t)e segment o( a speci(ied object.

     

    Sin 9eturns t)e sine o( t)e argument.

    SiHe? 9eturns t)e number o( b-tes occupied b- t)e argument.

    SCtr 9etruns t)e current value o( t)e 'P register.

    SOr 9eturns t)e suare o( t)e argument.

    SOrt 9eturns t)e suare root o( t)e argument.

    SSeg 9eturns t)e current value o( t)e '' register.

    Succ 9eturns t)e successor o( t)e argument.

    SJa, ';aps t)e )ig)8 and lo;8order b-tes o( t)e argument.

     

    runc

  • 8/16/2019 Introduc Al Delphi

    35/46

    Ket(ir 9eturns t)e current director- o( speci(ied drive.

     

    KetMem !reates a d-namic variableo( t)e speci(ied si%e and puts t)e address o( t)e blocW in apointer variable.

    alt 'tops program e+ecution and returns to t)e operating s-stem.

    #nc Ancrements a variable.

    #nsert Anserts a substring into a string.

    M=(ir !reates a subdirector-.

    Move !opies b-tes (rom source to dest.

    NeJ !reates a ne; d-namic variable and sets a pointer variable to point to it.

     

    *an!omiHe Anitiali%es t)e built8in random number generator ;it) a random value =obtained (romt)e s-stem clocW>.

    *ea! Kor t-ped (iles, reads a (ile component into a variable. Kor te+t (iles, reads one or more values into one or more variables

    *ea!ln E+ecutes t)e 9ead procedure, t)en sWips to t)e ne+t line o( t)e (ile.

    *ename 9enames an e+ternal (ile.

    *eset Bpens an e+isting (ile.

    *eJrite !reates and opens a ne; (ile.

     

    *m(ir 9emoves an empt- subdirector-.

    *un+rror 'tops program e+ecution.

    Scrollo 'crolls t)e !9< ;indo; to s)o; a screen location.See= Ioves t)e current position o( a (ile to a speci(ied component.

    Setext

  • 8/16/2019 Introduc Al Delphi

    36/46

    El Entorno Integrado de De"arrollo ?IDE@

    Esta sección contiene un vista%o r&pido al ADE de Delp)i. Debido a ue se est& abordando laprogramación indo;s, se asume ue el lector tiene conocimientos acerca del uso - manejo deventanas - del ratón de la computadora.

    El ADE de Delp)i se divide en tres partes (undamentales:

    1.8 La $entana "#peror   contiene las barras de)erramientas - la paleta de componentes. Las barras de

    )erramientas o(recen acceso r&pido a tareas tales como abrir,cerrar, guardar - compilar pro-ectos. La paleta de componentescontiene una amplia serie componentes ue est&n a disposicióndel usuario para agregarlos al pro-ecto ue se est4 desarrollando.!ada !omponente  es una pieza binaria de soft%areindependiente, que realiza cierta función específica predefinida. 

  • 8/16/2019 Introduc Al Delphi

    37/46

    2.8 El n"pe!tor de ob%eto" es una ventana ue le muestra al usuario elvalor de las diversas propiedades - eventos ue tiene el componenteue se )alla seleccionado con el ratón. Por de(ecto, si no se tieneseleccionado ningún componente, las propiedades ue se muestran enel inspector de objetos son las del (ormulario ue se encuentra enpantalla.

    *na propedad  determina la manera en ue se comporta uncomponente.

    La solapa de eventos contiene una lista de los posibles eventos uecompeten a un componente seleccionado. Por ejemplo, al )acer clicsobre un componente cuando est& corriendo la aplicación, ocurre unevento denominado OnClick .

    *n e$ento es lo ue ocurre como resultado de la interacción entre uncomponente - el usuario o con indo;s.

    *n !ontrolador de e$ento es una sección de código ue se invoca en

    respuesta a un evento.

     

    3.8 El e"pa!o de traba%o de Delp)i le proporciona al usuario de espacio en pantalla para la

    creación, modi(icación - programación de los elementos de un pro-ecto. Por de(ecto, el espacio detrabajo muestra a sus dos componentes: el dise/ador de (ormularios - al editor de código. Eldise/ador de (ormularios se encarga de proporcionarle al usuario un espacio para la colocación -manejo de los componentes gr&(icos del pro-ecto. Por otra parte, el editor de código se encarga deproporcionarle al usuario de los medios para la programación de los componentes del pro-ecto.

  • 8/16/2019 Introduc Al Delphi

    38/46

     

    E%emplo del U"o de la IDE

    'upóngase ue se va a crear una aplicación sencilla ue escriba en una ventana el mensaje0+ienvenidos a bject Pascal 0, cuando el usuario pulse un botón =al ue se le denominar&0Ejecutar0>.

    !omo primer paso se deber& de abrir Delp)i - autom&ticamente -a se tendr& dispuesto un(ormulario vaco para trabajar.

  • 8/16/2019 Introduc Al Delphi

    39/46

    ,g#ra /.0IDE deDelp1!on #norm#laro$a!)o.

    ue se tiene a disposición el (ormulario, proceda a reali%ar lo: En la ventana del inspector de objetos, localice la propiedaddel (ormulario. En este ejemplo, dic)a propiedad tiene escritonte la cadena de caracteres 0-orm0, como se muestra en la(igura:

    en el espacio disponible la siguiente oración: 0/i primeran en 0elp(i 0.

  • 8/16/2019 Introduc Al Delphi

    40/46

    & notado ue al momento de reali%ar la acción anterior, el(ormulario se ve sustituido por la oración ue se escribió enctor de objetos. $s pues, el (ormulario tendr& la siguientea:

    uación se colocar& el botón ue ejecutar& la acción ue seel (ormulario. Para ello, localice la paleta de componentes enna superior. En dic)a paleta, localice el componente botón -nelo pulsando el botón i%uierdo del ratón. Luego de ello,clic apro+imadamente en el centro del (ormulario, a ciertadel ttulo del (ormulario.

    un poco el tama/o del (ormulario para tener la apariencia de

    ue se tiene en esta p&gina. Para ello, basta con pulsar eluierdo del ratón sobre la esuina in(erior derec)a delo - arrastrar el puntero )asta el tama/o deseado.

    ne con el ratón el botón ue se agregó al (ormulario. Localice

    pector de objetos la propiedad 1aption - c&mbiela escribiendo0 en la casilla disponible. !omo anteriormente se observó, elestra a)ora la palabra 0Ejecutar0.

  • 8/16/2019 Introduc Al Delphi

    41/46

    en, Localice en el inspector de objetos la propiedad 2ame delomo se puede observar, el nombre del componente no se )ado. 'eleccione dic)a propiedad - c&mbiela escribiendo0 en la casilla disponible.

    a locali%ar en la paleta de componentes al componente=!ampo memorando>. 'elecciónelo pulsando el botóndel ratón.

    e lo anterior, )aga un clic apro+imadamente en el centro delo, a cierta distancia debajo del botón ue se insertó

    mente. $juste el tama/o de dic)o componente para ue tengaencia como la de la siguiente (igura.

    en el inspector de objetos la propiedad 2ame  del Iemo.ne dic)a propiedad - c&mbiela escribiendo 09esultado0 en lasponible. De manera an&loga, el cambio )ec)o en la casillae(lejado en el componente memo del (ormulario.

    arar ue a di(erencia del caso del botón =en los cuales unn la propiedad !aption del botón se re(lejó en el (ormulario,en el nombre del componente>, en el caso de los

    ntes memo es un tanto a la inversa. Para ser m&s precisos,ponentes memo ni siuiera tienen la propiedad !aption

    En lugar de ello, los componentes memo tienen unad llamada *ines. Est& (ue la propiedad ue se modi(icó deautom&tica - ue se ve re(lejada en pantalla.

  • 8/16/2019 Introduc Al Delphi

    42/46

    en el inspector de objetos la propiedad *ines del Iemo.caso muestra una cadena 0=0. 'i se pulsa con els veces sobre dic)a casilla, el sistema mostrar& unapara editar dic)o te+to.

    ase ue se uiere agregar m&s te+to a dic)a ventanao. Escriba en el editor de lneas ue se le presenta la (rase: 09esultado de la ejecución del programa0, - pulseBW.

    encia (inal del (ormulario ser& de la siguiente manera:

     Para (inali%ar con el ejemplo, se recuerda ue el ejemplo pide ue se 0 escriba en una ventana el mensaje 3+ienvenidos a bject Pascal3, cuando el usuario pulse un botón 0. Para ello, realice unclic doble con el botón i%uierdo del ratón, sobre el botón 0Ejecutar0. $l )acer esto, deber& aparecer en pantalla el editor de código. El editor de código autom&ticamente agregar& lo necesario para

    ue la aplicación pueda trabajar con indo;s. $ la sa%ón, el editor muestra el siguiente te+to:

     +ro,e&ure Form"/+@ecutarlic=>Sen!er: ?b@ectA;

     eg%n

     

    en&0

     

  • 8/16/2019 Introduc Al Delphi

    43/46

    en&2

     

    Nota  $uellas personas ue -a tienen una (ormación en versiones previas de Pascal para DB', talescomo Sen!er: ?b@ectA;

     eg%n

      *esulta!o/Lines/%!!>). $sgnele un nombre ue sea cómodo - (&cil para recordar =0/iPrimerAp0 sera algo conveniente>.

    *na ve% grabado el trabajo, -a sólo ueda )acer correr la aplicación. Para ello, localice en laventana superior el botón de ejecución =4un>

    ... - )aga clic sobre 4l

    En este momento aparecer& en pantalla el (ormulario, con la única di(erencia de ue a)ora se est&

    ejecutando la aplicación. Pulse el botón 0Ejecutar0 - observe el resultado de dic)a operación:

     

  • 8/16/2019 Introduc Al Delphi

    44/46

    Ante" de p#l"ar el botón De"p#-" de p#l"arlo

    ,g#ra 3.0 La apl!a!ón nal del e%emplo

    Para (inali%ar, v4ase la totalidad del código ue tanto usted como Delp)i )an generado para )acer correr la aplicación. Esto se logra invocando al e4plorador de !ódgo. Para ello localice en laventana superior la opción del menú *e B Code E4plorer . El e+plorador de código mostrar& algosimilar a lo siguiente:

     

  • 8/16/2019 Introduc Al Delphi

    45/46

    5.0 El e4plorador de !ódgo4plorer@

    El editor de código es mu- similar al e+plorador de indo;s. Para ver una parte espec(ica delcódigo, basta con pulsar dos veces sobre los elementos de la ventana i%uierda del editor decódigo. Por ejemplo, al )acer doble clic sobre el elemento FormA

      +@ecutar: Sen!er: ?b@ectA;

      Pr%-$te

      E Crivate !eclarations

      Pu!%,

  • 8/16/2019 Introduc Al Delphi

    46/46

      E Cublic !eclarations

      en& ;

    -$r

      Form": Form";

    I'+!e'ent$t%on

    E$* 9/(FM

     

     +ro,e&ure Form"/+@ecutarlic=>Sen!er: ?b@ectA;

    { )l procedimiento del bot"n }

     eg%n

      *esulta!o/Lines/%!!>)