BDE - Como resolver isto ?

Delphi

28/07/2003

Galera, quero disponibilizar meu programa para download, e ele utiliza ALIAS, que consequentemente usa BDE, como fazer para quando o usuario baixar na internet meu programa ele possa instalar ela sem problema tendo em vista que o usuario não possui BDE. COMO FAZER ISSO ?


Ropesca

Ropesca

Curtidas 0

Respostas

Aroldo Zanela

Aroldo Zanela

28/07/2003

Colega,

Sem entrar no mérito de usar ou não o BDE a solução mais apropriada é criar o kit de instalação por meio de um instalador como o InstallShield e estabelecer que o programa de instalação faça a criação do Alias.

Outra saída é incluir uma rotina para criação do alias dinâmicamente.

Tenho um componente para isso:

{***********************************************
** Aroldo Zanela - aroldo_zanela@hotmail.com
** 2003 - Brasilia - DF - Brasil
** icq: 9271424 (Portuguese and English)
}
unit AddStandardAlias;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  dbTables, ShellAPI, ShlObj;

type
TDefaultDriver = (ddPARADOX,dddBase,ddASCIIDRV);

type
  TAddStandardAlias = class(TComponent)
  private
    { Private declarations }
    FAlias: String;
    FTitleName: String;
    FDefaultDriver: TDefaultDriver;
  protected
    { Protected declarations }
  public
    { Public declarations }
    Constructor Create(AOwner: TComponent); override;
    Destructor Destroy; override;
  published
    { Published declarations }
    property Alias: String read FAlias write FAlias;
    property TitleName: String read FTitleName write FTitleName;
    property DefaultDriver: TDefaultDriver read FDefaultDriver write FDefaultDriver;
    function IsAlias: Boolean;
    function CatcheDirectory: String;
    Procedure Execute;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents(´Zanela´, [TAddStandardAlias]);
end;

{ TAddStandardAlias }

function TAddStandardAlias.CatcheDirectory: String;
var TitleName: string;
  lpItemID: PItemIDList;
  BrowseInfo: TBrowseInfo;
  DisplayName: array[0..MAX_PATH] of char;
  TempPath: array[0..MAX_PATH] of char;
begin
  FillChar(BrowseInfo, sizeof(TBrowseInfo), 0);
  BrowseInfo.hwndOwner := Application.Handle;
  BrowseInfo.pszDisplayName := @DisplayName;
  TitleName := FTitleName;
  BrowseInfo.lpszTitle := PChar(TitleName);
  BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
  lpItemID := SHBrowseForFolder(BrowseInfo);
  if lpItemId <> nil then
  begin
    SHGetPathFromIDList(lpItemID, TempPath);
    GlobalFreePtr(lpItemID);
    Result := TempPath;
  end else
  Result := ´´;

end;

constructor TAddStandardAlias.Create(AOwner: TComponent);
begin
Inherited Create(AOwner);
end;

destructor TAddStandardAlias.Destroy;
begin
inherited Destroy;
end;

procedure TAddStandardAlias.Execute;
var cDefaultDriver, cPath: String;
begin

if (FAlias=´´) or (Session.IsAlias(FAlias)) then exit;

 cPath:= CatcheDirectory;

if not (cPath=´´) then
  begin
    Case FDefaultDriver of
      ddParadox: cDefaultDriver:= ´PARADOX´;
      dddBase: cDefaultDriver := ´dBase´;
      ddAsciiDRV: cDefaultDriver := ´ASCIIDRV´;
    end;
    try
    Session.AddStandardAlias(FAlias, cPath, cDefaultDriver);
    Session.SaveConfigFile;
    Session.Close;
    except
    // Don´t raise any exception.
    end;
  end
end;

function TAddStandardAlias.IsAlias: Boolean;
begin
Result:= Session.IsAlias(FAlias);
end;

end.



GOSTEI 0
POSTAR