Fórum Funções no Delphi #221968

24/03/2004

0

É uma pergunta bem de novato, como eu hehehe, mas tem como eu declarar uma função que possa ser usada no projeto inteiro, tipo global.


Mjs

Mjs

Responder

Posts

24/03/2004

Spooner

Sim!
Voçe pode user uma Unit para colocar vairias funçoes, ou declarar ela como Global.


Responder

Gostei + 0

24/03/2004

Mjs

Sim! Voçe pode user uma Unit para colocar vairias funçoes, ou declarar ela como Global.


Legal mas como seria o processo para declara-ra global e pela unit? Tipo como eu chamo a função que está em outra unit..


Responder

Gostei + 0

24/03/2004

Vanius

Boa tarde.

Vc pode criar um novo form ou uma nova unit.

Depois disto vc faz a sua procedure/function normalmente.

Depois da procedure concluida, copie o cabeçalho
(procedure Tform1.Funcao(parametro : integer) : Integer;)
e cole dentro de

unit ...
...
private
...
public
procedure Funcao(parametro : integer) : Integer;
...
end;

Depois, para usar a funçao declarada em outro form faça o seguinte:
No formulario onde a funçao será usada, coloque em baixo de
implamentation a seguinte linha:
uses NomeDaUnit;
E depois disto use a funcao normalmente
variavel := NomeDaUnit.Funcao(10);

é mais ou menos isto.
Se tiver alguma dúvida, é só avisar.

[]s,

Vanius


Responder

Gostei + 0

24/03/2004

Paulo_amorim

procedure Funcao(parametro : integer) : Integer; E depois disto use a funcao normalmente variavel := NomeDaUnit.Funcao(10);


Olá

-Se você declara a Unit na uses, não eh necessário repeti-la na chamada:
i := Funcao(10);
tem o mesmo efeito

-Se vc declara uma Procedue retornando Integer, vc deveria chamá-la Function:
 function Funcao(parametro: integer): Integer;


Até+


Responder

Gostei + 0

24/03/2004

Mjs

Valeu galera.. vou fazer


Responder

Gostei + 0

26/03/2004

Mjs

Fico muito grato pela ajuda de todos, mas ainda continuo não conseguindo usar a bendi faunção :(

Vejam como está:

Form1 (nova_folha):

unit nova_folha;

interface

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

type
  Tfrm_folha_de_pagamento = class(TForm)
    grupo_folha: TGroupBox;
    Label1: TLabel;
    MaskEdit1: TMaskEdit;
    MaskEdit2: TMaskEdit;
    MaskEdit3: TMaskEdit;
    MaskEdit4: TMaskEdit;
    MaskEdit5: TMaskEdit;
    MaskEdit6: TMaskEdit;
    MaskEdit7: TMaskEdit;
    MaskEdit8: TMaskEdit;
    MaskEdit9: TMaskEdit;
    MaskEdit10: TMaskEdit;
    MaskEdit11: TMaskEdit;
    MaskEdit12: TMaskEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure grupo_folhaClick(Sender: TObject);
    procedure MaskEdit1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frm_folha_de_pagamento: Tfrm_folha_de_pagamento;

implementation

{$R *.dfm}


procedure Tfrm_folha_de_pagamento.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
action:=caFree;
end;

procedure Tfrm_folha_de_pagamento.MaskEdit1Change(Sender: TObject);
begin
 verificar("teste")
end;


end.


Unit de Funções:

unit funcoes;

interface
  type funcoes_=class
  public
    Function verificar(Letra: char): Boolean;
  end;

implementation
  function funcoes_.verificar(Letra: char) : boolean;
    begin
    showmessage(Letra);
    end;
end.


Aqui eu chamei a unit funcoes:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, funcoes;

mas num tá dando,, :(


Responder

Gostei + 0

26/03/2004

Beppe

Sua ´função´ é um método, a bem da verdade. Devido ao fato dela pertencer a uma classe, vc só pode usá-la se passar um objeto da classe.

Ex:

var
  f: funcoes_;
begin
f := funcoes_.Create;
f.verificar(´teste´);
f.free;
end;


Existe outros meios, de obter o mesmo resultado, dependendo se a função é estática, isto é, sua ação não depende de um objeto específico.


Responder

Gostei + 0

26/03/2004

Mjs

Sua ´função´ é um método, a bem da verdade. Devido ao fato dela pertencer a uma classe, vc só pode usá-la se passar um objeto da classe. Ex:
var
  f: funcoes_;
begin
f := funcoes_.Create;
f.verificar(´teste´);
f.free;
end;
Existe outros meios, de obter o mesmo resultado, dependendo se a função é estática, isto é, sua ação não depende de um objeto específico.


Valeu e essa função está certa?

function funcoes_.verificar(Letra: char) : boolean;
begin
showmessage(Letra);
end;


Ele tá dizendo undeclared identifier para a linha showmessage(Letra),,, eu errei algo?


Responder

Gostei + 0

26/03/2004

Beppe

ShowMessage está em Dialogs, logo, vc precisa declarar essa unit no uses.

uses
  Dialogs;



Responder

Gostei + 0

26/03/2004

Mjs

Última dúvida eu preciso fazer isso:

var caracteres : array[1..70] of string ;

caracteres := [´A´..´J´, ´a´, ´m´];

Tipo definir um array e vários valores padrão, é possível no object pascal??? Nos pascal eu sei como mas no object eu num tow conseguindo :(


Responder

Gostei + 0

27/03/2004

Beppe

Última dúvida eu preciso fazer isso: var caracteres : array[1..70] of string ; caracteres := [´A´..´J´, ´a´, ´m´]; Tipo definir um array e vários valores padrão, é possível no object pascal??? Nos pascal eu sei como mas no object eu num tow conseguindo :(


Talvez o que vc quer é um set of char;

var caracteres: set of char;

caracteres := [´A´..´J´, ´a´, ´m´];

if ch in caracteres then
...



Responder

Gostei + 0

27/03/2004

Mjs

[quote:a3123577b0=´mjs´]Última dúvida eu preciso fazer isso: var caracteres : array[1..70] of string ; caracteres := [´A´..´J´, ´a´, ´m´]; Tipo definir um array e vários valores padrão, é possível no object pascal??? Nos pascal eu sei como mas no object eu num tow conseguindo :(


Talvez o que vc quer é um set of char;

var caracteres: set of char;

caracteres := [´A´..´J´, ´a´, ´m´];

if ch in caracteres then
...
[/quote:a3123577b0]

Valeu beep,, de ontem pra hoje eu achei essa solução:

const
  caracteres : array[1..80] of Char = (´a´,´b´,´c´,´d´,´e´,´f´,´g´,´h´,´i´,´j´,´k´,´l´,´m´,´n´,´o´,´p´,´q´,´r´,´s´,´t´,´u´,´v´,´x´,´w´,´y´,´z´,´A´,´B´,´C´,´D´,´E´,´F´,´G´,´H´,´I´,´J´,´K´,´L´,´M´,´N´,´O´,´P´,´Q´,´R´,´S´,´T´,´U´,´V´,´X´,´W´,´Y´,´Z´,´~´,´´´,´!´,´@´,´´,´$´,´¬´,´^´,´&´,´*´,´(´,´)´,´_´,´+´,´-´,´=´,´}´,´{´,´]´,´[´,´"´,´;´,´:´,´/´,´"´,´?´,´\´,´|´);
var
  cont: integer;
  caracter_invalido:boolean;
    begin
    cont:=1;
      while cont < sizeof(caracteres) do
      begin
        if (Letra = caracteres[cont]) then
        begin
        showmessage(´Caracterer Inválido´);
        caracter_invalido:=true;
        end;
      cont:=cont+1;
      end;
    end;



Responder

Gostei + 0

27/03/2004

Beppe

const 
  caracteres: set of Char = [´a´..´z´,´A´..´Z´,´~´,´´´,´!´,´@´,´´,´$´,´¬´,´^´,´&´,´*´,´(´,´)´,´_´,´+´,´-´,´=´,´}´,´{´,´]´,´[´,´"´,´;´,´:´,´/´,´"´,´?´,´\´,´|´]; 
var 
  caracter_invalido:boolean; 
begin
  caracter_invalido:=false; 
  ...
    if Letra in caracteres then 
    begin 
      showmessage(´Caracterer Inválido´); 
      caracter_invalido:=true; 
    end;
  ...
end;


Marcos, eu sei q vc jah conseguiu, mas tlz ajude mais alguém...
Sets são mais eficientes quando podem substituir arrays...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar