Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con Random (https://www.clubdelphi.com/foros/showthread.php?t=41749)

jose91-welva 24-03-2007 12:53:53

Ayuda con Random
 
Hola¡¡ Estoi haciendo un programilla y haber si me podeis ayudar por que en unas prácticas me dijeron escribier eso para otro programa pero para este no se que tengo que cambiar haber si m podeis ayudar a corregirlo y a ver si m podeis explicar su sintaxis. Aí va el códifo entero x si acaso:

Código Delphi [-]
unit Unit1;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
 
type
      TForm1 = class(TForm)
      Label1: TLabel;
      Label2: TLabel;
      Label3: TLabel;
      Edit1: TEdit;
      procedure Label3Click(Sender: TObject);
      procedure Label1Click(Sender: TObject);
      private
{ Private declarations }
public
{ Public declarations }
end;
 
var
      Form1: TForm1;
      X: array[1..100] of byte;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Label1Click(Sender: TObject);
begin
Label1.Caption:= X[round(random(100))];
end;
 
procedure TForm1.Label3Click(Sender: TObject);
begin
Label2.Caption:= X[round(random(100))]
end;
 
end.

El error me aparece en:

Código Delphi [-]
Label1.Caption:= X[round(random(100))];

y en:

Código Delphi [-]
Label2.Caption:= X[round(random(100))];

En los mensages pone:

Código:

[Pascal Error] Unit1.pas(32):E2010 Incompatible types: 'string' and 'byte'
eso lo he puesto para que salga un número aleatorio. Creo que más claro no podia ser :) Enga un saludo

ArdiIIa 24-03-2007 13:03:39

Hola jose91-welva Bienvenido al Club.

El problema que planteas tiene una explicación muy sencilla:
Estás tratando de asignar un número (byte) al contenido de un Edit, que es del tipo "cadena de caracteres" (String).

Lo resolverías utilizando la función IntToStr

Lo que no tengo claro es porque utilizas un array. Si lo que realmente deseas es obtener un número aleatorio bastaría con algo como esto:
Código Delphi [-]
Label1.Caption:= IntToStr (round(random(100));

Te recomiendo que leas la guía de estilo

Si quieres, puedes obtener mayor información buscando por los foros...

Saludos

seoane 24-03-2007 13:19:26

Yo solo añadiría, que mientras que el random tal como lo usas genera números entre el 0 y el 99, tu declaras el array de bytes X entre el 1 y el 100. Además no tienen mucho sentido usar aquí Round, ya que Random ya devuelve números enteros. En resumen:
Código Delphi [-]
  Label1.Caption:= IntToStr (X[Random(100)+1]);

Aunque como ha dicho ArdiIIa, si solo quieres generar números aleatorios no te hace falta un array:
Código Delphi [-]
  Label1.Caption:= IntToStr (Random(100));

jose91-welva 24-03-2007 13:39:27

mUXAS GRACIAS
 
gRACIAS por ayudarme pero yo e puesto lo que e encontrao no se de que va ni que significa cada cosa solo tengo una minima idea d d qué va si me pudieras explicar que significa todo eso t lo agradecería más
llevo en esto una semana con 16 años.

jose91-welva 24-03-2007 13:40:23

po m la as salvao a mí :) jejeje

jose91-welva 24-03-2007 13:43:53

Illo Pero Eso Es De Tipo Interger Entonces Tampoco Va

jose91-welva 24-03-2007 13:46:41

He probao eso y no furula(funciona) hay algo de eso(lo del edit) que sea del tipo byte?

gluglu 24-03-2007 14:11:39

... decididamente hoy en día no se enseña ya ortografía en donde se deba de aprender.

jose91-welva 24-03-2007 14:21:07

q pocas luces tienes...; escribo así para escribir + rápido. Despierta¡¡¡ q es la una y qarto

seoane 24-03-2007 14:25:15

Es buen momento para recordar hilos como estos:

Comité Contra las Faltas Voluntarias y el Lenguaje SMS
haber si eskrivimos vien d huna bes x fabor
Calidad de las preguntas

Cita:

Empezado por jose91-welva
q pocas luces tienes...; escribo así para escribir + rápido. Despierta¡¡¡ q es la una y qarto

:confused: ¿Tienes mucha prisa?

jose91-welva 24-03-2007 14:29:37

tio... tú si que eres correcto

dec 24-03-2007 14:32:49

Hola,

Cita:

Empezado por José
tio... tú si que eres correcto

José, revisa la guía de estilo de estos Foros, por favor. No repitas Hilos ni los inicies si puedes continuar en otro recién iniciado. Da un título más descriptivo a tus mensajes y, como dice el compañero Seoane, trata de no escribir como si lo hicieras en un mensaje SMS.

jose91-welva 24-03-2007 14:54:38

vaaaaale..

IZO 24-03-2007 20:31:50

Bueno o tambien puedes hacer algo como esto String(Byte) o usar el operador as, bueno en fin yo tambien soy newbie :(

Delphius 25-03-2007 05:39:51

Esto funciona. Comprobado.
 
jose91-welva, ¿ya probaste? Yo acabo de probar este código y funciona de lo más bien. Pongo la cantidad de labels que necesito, se asigno a cada uno este evento en el OnClick de modo que todos los labels que intevienen comparten el mismo efecto, sólo que se asigna el valor a quien da la orden mediante el parámetro sender.

Código Delphi [-]
procedure TForm1.Label1Click(Sender: TObject);
begin
  (Sender as TLabel).Caption := IntToStr(Random(100));
end;

Saludos,


La franja horaria es GMT +2. Ahora son las 09:03:34.

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