Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   [duda Sencilla] Delphi (https://www.clubdelphi.com/foros/showthread.php?t=69569)

Abaco 26-08-2010 00:44:43

[duda Sencilla] Delphi
 
HOla soy nuevo en este foro, acabo de empezar con delphi y tengo dudas MUY basicas:
Porque no funcionan ninguno de estos codigos?
Aviso que no tengo ni idea de Delphi

Code1:

procedure TForm1.FormCreate(Sender: TObject);
var
a:integer;
b:integer;
begin
* *a:=4;
* *b:=4;
* *if a=b then
* * *edit1.Text:= 'hola';
end.

Code2:

function DD(s:string):string;
begin
*result:= s + s + s
end;
/////////////////////////////////////////////////////
procedure TForm1.FormCreate(Sender: TObject);
var
a:string;
begin
* *a:='hhh';
* *if a = dd('h') then
* * *edit1.Text:= 'hola';
end.

Gracias!

rrf 26-08-2010 00:51:46

Hola.

A primera vista, creo que el problema son los asteríscos (*). Basta con que los quites y creo que te funcionará.

Saludos.

Caral 26-08-2010 00:54:35

Hola
Lo que puedo ayudar:
Codigo 1:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
a, b :integer;
begin
a:= 4;
b:= 4;
if a = b then
edit1.Text:= 'hola';
end.

Codigo 2

Código Delphi [-]
Code2:

function DD(s:string):string;
begin
s:= 'h';
result:= s + s + s;
end;
//
procedure TForm1.FormCreate(Sender: TObject);
var
a:string;
begin
a:='hhh';
if a = DD then
edit1.Text:= 'hola';
end.

Creo que por ahi va el asunto:
Saludos

robacio_ivan 26-08-2010 01:00:25

Yo tambien soy nuevo en esto, pero basicamente por lo que vi en el código que dejaste tendrias que sacar los asterisco (*) y con eso bastaria.

Abaco 26-08-2010 01:00:53

Gracias, lo de los asteriscos era que se me pegaron de alguna manera al copiar codigo ...
Muchas gracias!

Abaco 26-08-2010 01:03:56

Otra dudilla rapida aprobechando:
Que hago mal aqui??
Código Delphi [-]
function IsPerfectNumber(lNumber:Integer):Boolean;
var
  i : Integer;
  x : Integer;
begin
  if lnumber > 0 then
    begin
      for x := 1 to lnumber do
        begin
          if (lnumber mod x) = 0 then
             i := i + x;
        end;
      if i = lnumber then
       IsPerfectNumber := true;
    end
end;

/////////////////////////////////////////////////////
procedure TForm1.FormCreate(Sender: TObject);
begin
if IsPerfectNumber(6) = true then
edit1.Text:= 'hola';
end.

Abaco 26-08-2010 01:42:34

Sinceramente no veo el error, me parece todo logico...

Caro 26-08-2010 02:02:48

Hola Abaco, debes mostrarnos el error que te sale para poder ayudarte mejor, por lo que veo, cambia el punto por punto y coma del end del FormCreate solo el end de la unidad lleva punto.

Código Delphi [-]
................................................................
procedure TForm1.FormCreate(Sender: TObject);
begin
 if IsPerfectNumber(6) = true then
 edit1.Text:= 'hola';
end;

Saluditos

Abaco 26-08-2010 02:14:46

Hola caro, lo primero disculparme por los errores, quizas son muy tontos...
Mira me sigue dando error...
No se que se me escapa, estos son los errores que me saltan :

Cita:

[Warning] Unit1.pas(41): Return value of function 'IsPerfectNumber' might be undefined
[Error] Unit1.pas(51): Declaration expected but end of file found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
Muchisimas gracias de verdad...

Abaco 26-08-2010 03:07:22

Es suficiente informacion para resolverme la duda?

Caral 26-08-2010 03:21:02

Hola
Pues no se de donde sale el error, a mi no me genera ninguno, lo unico es que simplemente no envia el 'Hola' al edit ya que para que se de; la funcion tiene que generar el factor boleano y este la unica manera en que puede cumplirlo es en la ultima condicion.
Para que la condicion if i = lnumber then se cumpla tiene que i := i + x;, al no darle valor a i nunca se cumple.
Por esta razon la logica 'De novato' me dice que si se da valor a i se cumple con la condicion, pero, siempre lo hara, en tal caso la funcion no haria nada importante, simplemente hace una comparacion logica, algo que hace una variable sin problemas.
Es lo que veo al hacer esta pruebita interesante de practica.:)
Saludos

egostar 26-08-2010 03:28:53

Hola

Código Delphi [-]

function IsPerfectNumber(lNumber:Integer):Boolean;
var
  i : Integer;
  x : Integer;
begin
//Inicializamos el resultado de la función para evitar el aviso de no definida
  Result := false; 
  if lnumber > 0 then
    begin
      for x := 1 to lnumber do
        begin
          if (lnumber mod x) = 0 then
             i := i + x;
        end;
      if i = lnumber then
       Result := true; //Cambia el nombre de la función por la palabra reservada Result
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  if IsPerfectNumber(6) = true then 
     edit1.Text:= 'hola';
end; //Agrega ésta linea

end.

saludos

Abaco 26-08-2010 03:32:38

Graciaaaaas, ahora no da error, peeeeeeero...
Deberia devolver true con 6...
Mira asi hago en vb:

Código:

Private Sub Form_Load()
    MsgBox IsPerfectNumber(6)
End Sub

Public Function IsPerfectNumber(ByVal lNumber As Long) As Boolean
Dim x                      As Long
Dim i                      As Long
    For x = 1 To lNumber - 1
        If (lNumber Mod x = 0) Then i = i + x
    Next
    If i = lNumber Then IsPerfectNumber = True
End Function

Me podrias ayudar un pco mas?
Muchas gracias

egostar 26-08-2010 03:37:56

Cita:

Empezado por Abaco (Mensaje 374602)
Graciaaaaas, ahora no da error, peeeeeeero...
Deberia devolver true con 6...
Mira asi hago en vb:

Código:

Private Sub Form_Load()
    MsgBox IsPerfectNumber(6)
End Sub

Public Function IsPerfectNumber(ByVal lNumber As Long) As Boolean
Dim x                      As Long
Dim i                      As Long
    For x = 1 To lNumber - 1
        If (lNumber Mod x = 0) Then i = i + x
    Next
    If i = lNumber Then IsPerfectNumber = True
End Function

Me podrias ayudar un pco mas?
Muchas gracias

Hola

Código Delphi [-]

function IsPerfectNumber(lNumber:Integer):Boolean;
var
  i : Integer;
  x : Integer;
begin
//Inicializamos I en 0
  I := 0;
//Inicializamos el resultado de la función para evitar el aviso de no definida
  Result := false;
  if lnumber > 0 then
    begin
      for x := 1 to lnumber - 1 do //Te faltó restarle 1 a lnumber
        begin
          if (lnumber mod x) = 0 then
             i := i + x;
        end;
      if i = lnumber then
       Result := true; //Cambia el nombre de la función por la palabra reservada Result
    end;
end;

saludos

Caral 26-08-2010 03:38:50

Hola
Amigo y que hace esto:confused:
No genera errores pero no hace el efecto.:D
Saludos

ecfisa 26-08-2010 03:41:43

Hola.

Lo que tanto temia se volvio realidad....

!! NO EXISTEN LOS NUMEROS PERFECTOS !!! :D:D

Saludos.

egostar 26-08-2010 03:41:48

Cita:

Empezado por Caral (Mensaje 374604)
Hola
Amigo y que hace esto:confused:
No genera errores pero no hace el efecto.:D
Saludos

:D

saludos

Caral 26-08-2010 03:44:59

Hola
Si, lo se, pero en el ejemplo que pusiste no generaba ningún dato ya que i no contenía valor alguno.
Estoy probando los códigos para aprender algo mas.
Saludos

egostar 26-08-2010 03:48:32

Cita:

Empezado por Caral (Mensaje 374607)
Hola
Si, lo se, pero en el ejemplo que pusiste no generaba ningún dato ya que i no contenía valor alguno.
Estoy probando los códigos para aprender algo mas.
Saludos

Porque me avoque a resolver los problemas no el resultado :cool: ¿ ya checaste mi último código ?

saludos

Caral 26-08-2010 03:48:38

Hola
Es una funcion sencilla de entender y mira que soy malo con las funciones.:D:D
Saludos
PD: Que feo es Visual Basico.:p:cool::D


La franja horaria es GMT +2. Ahora son las 17:38:03.

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