Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayudad Con código delphi (https://www.clubdelphi.com/foros/showthread.php?t=93168)

wolkelyn 05-06-2018 10:59:00

Ayudad Con código delphi
 
buenas, hoy vengo por aqui porque estoy trabajando en una aplicaiones para generar numeros aleatorios y tengo 3 preguntas

primera?
como puedo hacer que en mi codigo auto complete el 0 en los numeros del 1 al 9

este es el codigo que e logrado hacer funcionar pero me faltan
Cita:

unit loteria;

interface

uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, ConvUtils, StdConvs, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.ListBox, FMX.Layouts, FMX.Memo, unid2, FMX.Ani, FMX.Objects,
FMX.Controls.Presentation, FMX.Edit ;

type
TForm1 = class(TForm)
Button1: TButton;
memo: TLabel;
Image1: TImage;
Image2: TImage;
Label1: TLabel;
Image3: TImage;
Label2: TLabel;
Image4: TImage;
Label3: TLabel;
Image5: TImage;
Label4: TLabel;
Image6: TImage;
Label6: TLabel;
Image7: TImage;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);


var
i: Integer;

begin

Randomize;
Memo.Text := '';
for i := 1 to 1 do
Memo.Text := ( IntToStr( Random( 38) + 1 ) );

Label1.Text := '';
for i := 1 to 1 do
Label1.Text := ( IntToStr( Random( 38) + 1 ) );

Label2.Text := '';
for i := 1 to 1 do
Label2.Text := ( IntToStr( Random( 38) + 1 ) );

Label3.Text := '';
for i := 1 to 1 do
Label3.Text := ( IntToStr( Random( 38) + 1 ) );

Label4.Text := '';
for i := 1 to 1 do
Label4.Text := ( IntToStr( Random( 38) + 1 ) );

Label6.Text := '';
for i := 1 to 1 do
Label6.Text := ( IntToStr( Random( 38) + 1 ) );
end;

end.

segunda?

como puedo hacer que verifique si en unos de los memo, tedit o label salio el numero y siga busncando aleatorios hasta que no combine ninguna de las otross

ejemplo

1-2-3-4-5-6 en cada uno de los memo salga un numero diferente sin repetir y si se repite automaticamente vuelva a buscar otra secuencia.

tercera?
pueden ayudarme con este codigo convertirlo a delphi
tiene lo que busco
dejo el codigo y la pagina donde esta funcionado

Cita:

var p3mas = false;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function ArrayCount(array)
{
var c = 0;
for(i in array){
if(array[i]) c++;
}
return c;
}
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function setRandom(elementF,elementT,nmin,nmax,repite,dbl0){
$('#quick_pick').val('1');

openPreloader();
for(var i = elementF; i <= elementT;i++){
for(var r = 1; r < 1000;r=r+100){
var n = getRandomInt(nmin,nmax);

var str = "" + n;
var pad = "00";
var n = pad.substring(0, pad.length - str.length) + str;

setTimeout('setElement("'+i+'","'+n+'");',r);
}
}
setTimeout("closePreloader();",r);
if(repite == false){
setTimeout("chekP("+elementF+","+elementT+","+nmin+","+nmax+","+repite+");",r+100);
}
}
function chekP(elementF,elementT,nmin,nmax,repite){
var arr = [];
for(var i = 1; i <= elementT;i++){
var nev = $('#number' + i).val();
arr[nev]=nev;
}
if(ArrayCount(arr) < elementT){
setRandom(elementF,elementT,nmin,nmax,repite);
}else{
//addLine();
}

}

function setElement(element,ans){
if(p3mas == true) ans = parseInt(ans);
$('#number' + element).val(ans);
}
uega.leidsa.com/frontend/game/play/loto-mas.app.cgi

wolkelyn 05-06-2018 11:02:20

se me olvidor
 
consegui este codigo que deberia hacer lo que deseo de la completar con 0 los numero del 1 al 9 ejemplo 01,02,03,04etc

Cita:

function CompletarCodigo(const sCodigo: string; const iDigitos: Integer): string;
begin
Result := StringOfChar('0', iDigitos - Length(sCodigo)) + sCodigo;
end;

Casimiro Notevi 05-06-2018 11:07:30

Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración :)


Y recuerda poner los tags correctos al código fuente, ejemplo:


duilioisola 05-06-2018 19:28:50

A la pregunta 1:

Código Delphi [-]
var
  NumeroEntero : integer;
begin
  NumeroEntero := 1;
  Label1.Caption := Format('%.2d', [NumeroEntero]); // Label.Caption = '01'
  NumeroEntero := 42;
  Label2.Caption := Format('%.2d', [NumeroEntero]); // Label.Caption = '42'
end;

duilioisola 05-06-2018 19:59:51

A la pregunta 2:

A la pregunta 2:

Deberías crear una función que rellene un array con los numeros que quieres y que vaya verificando que no exista.
Luego con ese array pones el primer elemento en el Memo.Text, el segundo en el Label1.Caption, el tercero en Label2.Caption y así sucesivamente.

Además de esto, te serviría mucho dividir cada parte en un procedimiento/funcion simple.

Se me ocurre un código como este:
Código Delphi [-]
type
  MiArray = Array[1..6] of integer;

function DameNumeroAleatorio: integer;
begin
  Result := Random(38) + 1;
end;

procedure InicializaArray(var A: MiArray);
var
  i : integer;
begin
  // Recorro el array poniendo 0
  for i := 1 to 6 do
  begin
     A[i] := 0;
  end;
end;

function ExisteEnArray(A: MiArray; Numero: integer): boolean;
var
  i : integer;
begin
  // Inicializo resultado
  Result := False;

  // Recorro Array
  for i := 1 to 6 do
  begin
     // Si en esta posicion existe este numero, devuelvo verdadero
     if A[i] = Numero then
        Result := True;
  end;
end;

procedure AgregarNumeroAArray(var A: MiArray; Posicion, Numero: integer);
begin
  A[Posicion] := Numero;
end;

var
  Contador, Posicion, Numero : integer;
  A: MiArray;

begin
  // Inicializo con 0
  InicializaArray(A);

  // Busco 6 numeros para rellenar las posiciones del Array
  for Posicion := 1 to 6 do
  begin
     // Obtengo un numero aleatorio
     Numero := DameNumeroAleatorio;

     // Sigo buscando mientras exista el numero en el array
     while (ExisteEnArray(A, Numero)) do
        Numero := DameNumeroAleatorio;

     AgregarNumeroAArray(A, Posicion, Numero);
  end;

  // Recorro los valores y los imprimo formateados en un Memo
  for Posicion := 1 to 6 do
     MTest.Lines.Add(Format('%.2d', [A[Posicion]]));
end;


La franja horaria es GMT +2. Ahora son las 03:16:53.

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