Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-08-2010
P0werBurn P0werBurn is offline
Miembro
 
Registrado: jun 2010
Posts: 47
Poder: 0
P0werBurn Va por buen camino
Duda Función IntToStr

Buenas noches a todos.

Antes que nada, disculparme por tantas dudas y tan pocos aportes, la razón es que estoy aprendiendo y quiero que las cosas se me queden bastante claras, y a partir de ahí, poder aportar más con esta comunidad (es lo mínimo que puedo hacer, ya que me estáis prestando tanta ayuda).

Bueno, ayer estuve haciendo un programa muy simple, que era un contador de líneas, pero más que nada era para asimilar la propiedad count.

Yo creía que todo iba bien, hasta que le di a compilar. El código era el siguiente:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text:= Memo1.Lines.count
end;

No funcionó.
Busqué información por internet y leí que había que poner así el código:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text:= IntToStr(Memo1.Lines.count);
end;

Tampoco sabía nada de la propiedad IntToStr, y me vino a la cabeza el consejo que me distéis: que mirara la ayuda de Delphi.

Eso hice, y averigué que IntToStr signficaba Integer To String, y que se podía usar con todo tipos de variables.

Que había que cambiar el TEdit a String lo entendí, porque estaba contando líneas de un Memo, el cual es un String, según tengo entendido (si estoy confundido, por favor, corríjanme). Pero lo que no entendí fue el Integer. A caso el TEdit es un Integer?

Esperando que me saquen de dudas,

Un saludo.

P0werBurn.
Responder Con Cita
  #2  
Antiguo 03-08-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Estas un poco confundido, mezclando todo. A ver si este resumen te ayuda, leelo pausado e intentá comprender línea a línea:

TEdit es una clase
Edit1 es una instancia de la clase TEdit

Cuando utilizas Edit1.Text estas accediendo a la propiedad Text de la clase TEdit
La propiedad Text de la clase TEdit es del tipo string

Supongo que Memo1 es una instancia de la clase TMemo.
TMemo tiene una propiedad Lines y esta propiedad es del tipo TStrings

TStrings <> string
TStrings es una clase, que funciona como una colección de strings
Count es una propiedad de TStrings que es del tipo Integer

Como Count es un Integer no puedes igualarlo directamente a la propiedad Text de la clase TEdit que es del tipo string, para eso necesitas utilizar alguna función que te convierta el tipo de dato, y la mas indicada es IntToStr (Integer to string).

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 03-08-2010
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
haz esto pa' pronto:

Código Delphi [-]
 Edit1.Text:=Format('%d',[Memo1.Lines.count]);


E inclusive puedes hacer esto también si te quieres ver muy elegante:

Código Delphi [-]
 Edit1.Text:=Format('%d Líneas',[Memo1.Lines.count]);
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #4  
Antiguo 04-08-2010
P0werBurn P0werBurn is offline
Miembro
 
Registrado: jun 2010
Posts: 47
Poder: 0
P0werBurn Va por buen camino
Cita:
Empezado por delphi.com.ar Ver Mensaje
Estas un poco confundido, mezclando todo. A ver si este resumen te ayuda, leelo pausado e intentá comprender línea a línea:

TEdit es una clase
Edit1 es una instancia de la clase TEdit

Cuando utilizas Edit1.Text estas accediendo a la propiedad Text de la clase TEdit
La propiedad Text de la clase TEdit es del tipo string

Supongo que Memo1 es una instancia de la clase TMemo.
TMemo tiene una propiedad Lines y esta propiedad es del tipo TStrings

TStrings <> string
TStrings es una clase, que funciona como una colección de strings
Count es una propiedad de TStrings que es del tipo Integer

Como Count es un Integer no puedes igualarlo directamente a la propiedad Text de la clase TEdit que es del tipo string, para eso necesitas utilizar alguna función que te convierta el tipo de dato, y la mas indicada es IntToStr (Integer to string).

Saludos!
Bueno, antes que nada, muchas gracias por el tiempo que has tomado respondiéndome y aclarándome todo.

Según he entendido, es más que nada por lógica, porque sería como sumar una pera con una manzana, ¿no?.

Con eso quiero decir que no se pueden sumar un Integer y un String, sino que para sumar o hacer cualquier acción en la que se junten dos variables, estas tienen que ser iguales.

Corrígeme si me equivoco por favor.

Un saludo, y gracias otra vez.

P0werBurn.
Responder Con Cita
  #5  
Antiguo 04-08-2010
P0werBurn P0werBurn is offline
Miembro
 
Registrado: jun 2010
Posts: 47
Poder: 0
P0werBurn Va por buen camino
Cita:
Empezado por AzidRain Ver Mensaje
haz esto pa' pronto:

Código Delphi [-]
 Edit1.Text:=Format('%d',[Memo1.Lines.count]);


E inclusive puedes hacer esto también si te quieres ver muy elegante:

Código Delphi [-]
 Edit1.Text:=Format('%d Líneas',[Memo1.Lines.count]);
Muchas gracias por tu respuesta, AzidRain,

pero el problema no era que no me funcionara, el problema estaba en que no entendía la lógica que se estaba aplicando en mi código.

Aún así, te vuelvo a repetir, muchas gracias por tu respuesta, en cuanto tenga tiempo intentaré buscar información del método que has puesto tú, para ampliar mis pobres conocimientos.

Un saludo,

P0werBurn.
Responder Con Cita
  #6  
Antiguo 04-08-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Primero que nada "IntToStr" es una Funcion y no una propiedad, ésta funcion lo que hace es convertir una Variable del tipo Integer a String(Cadenas de cracteres). Siguiendo tu ejemplo para entenderlo te hago así:
Código Delphi [-]
var
Cantidad_en_Integer:Integer;
Cantidad_en_String:String;
begin
Cantidad_en_Integer:=Memo1.Lines.count;//<- Aqui no tengo problema ya que mi variable "Cantidad_en_Integer" es de tipo
// Integer al Igual que la Propiedad "Count", son compatibles
Cantidad_en_String:=Memo1.Lines.count;//<- Aqui va dar un Error ya que la propiedad "Count" es de
// tipo Integer y  la variable "Cantidad_en_String" es del tipo String
//Ahora la pregunta es: ¿Cómo puedo asignar una variable del tipo Integer a otra del tipo String?
//SOLUCION: Utilizando la conversion de tipo, es este caso la Funcion "IntToStr"  quedando así:
Cantidad_en_String:=IntToStr(Memo1.Lines.count);
//Como ahora ya lo tengo en una varible String, pues tranquilamente lo puedo mostrar en un EDIT
Edit1.Text:=Cantidad_en_String;
end;
Nada mas que es tu caso todo lo estas haciendo directamente, es decir no estas haciendo uso de ninguna variable Auxiliar.
Tambien existe una Funcion inversa, que te hace lo contrario, es decir te convierte un String a Entero (StrToInt)..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #7  
Antiguo 04-08-2010
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
rrf Va por buen camino
Smile

Hola.

Inttostr solo funciona con variables tipo integer y no te va a servir con todo tipo de variables. Por ejemplo. si lo intentas con variables que admitan números decimales, deberías usar Floattostr, sin con variables que acepten fechas, deberías usar Datetostr.

Los edit solo admiten texto.

Los Memo son algo así como "muchos edit, uno debajo del otro, pero en un mismo componente". Son TStrings (nota la "s" final, para diferenciarlo de un TString, que es lo que contiene un Edit). Y tienen muchas más posibilidades que los Edit. Por ejemplo, puedes leer su contenido desde un archivo de texto ( Memo1.lines.loadfromfile ('c:\archivo.txt') ) o grabar su contenido a un archivo de texto ( Memo1.lines.savetofile ('c:\archivo.txt') ), etc.

Ahora bien, si quieres conocer el número de líneas que tiene un Memo, debes obtener un número (aunque se trate de un componente que maneja texto), por ello Memo1.Lines.Count devuelve el número de líneas de Memo1.

Si quieres guardar el número de líneas de un Memo en un Edit, primero debes transformar el número de líneas en texto con InttoStr, si luego ese texto (por ejemplo '27') lo vas a utilizar en una operación matemática, lo puedes convertir con StrtoInt (que hace lo contrario a InttoStr).

Bueno, con un poco de práctica seguro que lo dominarás con facilidad.

Saludos.

Ramón
Responder Con Cita
  #8  
Antiguo 04-08-2010
P0werBurn P0werBurn is offline
Miembro
 
Registrado: jun 2010
Posts: 47
Poder: 0
P0werBurn Va por buen camino
Cita:
Empezado por rgstuamigo Ver Mensaje
Primero que nada "IntToStr" es una Funcion y no una propiedad, ésta funcion lo que hace es convertir una Variable del tipo Integer a String(Cadenas de cracteres). Siguiendo tu ejemplo para entenderlo te hago así:
Código Delphi [-]
var
Cantidad_en_Integer:Integer;
Cantidad_en_String:String;
begin
Cantidad_en_Integer:=Memo1.Lines.count;//<- Aqui no tengo problema ya que mi variable "Cantidad_en_Integer" es de tipo
// Integer al Igual que la Propiedad "Count", son compatibles
Cantidad_en_String:=Memo1.Lines.count;//<- Aqui va dar un Error ya que la propiedad "Count" es de
// tipo Integer y  la variable "Cantidad_en_String" es del tipo String
//Ahora la pregunta es: ¿Cómo puedo asignar una variable del tipo Integer a otra del tipo String?
//SOLUCION: Utilizando la conversion de tipo, es este caso la Funcion "IntToStr"  quedando así:
Cantidad_en_String:=IntToStr(Memo1.Lines.count);
//Como ahora ya lo tengo en una varible String, pues tranquilamente lo puedo mostrar en un EDIT
Edit1.Text:=Cantidad_en_String;
end;
Nada mas que es tu caso todo lo estas haciendo directamente, es decir no estas haciendo uso de ninguna variable Auxiliar.
Tambien existe una Funcion inversa, que te hace lo contrario, es decir te convierte un String a Entero (StrToInt)..
Saludos...
Muchas gracias por la ayuda y por los ejemplos. Ya me va quedando mucho más claro, gracias.

Espero que pronto pueda ayudar yo también a la gente que lo necesite, pero bueno, paso por paso...
Responder Con Cita
  #9  
Antiguo 04-08-2010
P0werBurn P0werBurn is offline
Miembro
 
Registrado: jun 2010
Posts: 47
Poder: 0
P0werBurn Va por buen camino
Cita:
Empezado por rrf Ver Mensaje
Hola.

Inttostr solo funciona con variables tipo integer y no te va a servir con todo tipo de variables. Por ejemplo. si lo intentas con variables que admitan números decimales, deberías usar Floattostr, sin con variables que acepten fechas, deberías usar Datetostr.

Los edit solo admiten texto.

Los Memo son algo así como "muchos edit, uno debajo del otro, pero en un mismo componente". Son TStrings (nota la "s" final, para diferenciarlo de un TString, que es lo que contiene un Edit). Y tienen muchas más posibilidades que los Edit. Por ejemplo, puedes leer su contenido desde un archivo de texto ( Memo1.lines.loadfromfile ('c:\archivo.txt') ) o grabar su contenido a un archivo de texto ( Memo1.lines.savetofile ('c:\archivo.txt') ), etc.

Ahora bien, si quieres conocer el número de líneas que tiene un Memo, debes obtener un número (aunque se trate de un componente que maneja texto), por ello Memo1.Lines.Count devuelve el número de líneas de Memo1.

Si quieres guardar el número de líneas de un Memo en un Edit, primero debes transformar el número de líneas en texto con InttoStr, si luego ese texto (por ejemplo '27') lo vas a utilizar en una operación matemática, lo puedes convertir con StrtoInt (que hace lo contrario a InttoStr).

Bueno, con un poco de práctica seguro que lo dominarás con facilidad.

Saludos.

Ramón
Gracias a ti también por la respuesta, Ramón.

Tu respuesta me ha llamado especialmente la atención (no porque sea ni mejor ni peor que otras, al contrario, todas son muy buenas), porque la lección anterior a esta di las funciones LoadFromFile y SaveToFile.

A ti también decirte que me has aclarado bastante las dudas, ahora, como tú has dicho, sólo queda practicar y practicar, hasta que al final lo domine sin dudas.

Un saludo,

P0werBurn.
Responder Con Cita
  #10  
Antiguo 04-08-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Exclamation

P0werBurn, estuve leyendo tus comentarios, e intentando responder alguna duda sin marearte, pero entre tantas respuestas, solo se me ocurre recomendarte que busques algún libro Online de Delphi y leas al menos los capítulos iniciales, donde se refiera propiamente al lenguaje y no al uso de objetos particulares. Me parece muy importante que si ambicionas algún proyecto tengas a bien conocer los principios básicos de programación. Tus dudas son demasiado básicas y creo que vas a perder mucho mas tiempo preguntando en lugar invertir tiempo leyendo. No es que no quiera ayudar, por el contrario, pero pienso que no puedes correr si no sabes caminar, y estas recomendaciones van a ser de mucha ayuda.
Te recomiendo bajarte La cara oculta de Delphi 4 de Ian Marteens, si bien se trata de una versión antigüa de Delphi todos los conceptos básicos se conservan actualmente, es un libro muy ameno de leer.

Espero no ser inoportuno con mis comentarios, solo pretendo ayudar y no confundir.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #11  
Antiguo 04-08-2010
P0werBurn P0werBurn is offline
Miembro
 
Registrado: jun 2010
Posts: 47
Poder: 0
P0werBurn Va por buen camino
Cita:
Empezado por delphi.com.ar Ver Mensaje
P0werBurn, estuve leyendo tus comentarios, e intentando responder alguna duda sin marearte, pero entre tantas respuestas, solo se me ocurre recomendarte que busques algún libro Online de Delphi y leas al menos los capítulos iniciales, donde se refiera propiamente al lenguaje y no al uso de objetos particulares. Me parece muy importante que si ambicionas algún proyecto tengas a bien conocer los principios básicos de programación. Tus dudas son demasiado básicas y creo que vas a perder mucho mas tiempo preguntando en lugar invertir tiempo leyendo. No es que no quiera ayudar, por el contrario, pero pienso que no puedes correr si no sabes caminar, y estas recomendaciones van a ser de mucha ayuda.
Te recomiendo bajarte La cara oculta de Delphi 4 de Ian Marteens, si bien se trata de una versión antigüa de Delphi todos los conceptos básicos se conservan actualmente, es un libro muy ameno de leer.


Espero no ser inoportuno con mis comentarios, solo pretendo ayudar y no confundir.

Saludos!

Muchas gracias por tu consejo, de veras.

Te voy a hacer caso, me descargaré el libro e iré leyéndolo poco a poco. Una vez leído eso retomaré el curso que estoy haciendo (que es un curso de la Universidad Nacional de La Plata), y ya iré entrando en conceptos más teóricos y más complejos.

Muchas gracias, ahora empiezo a leerlo, ya que tengo tiempo libre.

Un saludo,

P0werBurn.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Duda sobre funcion header Shidalis PHP 1 11-08-2006 06:06:31
Duda sobre la función MoveTo y LineTo Javi2 Impresión 4 26-01-2006 18:44:43
Duda sobre la funcion StretchDIBits Javi2 Impresión 0 28-11-2005 12:38:30
Duda sobre funcion DOW gendelphi Firebird e Interbase 0 30-01-2004 21:31:25


La franja horaria es GMT +2. Ahora son las 23:25:37.


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
Copyright 1996-2007 Club Delphi