Funções no Delphi
É 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
Curtidas 0
Respostas
Spooner
24/03/2004
Sim!
Voçe pode user uma Unit para colocar vairias funçoes, ou declarar ela como Global.
Voçe pode user uma Unit para colocar vairias funçoes, ou declarar ela como Global.
GOSTEI 0
Mjs
24/03/2004
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..
GOSTEI 0
Vanius
24/03/2004
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
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
GOSTEI 0
Paulo_amorim
24/03/2004
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);
-Se vc declara uma Procedue retornando Integer, vc deveria chamá-la Function:
function Funcao(parametro: integer): Integer;
Até+
GOSTEI 0
Mjs
24/03/2004
Valeu galera.. vou fazer
GOSTEI 0
Mjs
24/03/2004
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 de Funções:
Aqui eu chamei a unit funcoes:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, funcoes;
mas num tá dando,, :(
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,, :(
GOSTEI 0
Beppe
24/03/2004
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:
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.
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.
GOSTEI 0
Mjs
24/03/2004
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:
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.
var f: funcoes_; begin f := funcoes_.Create; f.verificar(´teste´); f.free; end;
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?
GOSTEI 0
Beppe
24/03/2004
ShowMessage está em Dialogs, logo, vc precisa declarar essa unit no uses.
uses Dialogs;
GOSTEI 0
Mjs
24/03/2004
Ú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 :(
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 :(
GOSTEI 0
Beppe
24/03/2004
Ú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 ...
GOSTEI 0
Mjs
24/03/2004
[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 ...
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;
GOSTEI 0
Beppe
24/03/2004
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...
GOSTEI 0