Como centralizar variaveis ?

Delphi

22/08/2005

Tenho muitas variaveis que são utilizadas em todos os forms,

Como centralizar essas variaveis em uma DLL ?

Se não for pedir muito , por favor passar o codigo ....


Fabiano Góes

Fabiano Góes

Curtidas 0

Respostas

Beppe

Beppe

22/08/2005

NUma DLL não vale a pena, o formato PE acredito que aceita, mas o Delphi não exporta variáveis de programas. Daria pra incluir métodos do tipo get/set que permitam a emulação da variável.

function GetTotal: Integer;
procedure SetTotal(Total: Integer);


Ou vc usa packages com a unit que contém estas vars. Vc inclui então esta unit no seu projeto e coloca a package nas Opções do projeto, em ´Compile with run-time packages´.

PS: Porque vc acha que é vantagem colocar as vars em outro módulo? Eu não mexeria em nada disso.


GOSTEI 0
Adriano Santos

Adriano Santos

22/08/2005

NUma DLL não vale a pena, o formato PE acredito que aceita, mas o Delphi não exporta variáveis de programas. Daria pra incluir métodos do tipo get/set que permitam a emulação da variável.
function GetTotal: Integer;
procedure SetTotal(Total: Integer);
Ou vc usa packages com a unit que contém estas vars. Vc inclui então esta unit no seu projeto e coloca a package nas Opções do projeto, em ´Compile with run-time packages´. PS: Porque vc acha que é vantagem colocar as vars em outro módulo? Eu não mexeria em nada disso.



Eu também não vejo nenhum problemas nisso. Estranho querer criar as variáveis em outro local, uso milhares de variáveis em meus software e numa tive problemas.


GOSTEI 0
Rjun

Rjun

22/08/2005

Além do mais, essas variáveis teriam q ser publicas...acho isso uma péssima ideia...


GOSTEI 0
Adriano Santos

Adriano Santos

22/08/2005

Não sei os demais colegas, mas normalmente eu tenho uma Unit com todas as minhas variáveis, constantes, funções e procedimentos que uso em todos os meus softwares e em toda a aplicação;


GOSTEI 0
Fabiano Góes

Fabiano Góes

22/08/2005

Adriano vc chegou no ponto que eu queria, porem nao sabia como fazer ?

É isso gostaria de colocar as variaveis, procedimentos e funções em uma em uma unica Unit.

Desculpe a minha iguinorancia ai galera , mais já tentei criar uma Unit assim e nao consegui, será que alguem poreia detalhar pra mim ?


Um grande abraço a todos !!!!!


GOSTEI 0
Adriano Santos

Adriano Santos

22/08/2005

É simples cara, veja:

1 - Entre no Delphi feche todos os seus projetos e então clique em File >> New >> Unit.
2 - O Delphi vai criar pra você uma unit nova com a seguinte estrutura.
unit Unit2;

interface

implementation

end.

3 - Salve-a em um local onde todos os seus projetos podem vê-la, por exemplo: C:\Projetos\MinhasFuncoes
4 - Entre no Tools >> Enviroments Options >> Library e inclua o endereço da sua Unit no Library Path
Obs: Desta forma todos os seus projetos podem enxergar a Unit criada.
5 - Crie suas variáveis, constantes, types, functions e etc.
Obs. Não se esqueça, você deve declarar variáveis, constantes, types, classe etc e também o escopo das functions e procedures antes do interface.
Após o implementation você coloca o código (alogoritimo) das suas functions e procedures.

Bleza, isso criado basta você salvar.
Abra seu projeto e no uses (o 1º de preferência) declare o nome da unit que vc criou por exemplo MinhasFuncoes.

Já era, agora é só colocar tudo lá.

Abraço

Exemplo da minha unit (reduzida claro)

unit dclibrary;

{$WARNINGS OFF}
{$HINTS OFF}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, Buttons, ExtCtrls, StdCtrls, ComCtrls, ToolWin, ImgList, DBTables, DB,
  DbGrids, ShellApi, Jpeg, XpMenu, Registry, Grids, Ambiente, Typinfo, DbCtrls;


const
  C_DiaSemana: array[1..7, 1..3] of string = ((´Domingo´, ´Dom´, ´Domingo´),
    (´Segunda-Feira´, ´Seg´, ´Segunda´),
    (´Terça-Feira´, ´Ter´, ´Terça´),
    (´Quarta-Feira´, ´Qua´, ´Quarta´),
    (´Quinta-Feira´, ´Qui´, ´Quinta´),
    (´Sexta-Feira´, ´Sex´, ´Sexta´),
    (´Sábado´, ´Sab´, ´Sábado´));


  C_Mes: array[1..12, 1..2] of string = ((´Janeiro´, ´Jan´),
    (´Fevereiro´, ´Fev´),
    (´Março´, ´Mar´),
    (´Abril´, ´Abr´),
    (´Maio´, ´Mai´),
    (´Junho´, ´Jun´),
    (´Julho´, ´Jul´),
    (´Agosto´, ´Ago´),
    (´Setembro´, ´Set´),
    (´Outubro´, ´Out´),
    (´Novembro´, ´Nov´),
    (´Dezembro´, ´Dez´));

  {DONE : Ajustar os estados}
  C_UF: array[1..27, 1..2] of string = ((´São Paulo´, ´SP´),
    (´Rio de Janeiro´, ´RJ´),
    (´Minas Gerais´, ´MG´),
    (´Pernanbuco´, ´PE´),
    (´Bahia´, ´BA´),
    (´Espírito Santo´, ´ES´),
    (´Goiás´, ´GO´),
    (´Tocantins´, ´TO´),
    (´Pará´, ´PA´),
    (´Paraná´, ´PR´),
    (´Amazonas´, ´AM´),
    (´Acre´, ´AC´),
    (´Maranhão´, ´MA´),
    (´Mato Grosso´, ´MT´),
    (´Mato Grosso do Sul´, ´MS´),
    (´Piauí´, ´PI´),
    (´Paraíba´, ´PB´),
    (´Distrito Federal´, ´DF´),
    (´Rio Grande do Sul´, ´RS´),
    (´Santa Catarina´, ´SC´),
    (´Rôndonia´, ´RO´),
    (´Rorâima´, ´RR´),
    (´Alagoas´, ´AL´),
    (´Amapá´, ´AP´),
    (´Ceará´, ´CE´),
    (´Rio Grande do Norte´, ´RN´),
    (´Sergipe´, ´SE´));


function Dc_MessageDlg(Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; IndiceHelp: LongInt; DefButton: TMOdalResult = mrNone; Portugues: Boolean = True): Word;

implementation

function Dc_MessageDlg(Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; IndiceHelp: LongInt; DefButton: TMOdalResult = mrNone; Portugues: Boolean = True): Word;
var
  I: Integer;
  Mensagem: TForm;
begin
  Mensagem := CreateMessageDialog(Msg, AType, Abuttons);
  Mensagem.HelpContext := IndiceHelp;
  with Mensagem do begin
    for i := 0 to ComponentCount - 1 do begin
      if (Components[i] is TButton) then begin
        if (TButton(Components[i]).ModalResult = DefButton) then begin
          ActiveControl := TWincontrol(Components[i]);
        end;
      end;
    end;
    if Portugues then begin
      if Atype = mtConfirmation then Caption := ´Confirmação´
      else if AType = mtWarning then Caption := ´Aviso´
      else if AType = mtError then Caption := ´Erro´
      else if AType = mtInformation then Caption := ´Informação´;
    end;
  end;
  if Portugues then begin
    TButton(Mensagem.FindComponent(´YES´)).Caption := ´&Sim´;
    TButton(Mensagem.FindComponent(´NO´)).Caption := ´&Não´;
    TButton(Mensagem.FindComponent(´CANCEL´)).Caption := ´&Cancelar´;
    TButton(Mensagem.FindComponent(´ABORT´)).Caption := ´&Abortar´;
    TButton(Mensagem.FindComponent(´RETRY´)).Caption := ´&Repetir´;
    TButton(Mensagem.FindComponent(´IGNORE´)).Caption := ´&Ignorar´;
    TButton(Mensagem.FindComponent(´ALL´)).Caption := ´&Todos´;
    TButton(Mensagem.FindComponent(´HELP´)).Caption := ´A&juda´;
  end;
  Result := Mensagem.ShowModal;
  Mensagem.Free;
end;
end.



GOSTEI 0
Fabiano Góes

Fabiano Góes

22/08/2005

Ai adriano Valeu cara pela atenção, não só vc mais todos da comunidade sempre tem a maior paciencia comigo e tenho certeza que é assim com todos que precisam de uma ajuda.

Muito agradecido !!!!!!!!!!

Espero um dia ter um conhecimento ao menos proximo de vcs, para poder ajudar os meus cologas da comunidade tb .


GOSTEI 0
Fabiano Góes

Fabiano Góes

22/08/2005

{$WARNINGS OFF}
{$HINTS OFF}

-----------------------------------------------------------------

Adriano desculpe de amolar mais uma vez, masi o que são esses códigos acima ?


GOSTEI 0
POSTAR