Fórum Erro ao Compilar código no Delphi 10.2 - RX #601021
08/03/2019
0
Estou utilizando o Delphi 10.2 - RX. Abaixo está o código separados por paginas criadas dentro do projeto. Acontece que está dando um erro ao compilar. Preciso da vossa ajuda, pois só posso dar continuidade no meu projeto apos essa etapa.
===== FORMULARIO PRINCIPAL ===== uPrincial (frmPrincipal)
unit uPrincipal;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
type
TfrmPrincipal = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmPrincipal: TfrmPrincipal;
implementation
{$R *.dfm}
end.===== DATA MODULE ===== uDmDados (dmDados)
1> FDConnection1 da palheta FireDAC
unit uDmDados;
interface
uses
System.SysUtils, System.Classes, FireDAC.Stan.Intf, FireDAC.Stan.Option,
FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def,
FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Phys.FB,
FireDAC.Phys.FBDef, FireDAC.VCLUI.Wait, Data.DB, FireDAC.Comp.Client,
uConfigBanco, uBiblioteca, Vcl.Forms;
type
TdmDados = class(TDataModule)
FDConnection1: TFDConnection;
procedure DataModuleCreate(Sender: TObject);
private
procedure CarregaBanco;
{ Private declarations }
public
{ Public declarations }
end;
var
dmDados: TdmDados;
implementation
{%CLASSGROUP 'Vcl.Controls.TControl'}
{$R *.dfm}
procedure TdmDados.CarregaBanco;
begin
try
FDConnection1.Params.Database := GetValorInicial(ExtractFieldName(Application.ExeName), 'CONFIGURACAO', 'LOCAL'); // erro ???
FDConnection1.Connected := True;
except
frmConfigBanco.ShowModal;
end;
end;
procedure TdmDados.DataModuleCreate(Sender: TObject);
begin
CarregaBanco;
end;
end.===== UNIT CRIADA A MÃO ====== uBiblioteca
unit uBiblioteca; interface uses IniFiles, System.SysUtils; procedure SetValorInicial(pLocal, pSessao, pSubSessao, pValor: string); function GetValorInicial (pLocal, pSessao, pSubSessao: string): string; implementation procedure SetValorInicial(pLocal, pSessao, pSubSessao, pValor: string); var vArquivo: TIniFile; begin vArquivo := TIniFile.Create(pLocal); vArquivo.WriteString(pSessao, pSubSessao, pValor); vArquivo.Free; end; function GetValorInicial (pLocal, pSessao, pSubSessao: string): string; var vArquivo : TIniFile; begin vArquivo := TIniFile.Create(pLocal); Result := vArquivo.ReadString(pSessao, pSubSessao, ''); vArquivo.Free; end; end.
===== FORMULARIO PRA CONFIGURAR O BANCO ===== uConfigBanco (frmConfigBanco)
1> Edit
1> Button
1> OpenDialog
unit uConfigBanco;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
Vcl.ExtCtrls, // coloquei essa Vcl na mão
uBiblioteca;
type
TfrmConfigBanco = class(TForm)
Edit1: TEdit;
Button1: TButton;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
private
procedure Configura;
{ Private declarations }
public
{ Public declarations }
end;
var
frmConfigBanco: TfrmConfigBanco;
implementation
{$R *.dfm}
{ TfrmConfigBanco }
procedure TfrmConfigBanco.Button1Click(Sender: TObject);
begin
Configura;
end;
procedure TfrmConfigBanco.Configura;
var vFileName :string;
begin
//alt+f11 pra jogar a biblioteca dentro de interface
if OpenDialog1.Execute then
begin
Edit1.Text := OpenDialog1.FileName;
vFileName := ExtractFilePath(Application.ExeName) + 'config.ini';
SetValorInicial(vFileName, 'CONFIGURACAO', 'LOCAL', Edit1.Text);
end;
end;
end.==========================================================================
Acima esta as linhas de comando separadas por paginas
Quando clico em Shift + F9, o Delphi me da duas mensagens de erro:
[dcc32 Error] uDmDados.pas(35): E2250 There is no overloaded version of 'ExtractFieldName' that can be called with these arguments
e
[dcc32 Fatal Error] Cardigan.dpr(6): F2063 Could not compile used unit 'uDmDados.pas'
Segue imagem da tela: https://prnt.sc/mvayv4
Rubens Pena
Curtir tópico
+ 0Posts
10/03/2019
Rubens Pena
Estou utilizando o Delphi 10.2 - RX. Abaixo está o código separados por paginas criadas dentro do projeto. Acontece que está dando um erro ao compilar. Preciso da vossa ajuda, pois só posso dar continuidade no meu projeto apos essa etapa.
===== FORMULARIO PRINCIPAL ===== uPrincial (frmPrincipal)
unit uPrincipal;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
type
TfrmPrincipal = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmPrincipal: TfrmPrincipal;
implementation
{$R *.dfm}
end.===== DATA MODULE ===== uDmDados (dmDados)
1> FDConnection1 da palheta FireDAC
unit uDmDados;
interface
uses
System.SysUtils, System.Classes, FireDAC.Stan.Intf, FireDAC.Stan.Option,
FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def,
FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Phys.FB,
FireDAC.Phys.FBDef, FireDAC.VCLUI.Wait, Data.DB, FireDAC.Comp.Client,
uConfigBanco, uBiblioteca, Vcl.Forms;
type
TdmDados = class(TDataModule)
FDConnection1: TFDConnection;
procedure DataModuleCreate(Sender: TObject);
private
procedure CarregaBanco;
{ Private declarations }
public
{ Public declarations }
end;
var
dmDados: TdmDados;
implementation
{%CLASSGROUP ''Vcl.Controls.TControl''}
{$R *.dfm}
procedure TdmDados.CarregaBanco;
begin
try
FDConnection1.Params.Database := GetValorInicial(ExtractFieldName(Application.ExeName), ''CONFIGURACAO'', ''LOCAL''); // erro ???
FDConnection1.Connected := True;
except
frmConfigBanco.ShowModal;
end;
end;
procedure TdmDados.DataModuleCreate(Sender: TObject);
begin
CarregaBanco;
end;
end.===== UNIT CRIADA A MÃO ====== uBiblioteca
unit uBiblioteca; interface uses IniFiles, System.SysUtils; procedure SetValorInicial(pLocal, pSessao, pSubSessao, pValor: string); function GetValorInicial (pLocal, pSessao, pSubSessao: string): string; implementation procedure SetValorInicial(pLocal, pSessao, pSubSessao, pValor: string); var vArquivo: TIniFile; begin vArquivo := TIniFile.Create(pLocal); vArquivo.WriteString(pSessao, pSubSessao, pValor); vArquivo.Free; end; function GetValorInicial (pLocal, pSessao, pSubSessao: string): string; var vArquivo : TIniFile; begin vArquivo := TIniFile.Create(pLocal); Result := vArquivo.ReadString(pSessao, pSubSessao, ''''); vArquivo.Free; end; end.
===== FORMULARIO PRA CONFIGURAR O BANCO ===== uConfigBanco (frmConfigBanco)
1> Edit
1> Button
1> OpenDialog
unit uConfigBanco;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
Vcl.ExtCtrls, // coloquei essa Vcl na mão
uBiblioteca;
type
TfrmConfigBanco = class(TForm)
Edit1: TEdit;
Button1: TButton;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
private
procedure Configura;
{ Private declarations }
public
{ Public declarations }
end;
var
frmConfigBanco: TfrmConfigBanco;
implementation
{$R *.dfm}
{ TfrmConfigBanco }
procedure TfrmConfigBanco.Button1Click(Sender: TObject);
begin
Configura;
end;
procedure TfrmConfigBanco.Configura;
var vFileName :string;
begin
//alt+f11 pra jogar a biblioteca dentro de interface
if OpenDialog1.Execute then
begin
Edit1.Text := OpenDialog1.FileName;
vFileName := ExtractFilePath(Application.ExeName) + ''config.ini'';
SetValorInicial(vFileName, ''CONFIGURACAO'', ''LOCAL'', Edit1.Text);
end;
end;
end.==========================================================================
Acima esta as linhas de comando separadas por paginas
Quando clico em Shift + F9, o Delphi me da duas mensagens de erro:
[dcc32 Error] uDmDados.pas(35): E2250 There is no overloaded version of ''ExtractFieldName'' that can be called with these arguments
e
[dcc32 Fatal Error] Cardigan.dpr(6): F2063 Could not compile used unit ''uDmDados.pas''
Segue imagem da tela: https://prnt.sc/mvayv4
Gostei + 0
11/03/2019
Raylan Zibel
Gostei + 0
11/03/2019
Hélio Devmedia
Gostei + 0
13/03/2019
Rubens Pena
No formulário de conf do banco acrescentei duas linhas de codigo segue abaixo:
procedure TfrmConfigBanco.Configura;
var vFileName :string;
begin
//alt+f11 pra jogar a biblioteca dentro de interface
if OpenDialog1.Execute then
begin
Edit1.Text := OpenDialog1.FileName;
vFileName := ExtractFilePath(Application.ExeName) + 'config.ini';
SetValorInicial(vFileName, 'CONFIGURACAO', 'LOCAL', Edit1.Text);
ShowMessage('Banco de Dados Configurado.'); //codigo acrescentado
Self.Close; //codigo acrescentado
end;
end;E no DataModule fiz apenas uma alteração em uma das linhas de codigo
procedure TdmDados.CarregaBanco;
begin
try
FDConnection1.Params.Database := GetValorInicial(ExtractFieldName(Application.ExeName) + 'config.ini', 'CONFIGURACAO', 'LOCAL'); // codigo modificado nessa linha
FDConnection1.Connected := True;
except
frmConfigBanco.ShowModal;
end;Onde será o erro dessa vez? :)
Gostei + 0
13/03/2019
Hélio Devmedia
Gostei + 0
13/03/2019
Rubens Pena
Gostei + 0
13/03/2019
Hélio Devmedia
Na verdade olhando a Imagem da sua depuração, percebi que onde está
GetValorInicial(ExtractFieldName(Application.ExeName) + 'config.ini', 'CONFIGURACAO', 'LOCAL'); // codigo modificado nessa linha
o que você deveria utilizar é ExtractFilePath(), para ele retornar o caminho do executável com uma '\\' (barra) no final sem o nome do executável, para concatenar com o nome do arquivo de configuração.
faça um teste e depois diga se funcionou.
Gostei + 0
13/03/2019
Rubens Pena
Na verdade olhando a Imagem da sua depuração, percebi que onde está
GetValorInicial(ExtractFieldName(Application.ExeName) + 'config.ini', 'CONFIGURACAO', 'LOCAL'); // codigo modificado nessa linha
o que você deveria utilizar é ExtractFilePath(), para ele retornar o caminho do executável com uma '\\\\' (barra) no final sem o nome do executável, para concatenar com o nome do arquivo de configuração.
faça um teste e depois diga se funcionou.
FDConnection1.Params.Database := GetValorInicial(ExtractFilePath(Application.ExeName) 'config.ini', 'CONFIGURACAO', 'LOCAL');
>> entre o .ExeName) e 'config, tem um sinal de mais.
Não precisou colocar a '\\\\', ele ta gravando o caminho direitinho, que no meu caso é LOCAL=R:\\Rubens\\_MEGA DOWNLOADS\\Projeto Card em Delphi\\Dados\\DADOS.FDB
Obrigado pela atenção. Agora vou dar continuidade no meu projeto. Esse projeto é pequeno, mais de grande aprendizado para mim. Ele é para imprimir umas etiquetas.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)