Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-06-2008
mariolop12 mariolop12 is offline
Registrado
 
Registrado: abr 2008
Posts: 5
Poder: 0
mariolop12 Va por buen camino
Invertir string -

Hola,

Yo uso Delphi 5.
Código Delphi [-]
Estuve buscando por internet como invertir un string.... y encontré el siguiente código

 Function String_Reverse(S : String): String;
Var
   i : Integer;
Begin
   Result := '';
   For i := Length(S) DownTo 1 Do
   Begin
     Result := Result + Copy(S,i,1) ;
   End;
End;

Yo soy muy nuevo en delphi, estoy leyendo y aprendiendo.... 
quisiera saber en qué parte del editor de código puedo introducirlo.

este es mi programa...


interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.BitBtn1Click(Sender: TObject);
VAR a,b,e:real;
r:integer;
begin

a:=strtofloat(inputbox('Datos','Introduzca numero A:',''));
b:=strtofloat(inputbox('Datos','Introduzca numero B:',''));

//parte a   -----------------------------------------------------------
e:=Exp(B*Ln(A));
showmessage('Respuesta:'+' '+floattostr(e));

//parte b   ----------------------------------------------------------
r:=(trunc(Int(A)) mod 4567);

AQUÍ DEBERÍA IR EL CÁLCULO DEL INVERSO DE   'r'

//parte c  ------------------------------------------------------------
ShowMessage('Redondear B a las milésimas:'+FormatFloat('"Value = "0.000', b));

end;

end.


espero puedan ayudarme

Última edición por marcoszorrilla fecha: 07-06-2008 a las 12:54:02. Razón: Etiquetas Delphi
Responder Con Cita
  #2  
Antiguo 07-06-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Hola, como no sé que quieres hacer con el resultado de "invertir", he hecho que se muestre con un ShowMessage.

Sería bueno que usaras las etiquetas de código DELPHI, así queda todo mucho mas bonito y claro
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;

    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

Function String_Reverse(S : String): String;
Var
  i : Integer;

Begin
  Result := '';
  For i := Length(S) DownTo 1 Do
    Begin
      Result := Result + Copy(S,i,1);
    End;
End;

procedure TForm1.BitBtn1Click(Sender: TObject);
VAR
  a,b,e:real;
  r:integer;

begin
  a:=strtofloat(inputbox('Datos','Introduzca numero A:',''));
  b:=strtofloat(inputbox('Datos','Introduzca numero B:',''));

  //parte a -----------------------------------------------------------
  e:=Exp(B*Ln(A));
  showmessage('Respuesta:'+' '+floattostr(e));

  //parte b ----------------------------------------------------------
  r:=(trunc(Int(A)) mod 4567);

  ShowMessage(String_Reverse(IntToStr(r)));

  //parte c ------------------------------------------------------------
  ShowMessage('Redondear B a las milésimas:'+FormatFloat('"Value = "0.000', b));
end;

end.

Te propongo otra forma de invertir un string, es muy similar:
Código Delphi [-]
function String_Reverse(s : String): String;
var
  i : Integer;

begin
  Result := '';
  for i:=1 to Length(s) do
    Result:=s[i] + Result;
end;

Saludos.
Responder Con Cita
  #3  
Antiguo 07-06-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola mariolop12, también puedes utilizar la función ReverseString de StrUtils.

Código Delphi [-]
 Showmessage(ReverseString('Texto a Invertir'));

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 07-06-2008
mariolop12 mariolop12 is offline
Registrado
 
Registrado: abr 2008
Posts: 5
Poder: 0
mariolop12 Va por buen camino
Cita:
Empezado por xEsk Ver Mensaje
Hola, como no sé que quieres hacer con el resultado de "invertir", he hecho que se muestre con un ShowMessage.

Sería bueno que usaras las etiquetas de código DELPHI, así queda todo mucho mas bonito y claro Código Delphi [-] implementation {$R *.dfm} Function String_Reverse(S : String): String;
Var i : Integer; Begin Result := '';
For i := Length(S) DownTo 1 Do Begin Result := Result + Copy(S,i,1); End;
End;



Saludos.


Gracias por tu respuesta,en tal caso i sería el string ya invertido?...
yo necesito colocar si un string es igual a su inverso...


lo estoy haciendo de esta manera...

Código Delphi [-]
if ((trunc(Int(A)) mod 4567))=(String_Reverse(IntToStr((trunc(Int(A)) mod 4567))))
then
begin
showmessage('El numero es capicua')
end
else
showmessage('El numero no es capicua');


y me muestra este error:

[Error] mario.pas(54): Incompatible types: 'String' and 'Int64'
la linea 54 es : Then


--------------
Responder Con Cita
  #5  
Antiguo 07-06-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola de nuevo, te muestra el error porque StringReverse te devuelve un String y para comparar debes hacer la conversión a entero.

Código Delphi [-]
 
Var
 Numero : Integer;
begin
 ......
 ......
 Numero := trunc(Int(A)) mod 4567;
 if Numero= StrToInt(ReverseString(IntToStr(Numero))) then
  showmessage('El numero es capicua')
 else
  showmessage('El numero no es capicua'); 
 ......

Como estas trabajando con números, no te sería mejor invertir el número, aquí te dejo la función para invertir números.

Código Delphi [-]
 
function TForm1.InvertirNumero(Numero : Integer):Integer;
var
 NumeroInvertido : Integer;
begin
 NumeroInvertido := 0;

 While (Numero>0) do
 begin
  NumeroInvertido := NumeroInvertido*10 + (Numero MOD 10);
  Numero := Numero Div 10;
 end;
 result := NumeroInvertido;
end;
 
procedure TForm1.BitBtn1Click(Sender: TObject);
var
 Numero : Integer;
begin
 Numero := trunc(Int(A)) mod 4567;
 if Numero = InvertirNumero(Numero) then
  showmessage('El numero es capicua')
 else
  showmessage('El numero no es capicua'); 
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
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
Invertir funcionamiento botones TDBNavigator Ivanzinho OOP 13 04-02-2008 17:48:03
Invertir colores del texto de un richedit viveba OOP 2 27-05-2007 16:38:26
invertir columnas por filas en dbgrid emeceuy Varios 5 10-10-2005 05:30:54
Invertir un color Keiso API de Windows 1 20-08-2004 02:05:27
invertir una tabla ebeltete SQL 8 23-05-2003 01:10:59


La franja horaria es GMT +2. Ahora son las 23:07:01.


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