crear funciones en delphi
hola a todos soy estudiante de informatica soy nuevo en el foro apenas tengo 20 minutos aqui. y quisiera saber si alguien me ayuda a entender un poco las funciones y me un da un ejemplo de algunas...:confused: :confused: :confused:
a ver si entiendo |
Hola,
Una función no es más que un bloque de código que puede utilizarse en repetidas ocasiones sin que haya necesidad de duplicarlo, de "rescribirlo": para eso usamos la función. En Delphi tenemos procedimientos y funciones y estas últimas se distingen de aquellos en que las funciones devuelven un resultado. No es que los procedimientos no puedan "devolver" resultados, pero, las funciones cuentan con una forma "natural" de hacerlo. ¿Un ejemplo de función? Claro, hombre, no faltaba más. Vamos con una que nos sumará dos Integer (que se pasan como parámetros) y nos devolverá el resultado de dicha suma:
Como se ve utilizamos la palabra reservada "Result", siempre del tipo del valor de retorno de la función, para asignarle, justamente, el resultado que al cabo ofrecerá la función. ¿Cómo podemos utilizar la función de arriba, sin ir más lejos? Pues, por ejemplo:
Como ves para usar la función no tenemos sino ceñirnos a su prototipo, esto es, pasarle los parámetros apropiados en número y tipo. En este caso se trata de "Integers" y, en fin, declaramos tres "Integer", "a", "b" y "c". A los primeros les damos un valor nosotros mismos, directamente, y, "c", tomará el valor devuelto por la función "Sumar", que en este caso es 7, puesto que se suma el valor de "a" y "b" que son los enteros que se pasan como parámetros a la función. ¿Porqué no echas un vistazo en el buscador de los Foros? Si buscas por "tutorial Delphi", "libros Delphi", etc., a buen seguro encontrarás información que será de tu interés. En todo caso bienvenido al ClubDelphi. No dejes de pegar un repaso a la guía de estilo de los Foros. |
utiizar funciones
saludo todos. tengo un funcion que puede traducir en letras, los numero que introdusco en un campo de moneda. Ahora bien necesito saber como puedo emplealo para que cuando dijite el numero en un edit al salir para despliegue su valor en letra en otro edit.
gracias |
Hola sonymix.
Suponiendo que la función sea: Código:
function NumALetras(const Num: string): string; ( Supongamos que así se llama el otro edit ). Estando seleccionado Edit1, en el Object inspector, events, haciendo doble click sobre el evento OnExit: Código:
procedure TForm1.Edit1Exit(Sender: TObject); Saludos. |
cambio de numero a letras
Espero entender tu comentario :
quieres usar tu funcion para que lo escrito en un edit se pase a otro pero con las palabras, por ejemplo 115 se pasará como: ciento quince. ¿En el edit que ingresas números ya tienes el filtro para no aceptar caracteres? Parto del hecho de que hasta que cierres el edit donde ingresas datos numericos se copien los caracteres al edit de caracteres (¿a eso te refieres con: 'al salir'?) . hay varias formas, se me ocurre: procedure TForm_Turno.Button1Click(Sender: TObject); var cadena:string; begin {uso input, podria ser cualquier otra funcion que devuelva una cadena y que tenga filtro para aceptar solo digitos } cadena := InputBox('Titulo', 'Nombre', ''); {uso tu funcion para convertir la cadena de numeros a letras y se asigna al campo text } EdtDescripcion.Text:=TraduceALetras(cadena); {siempre y cuando sea una funcion que regrese la cadena convertida. Si es un procedimiento se necesita crear una variable tipo String para ser pasada por parámetros y asi conservar el valor cambiado: TraduceALetras(CadenaOriginal,CadenaEnLetra)} end; si no es la idea, sorry |
bueno si este puede funcionar pero mi funcion se declaro asi
Form1: TForm1; function extenso (valor: real): string; implementation asi que tengo un problema de compatibilidad de type y trate de poner lo asi edit2.text:=extenso(floattotext(edit1.text)); no me resulto |
bueno si este puede funcionar pero mi funcion se declaro asi
Form1: TForm1; function extenso (valor: real): string; implementation asi que tengo un problema de compatibilidad de type y trate de poner lo asi edit2.text:=extenso(floattotext(edit1.text)); no me resulto |
y asi:
claro, la idea que haces sería:
procedure TForm1.Button1Click(Sender: TObject); var valorReal:Real; begin try valorReal:=StrToFloat(Edit1.Text); Edit2.Text:=extenso(valorReal); except MessageDlg('Ingrese un numero ',mtError,[mbOk], 0); end; end; o más simple: try Edit2.Text:=extenso(StrToFloat(Edit1.Text)); except MessageDlg('Ingrese un numero ',mtError,[mbOk], 0); end; |
Cita:
El problema de tipos te lo dá el manejo que haces del parámetro en la llamada a función. La función extenso espera un número real como parámetro y vos le estás enviando un string al usar FloatToText. Si la función está así declarada, lo correcto sería usarla así:
Tal como puso en su código el amigo Jac. Saludos. |
¿Cómo puedo transformar una función FDEX a un procedimiento?
|
Amigo Jac Fcc, le aconsejo que utilize las etiquetas que corresponda, ya que facilita la lectura y comprension del codigo que escribe.
Cita:
Saludos cordiales |
Funcion
Gracias por el ejemplo que publicaste , estoy muy agradecido , un saludo
|
Funciones
1 Archivos Adjunto(s)
Aqui te envio una rutina sencillaArchivo Adjunto 3751
|
Cita:
|
Hola juanje:
En el código que has adjuntado, hay algo que no está claro en esta línea: Lo que estás expresando es "Si el resultado de f(a∨b) es mayor que 255...", es decir, "aplica la función OR a los valores y compara el resultado con 255...". Si lo que quieres expresar es "Si el valor de a o el valor de b es mayor que 255...", debería ser así: Ahora bien, si realmente quieres aplicar la función OR, entonces te recomiendo la siguiente nomenclatura: Aquí los paréntesis no son obligatorios, pero ayudan a explicar que no es un error, sino que realmente quieres realizar la operación. |
La franja horaria es GMT +2. Ahora son las 19:58:22. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi