Fórum Funções no Delphi #221968
24/03/2004
0
Mjs
Curtir tópico
+ 0Posts
24/03/2004
Spooner
Voçe pode user uma Unit para colocar vairias funçoes, ou declarar ela como Global.
Gostei + 0
24/03/2004
Mjs
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
24/03/2004
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
24/03/2004
Paulo_amorim
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
24/03/2004
Mjs
Gostei + 0
26/03/2004
Mjs
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
26/03/2004
Beppe
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
26/03/2004
Mjs
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
26/03/2004
Beppe
uses Dialogs;
Gostei + 0
26/03/2004
Mjs
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
27/03/2004
Beppe
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
27/03/2004
Mjs
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
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...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)