Ir para conteúdo
Fórum Script Brasil
  • 0

Duvidas


Guilherme014

Pergunta

fiz esta função, como faço para retornar um valor assim que pressionar o botão certo....

function TfrmSoma.Potencia(X, Y: integer): integer;
var
  i,
  resultado : Integer;
begin
  X := StrToInt(edtNumero1.Text);
  Y := StrToInt(edtnumero2.Text);

   for i:=0 to StrToInt(edtnumero2.Text) do
     resultado := X * Y;

  lblResultado.Caption := FloatToStr(resultado);
end;

obrigado

valeu

guilherme

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

fiz esta função, como faço para retornar um valor assim que pressionar o botão certo....

function TfrmSoma.Potencia(X, Y: integer): integer;
var
  i,
  resultado : Integer;
begin
  X := StrToInt(edtNumero1.Text);
  Y := StrToInt(edtnumero2.Text);

   for i:=0 to StrToInt(edtnumero2.Text) do
     resultado := X * Y;

  lblResultado.Caption := FloatToStr(resultado);
end;
obrigado valeu guilherme
Em geral, a utilidade de uma função é independer de coisas presentes no form. Note que a sua função só vai funcionar se existir um edtNumero1, edtNumero2 e um lblResultado no form. E se você quiser utilizar essa mesma função em outro local? Não que seja errado fazer o que você fez, mas não é prático. Além disso, o seu jeito de calcular potências não está correto. O ideal seria que a função fosse:
function Potencia(X, Y: integer): integer;
var
  i,
  resultado : Integer;
begin
   resultado := 0;
   if (X<>0) then
    begin
     resultado := 1;
     for i:=1 to Y do
       resultado := resultado * X;
   end;

  Potencia := resultado;
end;
Daí, para utilizá-la você faria:
lblResultado.Caption := IntToStr(Potencia(StrToInt(edtNumero1.text), StrToInt(edtNumero2.text)));
A vantagem de utilizar a função do jeito que coloquei foi que você pode fazer:
showmessage(IntToStr(Potencia(2, 3));
Do jeito que você tinha esquematizado, o código acima não seria possível (já que o que valeria seriam os valores das edits e o resultado sempre iria para a label). Ah, e vale lembrar que existe uma função, chamada Power(), que já faz isso. Basta incluir Math na cláusula Uses e utilizá-la, da seguinte maneira:
showmessage(floattostr(power(2, 3)));

Sacou? wink.gif

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
mas minha duvida e como retornar o valor desta função, que não consegui

Isso é o que é feito pela linha:

Potencia := resultado;
Opcionalmente você também pode retornar o valor atribuindo o mesmo à Result, ou seja:
Result := resultado;

Porém, pessoalmente prefiro a primeira forma, ou seja, atribuir o retorno ao nome da função.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
usei os dois:

este:

lblResultado.Caption := resultado;
depois este:
lblResultado.Caption := potencia;
mas antes de testar, já sabia que estava errado, mas tentei assim mesmo... valeu guilherme
O jeito correto seria como eu disse anteriormente:
lblResultado.Caption := IntToStr(Potencia(StrToInt(edtNumero1.text), StrToInt(edtNumero2.text)));

Isso porque Potencia() é uma função que requer dois parâmetros, X e Y. No caso, os valores dos dois parâmetros são obtidos através das caixas de texto.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

valeu agora funcionou...

mais uma coisinha, me ajuda ai....

Escrever em Delphi uma função chamada ConcatenaLista.

function ConcatenaLista(listaA, listaB : TList) : Tlist;Ela irá receber duas listas de objetos do tipo TCliente e deverá retornar como resultado uma lista única  que conterá elementos das duas listas. Caso um cliente exista nas duas listas, ele deve ser adicionado apenas uma vez na lista final.

Para se familiarizar com objetos e listas, estamos anexando um exemplo de programação sobre listas. Neste exemplo, criamos a função RetornaMenorData que retorna a menor data de nascimento de uma lista de clientes. Nele também será encontrado a declaração da classe TCliente.

Para obter maiores informações sobre manipulação de listas, consulte o help da classe Tlist do Delphi.

unit selecao;

interface

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

type
  TFMTeste = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
     function RetornaMenorData(lista: Tlist): TDateTime;
     function ConcatenaLista(listaA, listaB : TList) : Tlist;
{ Private declarations }
  public
    { Public declarations }
  end;

type TCliente = class(TObject)
  StrNome : String;
  DtaNascimento : TDatetime;
end;


var
  FMTeste: TFMTeste;

implementation

{$R *.DFM}

procedure TFMTeste.Button1Click(Sender: TObject);
var lista : TList;
    cliente : TCliente;
    f : integer;
begin
  lista := TList.Create;

  cliente := TCliente.Create;
  cliente.StrNome := 'Pedro';
  cliente.DtaNascimento := StrToDateTime('01/01/1954');
  lista.add(cliente);

  cliente := TCliente.Create;
  cliente.StrNome := 'João';
  cliente.DtaNascimento := StrToDateTime('01/01/1964');
  lista.add(cliente);

  ShowMessage(FormatDateTime('dd/mm/yyyy', RetornaMenorData(lista)));

  for f := 0 to lista.count - 1 do
    TCliente(lista[f]).free;
  lista.free;

end;
function TFMTeste.RetornaMenorData(lista: Tlist): TDateTime;
var f : integer;
    DtaMin : tdateTime;
    Cliente : TCliente;
begin
  result := 0;
  DtaMin := now;
  for f := 0 to Lista.count - 1 do
  begin
    Cliente := Lista[f];
    if Cliente.DtaNascimento < DtaMin then
    begin
      DtaMin := Cliente.DtaNascimento;
      result := DtaMin;
    end;
   end;
end;
[COLOR=blue]function TFMTeste.ConcatenaLista(listaA, listaB : TList) : Tlist;
begin
end;

end.[/COLOR]

estou precisando entregar, isto me de um hel, só consegui fazer uma parte, menos a azul.....

por favor help...

velu...

guilherme

Link para o comentário
Compartilhar em outros sites

  • 0

Não é difícil não. Basta que você percorra os elementos da listaB adicionando-os na listaA ou fazer como eu fiz abaixo, removendo sempre o primeiro da segunda lista adicionando-o na primeira, até que ela não tenha mais elementos. Abaixo segue a função:

function ConcatenaLista(listaA, listaB : TList) : Tlist;
begin
  while (listaB.Count>0) do begin
    listaA.Add(listaB.First);
    listaB.Delete(0);
  end;
  ConcatenaLista := listaA;
end;
E abaixo um exemplo de uso:
var l1, l2, l3 : TList;
    c1, c2, c3 : TCliente;
    i : integer;
begin
  l1 := TList.Create;
  l2 := TList.Create;

  c1 := TCliente.Create;
  c1.StrNome := 'Junior';
  c1.DtaNascimento := Now();

  c2 := TCliente.Create;
  c2.StrNome := 'Graymalkin';
  c2.DtaNascimento := Now();

  c3 := TCliente.Create;
  c3.StrNome := 'Dostoiévski';
  c3.DtaNascimento := Now();

  l1.Add(c1);
  l1.Add(c2);

  l2.Add(c3);

  l3 := ConcatenaLista(l1, l2);

  for i:=0 to l3.Count-1 do
    showmessage(TCliente(l3.Items[i]).strnome);
end;

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Não é difícil não. Basta que você percorra os elementos da listaB adicionando-os na listaA ou fazer como eu fiz abaixo, removendo sempre o primeiro da segunda lista adicionando-o na primeira, até que ela não tenha mais elementos. Abaixo segue a função:

function ConcatenaLista(listaA, listaB : TList) : Tlist;
begin
  while (listaB.Count>0) do begin
    listaA.Add(listaB.First);
    listaB.Delete(0);
  end;
  ConcatenaLista := listaA;
end;
E abaixo um exemplo de uso:
var l1, l2, l3 : TList;
    c1, c2, c3 : TCliente;
    i : integer;
begin
  l1 := TList.Create;
  l2 := TList.Create;

  c1 := TCliente.Create;
  c1.StrNome := 'Junior';
  c1.DtaNascimento := Now();

  c2 := TCliente.Create;
  c2.StrNome := 'Graymalkin';
  c2.DtaNascimento := Now();

  c3 := TCliente.Create;
  c3.StrNome := 'Dostoiévski';
  c3.DtaNascimento := Now();

  l1.Add(c1);
  l1.Add(c2);

  l2.Add(c3);

  l3 := ConcatenaLista(l1, l2);

  for i:=0 to l3.Count-1 do
    showmessage(TCliente(l3.Items[i]).strnome);
end;

Abraços,

Graymalkin

valeu pela ajuda

guilherme

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...