Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda Com Ini


VDLR

Pergunta

Pessoal peguei um artigo na internet para conectar o sistema através do INI, e tentei adaptar ao meu sistema, só que estou recebendo diversos erros que não seu como corrigir, alguém pode me ajudar.

Os códigos são estes:

procedure Gravar_Configuracao(Url, Usr, pws : String);
var Banco : TIniFile;
Begin
  Try
    SetCurrentDir(ExtractFilePath(Application.ExeName));
    Banco := TIniFile.Create(GetCurrentDir + '\\Phoenix2\C\VDL - Controle SMS\BDados\BDSMS.GDB.ini');
    Banco.WriteString('DATABASE','\\Phoenix2\C\VDL - Controle SMS\BDados\BDSMS.GDB',URL);
    Banco.WriteString('DATABASE','SYSDBA',USR);
    Banco.WriteString('DATABASE','masterkey',PWS);
  Finnaly
    Banco.Free;
  End;
End;

procedure Ler_Configuracao(var Url: String; var Usr: String; var pws: String);
Begin
  Try
    Banco := TIniFile.create(GetCurrentDir+'\\Phoenix2\C\VDL - Controle SMS\BDados\BDSMS.GDB.ini');
    URL := Banco.WriteString('DATABASE','\\Phoenix2\C\VDL - Controle SMS\BDados\BDSMS.GDB',URL);
    USR := Banco.WriteString('DATABASE','SYSDBA',USR);
    PWS := Banco.WriteString('DATABASE','masterkey',PWS);
  Finnaly
    Banco.Free;
  End;
End;

procedure TFRlembrdoc.FormCreate(Sender: TObject);
begin
  SetCurrentDir(ExtractFilePath(Application.ExeName));
  IBContrSMS.Close;
  Ler_Configuracao(Url,Usr,Pwd);
  IBContrSMS.Params.Add('user_name='+USR);
  IBContrSMS.params.add('password ='+PWD);
  IBContrSMS.DatabaseName := Url;
  IBContrSMS.Open;
end;

Os erros são este:

[Error] LembrDoc.pas(114): Undeclared identifier: 'Finnaly'

[Error] LembrDoc.pas(115): Missing operator or semicolon

[Error] LembrDoc.pas(116): EXCEPT or FINALLY expected

[Error] LembrDoc.pas(122): Undeclared identifier: 'Banco'

[Error] LembrDoc.pas(123): Missing operator or semicolon

[Error] LembrDoc.pas(124): Missing operator or semicolon

[Error] LembrDoc.pas(125): Missing operator or semicolon

[Error] LembrDoc.pas(126): Undeclared identifier: 'Finnaly'

[Error] LembrDoc.pas(127): Missing operator or semicolon

[Error] LembrDoc.pas(128): EXCEPT or FINALLY expected

[Error] LembrDoc.pas(244): Undeclared identifier: 'Url'

[Error] LembrDoc.pas(244): Types of actual and formal var parameters must be identical

[Fatal Error] LembreteDoc.dpr(5): Could not compile used unit 'LembrDoc.pas'

Abraço

Valdecir

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Seu código esta cheio de erros, entre eles , erro de escrita e erro de sintaxe.

[Error] LembrDoc.pas(114): Undeclared identifier: 'Finnaly'

Nesta linha, troca o Finnaly por finally

Lembrando quando você for usar a condição TRY ele tem um END proprio

ASSIM a sintaxe do TRY é

TRY

//codição

EXCEPT

//condição

END; //este end é da condição TRY, ele é obrigatorio

ou

TRY

BEGIN

//condições

//condiçõoes

END;

EXCEPT

BEGIN

//condições

//condições

END;

END; //este END é do TRY

ou, no lugar do EXCEPT você pode usar o FINALLY

o código abaixo do EXCEPT só ocorre quando o código dentro dos primeiros BEGIN e END do try da erro ao executar, exemplo:

TRY

strtoint('aaaa'); // isso vai dar erro

EXCEPT

showmessage('Não foi possivel transformar!!!')

END;

Testa esse código fora do delphi, porque se você testar ele com o F9 do delphi o delphi vai retornar o erro pra você.

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, obrigado por sua atenção.

Procurei corrigir alguns erros e ver algumas matérias a respeito do INI, e corrigi o código, mas continua dando erro.

Não tem como você me apontar os erros ??

Como eu testaria esse código fora do delphi ??

procedure TFRlembrdoc.Gravar_Configuracao(Url, Usr, pws : String);
var Banco : TIniFile;
Begin
  Try
    SetCurrentDir(ExtractFilePath(Application.ExeName));
    Banco := TIniFile.Create(GetCurrentDir + '\database.ini');
    Banco.WriteString('DATABASE','\\Phoenix2\C\VDL - Controle SMS\BDados\BDSMS.GDB',URL);
    Banco.WriteString('DATABASE','SYSDBA',USR);
    Banco.WriteString('DATABASE','masterkey',PWS);
  Finally
    Banco.Free;
  End;
End;

[code]procedure TFRlembrdoc.Ler_Configuracao(var Banco : TIniFile;var Url: String; var Usr: String; var pws: String);
Begin
  Try
    Banco := TIniFile.create(GetCurrentDir+'\database.ini');
    URL := Banco.WriteString('DATABASE','\\Phoenix2\C\VDL - Controle SMS\BDados\BDSMS.GDB',URL);
    USR := Banco.WriteString('DATABASE','SYSDBA',USR);
    PWS := Banco.WriteString('DATABASE','masterkey',PWS);
  Finally
    Banco.Free;
  End;
End;

procedure TFRlembrdoc.FormCreate(Sender: TObject);
begin
  SetCurrentDir(ExtractFilePath(Application.ExeName));
  IBContrSMS.Close;
  Ler_Configuracao(Url,Usr,Pws);
  IBContrSMS.Params.Add('user_name=SYSDBA'+USR);
  IBContrSMS.params.add('password=masterkey'+PWS);
  IBContrSMS.DatabaseName := '\\Phoenix2\C\VDL - Controle SMS\BDados\BDSMS.GDB'+URL;
  IBContrSMS.Open;
end;

Os erros são estes

[Warning] LembrDoc.pas(117): Variable 'Banco' might not have been initialized

[Error] LembrDoc.pas(125): Incompatible types: 'String' and 'procedure, untyped pointer or untyped parameter'

[Error] LembrDoc.pas(126): Incompatible types: 'String' and 'procedure, untyped pointer or untyped parameter'

[Error] LembrDoc.pas(127): Incompatible types: 'String' and 'procedure, untyped pointer or untyped parameter'

[Error] LembrDoc.pas(131): Illegal character in input file: '}' ($7D)

[Error] LembrDoc.pas(243): Undeclared identifier: 'Url'

[Error] LembrDoc.pas(243): Types of actual and formal var parameters must be identical

[Fatal Error] LembreteDoc.dpr(5): Could not compile used unit 'LembrDoc.pas'

Abraços

Valdecir

:(

Link para o comentário
Compartilhar em outros sites

  • 0
[Warning] LembrDoc.pas(117): Variable 'Banco' might not have been initialized
Esta mensagem pode ser ignorada (é apenas uma advertência)

[Error] LembrDoc.pas(125): Incompatible types: 'String' and 'procedure, untyped pointer or untyped parameter'
[Error] LembrDoc.pas(126): Incompatible types: 'String' and 'procedure, untyped pointer or untyped parameter'
[Error] LembrDoc.pas(127): Incompatible types: 'String' and 'procedure, untyped pointer or untyped parameter'
[Error] LembrDoc.pas(131): Illegal character in input file: '}' ($7D)

Estes erros, você terá que verificar, pois estão numa parte do código que não está postado aqui.

[Error] LembrDoc.pas(243): Undeclared identifier: 'Url'
A mensagem diz que o identificador Url não está declarado. Não dá para advinhar, já que a unit está com você e não sábe-se o que está em que linha. Mas a linha 243 parece inicialmente se tratar da chamada ao procedimento Ler_Configuracao que você faz no método FormCreate (evento OnCreate do form), já que você passa Url como parâmetro e aparentemente não está declarada globalmente. Mas o erro seguinte:
[Error] LembrDoc.pas(243): Types of actual and formal var parameters must be identical
Aparentemente descarta isto ou, se for verdade, você declarou as variáveis Usr e Psw diferentes de String(tipo esperado pelo prodedimento).

Pessoal será que não tem como me ajudar com isto ????
Como vê não dá para resolver erros de compilação virtualmente. Qual sua dificuldade em entender as mensagens e tentar resolvê-las? Observe que sempre ao lado do nome da unit que tem o erro, é apresentado entre parênteses o número (provável) da linha onde o erro ocorre.
Link para o comentário
Compartilhar em outros sites

  • 0

Cara muito obrigado por sua atenção.

Estes problemas consegui resolver, só que agora estou recebendo este erro e o sistema não abre.

DEBUGGER EXCEPRION NOTIFICATION

Project LembreteDoc.Exe raised exception class EIBClienteError with message

'Database name is missing'. Process Stopped. Use step or run to continue.

Cara já quebrei a cabeça, mas não consegui resolver. Sou novato em programação estou aprendendo meio na marra, sozinho se vocês tiverem como me dar esta força.

A idéia de criar este arquivo INI é para o sistema trabalhar em rede, abaixo esta a Unit inteira será que ajuda.

unit LembrDoc;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBTable, IBDatabase, StdCtrls, Grids,

DBGrids, Buttons, Registry, IBQuery, IniFiles, ExtCtrls;

type

TFRlembrdoc = class(TForm)

IBContrSMS: TIBDatabase;

IBTransaction1: TIBTransaction;

TBcaddoc: TIBTable;

TBcaddocREG: TIntegerField;

TBcaddocDESCRDOC: TIBStringField;

TBcaddocORGAOEXP: TIBStringField;

TBcaddocDTEXP: TDateField;

TBcaddocDTVCTO: TDateField;

TBcaddocDTVCTOANT: TDateField;

TBcaddocDTAVVCTO: TDateField;

TBcaddocDTRENOVACAO: TDateField;

TBcaddocDTCAD: TDateField;

TBcaddocCADUSUARIO: TIBStringField;

TBcaddocALTUSUARIO: TIBStringField;

TBcaddocDTALTUSUARIO: TDateField;

TBcaddocOBSERVACAO: TIBStringField;

DScaddoc: TDataSource;

BTiniciarsms: TBitBtn;

BTcancelar: TBitBtn;

Edit1: TEdit;

TBcadequip: TIBTable;

TBcadequipREG: TIntegerField;

TBcadequipDESCRICAO: TIBStringField;

TBcadequipIDENTIFICACAO: TIBStringField;

TBcadequipNRATIVOFIXO: TIBStringField;

TBcadequipDTCALIBR: TDateField;

TBcadequipDTVCTOCALIBR: TDateField;

TBcadequipDTAVCALIBR: TDateField;

TBcadequipDTVCTOANT: TDateField;

TBcadequipDTCADASTRO: TDateField;

TBcadequipCADUSUARIO: TIBStringField;

TBcadequipALTUSUARIO: TIBStringField;

TBcadequipDTALTUSUARIO: TDateField;

TBcadequipOBSERVACAO: TIBStringField;

TBcadequipFREQCALIBR: TIBStringField;

DScadequip: TDataSource;

TBcadextintor: TIBTable;

TBcadextintorREG: TIntegerField;

TBcadextintorDESCRICAO: TIBStringField;

TBcadextintorMARCA: TIBStringField;

TBcadextintorTIPO: TIBStringField;

TBcadextintorNREXTINTOR: TIBStringField;

TBcadextintorATIVOFIXO: TIBStringField;

TBcadextintorLOCAL: TIBStringField;

TBcadextintorABNTNR: TIBStringField;

TBcadextintorFOGOCLASSE: TIBStringField;

TBcadextintorRECARGA: TDateField;

TBcadextintorVCTORECARGA: TDateField;

TBcadextintorDTAVRECARGA: TDateField;

TBcadextintorVCTOANTRECARGA: TDateField;

TBcadextintorTESTEHIDR: TDateField;

TBcadextintorVCTOTESTEHIDR: TDateField;

TBcadextintorDTAVTESTEHIDR: TDateField;

TBcadextintorVCTOANTHIDR: TDateField;

TBcadextintorDTCADASTRO: TDateField;

TBcadextintorCADUSUARIO: TIBStringField;

TBcadextintorALTUSUARIO: TIBStringField;

TBcadextintorDTALTUSUARIO: TDateField;

TBcadextintorOBSERVACAO: TIBStringField;

DScadextintor: TDataSource;

GroupBox1: TGroupBox;

DBGrid1: TDBGrid;

Panel1: TPanel;

GroupBox2: TGroupBox;

DBGrid2: TDBGrid;

GroupBox3: TGroupBox;

DBGrid3: TDBGrid;

Label1: TLabel;

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure BTcancelarClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

procedure BTiniciarsmsClick(Sender: TObject);

procedure DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

procedure DBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

Procedure CriaStartup(LembreteDoc : String);

procedure Gravar_Configuracao(Url, Usr, pws : String);

procedure Ler_Configuracao(var Url: String; var Usr: String; var pws: String);

end;

var

FRlembrdoc: TFRlembrdoc;

implementation

uses TypInfo;

{$R *.dfm}

procedure TFRlembrdoc.Gravar_Configuracao(Url, Usr, pws : String);

var BDSMS : TIniFile;

Begin

Try

SetCurrentDir(ExtractFilePath(Application.ExeName));

BDSMS := TIniFile.Create(GetCurrentDir + '\Database.ini');

BDSMS.WriteString('Database','Local',URL);

BDSMS.WriteString('Database','user_name',USR);

BDSMS.WriteString('Database','password',PWS);

Finally

BDSMS.Free;

End;

End;

procedure TFRlembrdoc.Ler_Configuracao(var Url: String; var Usr: String; var pws: String);

var BDSMS : TIniFile;

Begin

Try

BDSMS := TIniFile.create(GetCurrentDir+'\Database.ini');

URL := BDSMS.ReadString('Database','\\Phoenix2\C\VDL - Controle SMS\BDados\BDSMS.GDB',URL);

USR := BDSMS.ReadString('Database','SYSDBA',USR);

PWS := BDSMS.ReadString('Database','masterkey',PWS);

Finally

BDSMS.Free;

End;

End;

Procedure TFRlembrdoc.CriaStartup(LembreteDoc : String);

var Reg : TRegistry;

Begin

Reg := TRegistry.Create;

Reg.RootKey := HKEY_LOCAL_MACHINE;

Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run', True);

Reg.WriteString(LembreteDoc, '"' + ParamStr(0) + '"');

Reg.CloseKey;

Reg.Free;

End;

procedure TFRlembrdoc.FormClose(Sender: TObject; var Action: TCloseAction);

begin

TBcaddoc.Close;

TBcadequip.Close;

TBcadextintor.Close;

IBContrSMS.Connected:=False;

Action := caFree;

FRlembrdoc := NIL;

end;

procedure TFRlembrdoc.BTcancelarClick(Sender: TObject);

begin

Application.Terminate;

end;

procedure TFRlembrdoc.FormShow(Sender: TObject);

var iVezes:Byte;

Var url,usr,pws : String;

begin

iVezes := 0;

While not IBContrSMS.Connected and (iVezes < 100) do

begin

try

IBContrSMS.Open;

except

Inc(iVezes);

Sleep(400);

end;

end;

if not IBContrSMS.Connected then

IBContrSMS.Open; // Força a exceção para ver o erro

SetCurrentDir(ExtractFilePath(Application.ExeName));

IBContrSMS.Close;

Ler_Configuracao(Url,Usr,pws);

IBContrSMS.Params.Add('SYSDBA'+Usr);

IBContrSMS.params.add('masterkey'+PWS);

IBContrSMS.DatabaseName := '\\Phoenix2\C\VDL - Controle SMS\BDados\BDSMS.GDB'+URL;

IBContrSMS.Open;

CriaStartup('LembreteSMS');

Edit1.Text := DateToStr(Date);

TBcaddoc.Open;

TBcaddoc.IndexFieldNames := 'DTAVVCTO';

TBcaddoc.Filtered:=False;

TBcaddoc.Filter:= 'DTAVVCTO <'+QuotedStr(FormatDateTime('MM/dd/yyyy', StrToDate(Edit1.Text)));

TBcaddoc.Filtered:=True;

TBcadequip.Open;

TBcadequip.IndexFieldNames := 'DTAVCALIBR';

TBcadequip.Filtered:=False;

TBcadequip.Filter:= 'DTAVCALIBR <'+QuotedStr(FormatDateTime('MM/dd/yyyy', StrToDate(Edit1.Text)));

TBcadequip.Filtered:=True;

TBcadextintor.Open;

TBcadextintor.IndexFieldNames := 'DTAVRECARGA';

TBcadextintor.Filtered:=False;

TBcadextintor.Filter:= 'DTAVRECARGA <'+QuotedStr(FormatDateTime('MM/dd/yyyy', StrToDate(Edit1.Text)));

TBcadextintor.Filtered:=True;

If (TBcaddocDTAVVCTO.Text = '') And (TBcadequipDTAVCALIBR.Text = '') And (TBcadextintorDTAVRECARGA.Text = '') then

Application.Terminate;

end;

procedure TFRlembrdoc.DBGrid1DrawColumnCell(Sender: TObject;

const Rect: TRect; DataCol: Integer; Column: TColumn;

State: TGridDrawState);

begin

If TBcaddoc.Fieldbyname('DTAVVCTO').Value<Date then

Begin

DBGrid1.Canvas.Font.Color := clRed;

DBGrid1.DefaultDrawDataCell(Rect, DBGrid1.columns[datacol].field, state);

end;

end;

procedure TFRlembrdoc.BTiniciarsmsClick(Sender: TObject);

begin

WinExec('C:\VDLR - Controle SMS\Controle SMS\ControleSMS.exe', SW_SHOWNORMAL);

FRlembrdoc.Close;

end;

procedure TFRlembrdoc.DBGrid2DrawColumnCell(Sender: TObject;

const Rect: TRect; DataCol: Integer; Column: TColumn;

State: TGridDrawState);

begin

If TBcadequip.Fieldbyname('DTAVCALIBR').Value<Date then

Begin

DBGrid2.Canvas.Font.Color := clRed;

DBGrid2.DefaultDrawDataCell(Rect, DBGrid2.columns[datacol].field, state);

end;

end;

procedure TFRlembrdoc.DBGrid3DrawColumnCell(Sender: TObject;

const Rect: TRect; DataCol: Integer; Column: TColumn;

State: TGridDrawState);

begin

if ((TBcadextintor.Fieldbyname('DTAVRECARGA').Value<Date) or (TBcadextintor.Fieldbyname('DTAVTESTEHIDR').Value<Date)) then

Begin

DBGrid3.Canvas.Font.Color := clRed;

DBGrid3.DefaultDrawDataCell(Rect, DBGrid3.columns[datacol].field, state);

end;

end;

procedure TFRlembrdoc.FormCreate(Sender: TObject);

Var url,usr,pws : String;

begin

Gravar_Configuracao(Url,Usr,pws);

end;

end.

Abraço

Valdecir

Link para o comentário
Compartilhar em outros sites

  • 0

Vixe!!! :blink:

A mensagem 'Database name is missing' acho que é bem clara. Aparentemente não está sendo encontrado o banco de dados ou algo parecido.

Na verdade, acredito que você esteja passando "nulo" para o nome do banco ao abrí-lo. Observe:

1) no OnCreate do form você chama o Grava_Configuracao, passando as variáveis locais, não inicializadas. Ou seja, não tem nada nelas e, além de tudo, se o arquivo existir, você queima seu conteúdo;

2) no evento OnShow do form você, inicialmente, tenta abrir o banco de dados sem ter ainda carregado para ele os parâmetros que você deveria ler do arquivo INI; A seguir, após tentar conectar ao banco (fazendo até 100 tentativas :o), você fecha a conexão, lê as configurações do arquivo e concatena as informações, até onde sei de forma incorreta. Os parâmetros para o banco devem ser:

user=<nome usuario>

password=<senha>

ou seja:

IBContrSMS.Params.Add('user='+Usr);

IBContrSMS.params.Add('password='+PWS);

SYSDBA é o usuário padrão (administrador) do banco de dados IB ou FB;

masterkey é a senha padrão para o administrador.

Mas, dê também uma olhada na procedure Ler_Configuracao:

...
URL := BDSMS.ReadString('Database','\\Phoenix2\C\VDL - Controle SMS\BDados\BDSMS.GDB',URL);
USR := BDSMS.ReadString('Database','SYSDBA',USR);
PWS := BDSMS.ReadString('Database','masterkey',PWS);
...
você está lendo as chaves incorretamente. Voce criou as chaves no arquivo INI com os seguintes nomes: BDSMS.WriteString('Database','Local',URL); BDSMS.WriteString('Database','user_name',USR); BDSMS.WriteString('Database','password',PWS); então, você deveria lê-los assim: URL := BDSMS.ReadString('Database','Local', '\\Phoenix2\C\VDL - Controle SMS\BDados\BDSMS.GDB'); USR := BDSMS.ReadString('Database','user_name', 'SYSDBA'); PWS := BDSMS.ReadString('Database','password', 'masterkey'); O segundo parâmetro é o nome da sessão e o terceiro é o valor padrão, caso a chave não seja encontrada. Acho que o procedimento seria, no OnCreate do form, verifica se o arquivo INI existe. Se não existir cria as chaves com valores padrão; Em seguida lê o conteúdo do arquivo; Inicializa os parâmetros da conexão e tenta abrí-la. Não há razão para ficar tentando por tantas vezes. outra coisa, para evitar problemas futuros, utilize corretamente o try...finally no procedimento Gravar_Configuracao, deveria fica assim:
...
  SetCurrentDir(ExtractFilePath(Application.ExeName));
  BDSMS := TIniFile.Create(GetCurrentDir + '\Database.ini');
Try
  BDSMS.WriteString('Database','Local',URL);
  BDSMS.WriteString('Database','user_name',USR);
  BDSMS.WriteString('Database','password',PWS);
Finally
  BDSMS.Free;
End;
...

você está utilizando o Finally para garantir que a memória alocada por BDSMS seja liberada. Certo?! Bom, se você coloca o create dela dentro do Try e ocorre uma exeção no momento da criação, você irá liberar algo que ainda não foi alocado. Esteja atento a esses detalhes. ;)

[]s

Link para o comentário
Compartilhar em outros sites

  • 0

Micheus, muito obrigado pela atenção.

Fiz as correções anotadas por você, só que estou recebendo esta mensagem de erro ao copilar o sistema.

DEBUGGER EXCEPRION NOTIFICATION

Project LembreteDoc.Exe raised exception class EIBClienteError with message

'DPB Constant (User) is unknown'. Process Stopped. Use step or run to continue.

Clicando só no executável recebo esta

'DPB Constant (User) is unknown'

Logo após esta

'Unrecognized Database parameter block'

Cara deu usuário desconhecido, estou usando usuário patrão do Interbase.

Você saberia me dizer como resolver isto, tem que fazer alguma configuração no Interbase.

Como disse sou novato em programação é minha primeira tentativa em rede, pensei que fosse ser mais simples, mas só tem dado pau.

Cara me ajuda, parece faltar tão pouco.

Abraços

Valdecir

:( :(

Link para o comentário
Compartilhar em outros sites

  • 0

Valdecir, já tinha lido seu post, mas não estava podendo averiguar alguns detalhes.

Basicamente, a propriedade Params do seu DataBase deverá ter essas linhas (considerando o usuário padrão):

user_name=SYSDBA

password=masterkey

ou seja, quando eu coloquei no posta anterior:

user=<nome usuario>

password=<senha>

ou seja:

IBContrSMS.Params.Add('user='+Usr);

IBContrSMS.params.Add('password='+PWS);

Eu cometi um erro, porque afirmei algo que "lembrei de cabeça", e obviamente, agora, vejo que minha cabeça tá meio capenga. :D

Observe que coloquei user=, quando deveria ter colocado user_name=, induzindo você ao erro. Esta deve ser a causa dasd mensagens:

DEBUGGER EXCEPRION NOTIFICATION

Project LembreteDoc.Exe raised exception class EIBClienteError with message

'DPB Constant (User) is unknown'. Process Stopped. Use step or run to continue.

e
'DPB Constant (User) is unknown'
Desculpe-me.

Corrija isto e verifique como fica.

[]s

Link para o comentário
Compartilhar em outros sites

  • 0

Cara fiz a alteração, aquela mensagem parou, só que começou dar algumas de erro no caminho, alterei o caminho para:

\\\Phoenix2:\C:\VDLR - Controle SMS\BDados\BDSMS.GDB

Agora estou recebendo esta mensagem

Unable to complete network request to host ‘’’’

Failed to establish a connection

Unknown win 32 error 52

Parece que isto não tem solução, quando não é uma coisa e outra.

Desculpe a cobrança no post

Abraços

Valdecir

:blink:

Link para o comentário
Compartilhar em outros sites

  • 0

Cara fiz a alteração, aquela mensagem parou, só que começou dar algumas de erro no caminho, alterei o caminho para:

\\\Phoenix2:\C:\VDLR - Controle SMS\BDados\BDSMS.GDB

Agora estou recebendo esta mensagem

Unable to complete network request to host ‘’’’

Failed to establish a connection

Unknown win 32 error 52

Parece que isto não tem solução, quando não é uma coisa e outra.

Desculpe a cobrança no post

Abraços

Valdecir

:blink:

Valdecir, acho que é a forma como você está informando o caminho da rede. Se você está realmente informando:

\\\Phoenix2:\C:\VDLR - Controle SMS\BDados\BDSMS.GDB

acho que o mais correto seria (sem utilizar os dois pontos):

\\Phoenix2\C\VDL - Controle SMS\BDados\BDSMS.GDB

Essa é uma dúvida mais fácil de resolver. Se você tiver acesso a este diretório em design-time, você pode no botãozinho, da propriedade DatabaseName de seu DataBase e localizar o arquivo no local que você está tentando utilizar. Daí não tem erro, você vai estar sabendo como fica o caminho completo (que parece-me será neste último formato).

[]s

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, colocando o caminho desta forma eu recebo esta mensagem.

acho que o mais correto seria (sem utilizar os dois pontos):

\\Phoenix2\C\VDL - Controle SMS\BDados\BDSMS.GDB

I/O error for file “\c\VDLR – ControleSMS\Bdados\BDSMS.GDB’’

Error while trying to open file

Unknown Win32 error 3’.

Por isso alterei

Abraços

Valdecir

Link para o comentário
Compartilhar em outros sites

  • 0

Valdecir, você tentou fazer o que disse antes:

Essa é uma dúvida mais fácil de resolver. Se você tiver acesso a este diretório em design-time, você pode no botãozinho, da propriedade DatabaseName de seu DataBase e localizar o arquivo no local que você está tentando utilizar. Daí não tem erro, você vai estar sabendo como fica o caminho completo (que parece-me será neste último formato).

Porque se você conseguir selecionar o banco desta forma e ativar sem problemas o database, em design-time, não deverá ter problemas em run-time.

Link para o comentário
Compartilhar em outros sites

  • 0

Micheus eu consigo colocar o caminho, mas quando coloco true em connected da o mesmo erro.

Cara isto já deu no saco, não sei mais o que fazer.

Abraços

Valdecir

Mas este com certeza é o melhor meio de você tirar as dúvidas. Quando conseguir conectar, resolverá o problema.

Será que pode ter a ver com nomes longos. Tipo, será que teria que ser digitado \\Phoenix2\C\VDL-Co~1\BDados\BDSMS.GDB, um caminho DOS - ou algo assim?

Já tentou mapear este caminho para uma unidade de rede e utilizá-la?

Link para o comentário
Compartilhar em outros sites

  • 0

Micheus nunca fiz mapeamento de rede, mas e u enxergo esta máquina da minha normalmente.

está complicado não???????

Abraços

Valdecir

:(

Já que mais ninguém sugeriu nada, vamos continuar por este caminho. A título de "teste", tente mapear a unidade. Isso siguinifica que você passará a se referir a este caminho como um drive (disco) no seu computador.

Pelo caminho que você está utilizando parece que todo o disco C da máquina Phoenix2 está compartilhado, é isto? Se for não é o tipo de coisa mais aconselhável. Normalmente você compartilha apenas uma determinada pasta, assim evita que os usuários façam algum tipo de estrago "sem querer".

Mapear unidade de rede não é complicado. Mas se a pasta compartilhada tiver restrições de acesso, só determinado grupo de usuário pode se conectar, daí pode ser um pouco mais chato. Acho que não parece ser o seu caso.

Se estiver utilizando Win95 ou Win98 este link (no 2ºtópico - Acessando discos e pastas compartilhados) explica como fazer. Em W2K e XP é similar, então acho que você não terá dificuldades. Tem esse outro link também. A letra da nova unidade você é que escolhe.

Só para saber, seu servidor de banco de dados é Interbase(IB) mesmo ou FireBird(FB)? As máquinas em questão estão com que versão de Windows?

[]s

Link para o comentário
Compartilhar em outros sites

  • 0

Micheus, beleza

Cara, consegui conectar o banco com este caminho no DatabaseName do IBdatabase

Phoenix2:\VDLR - Controle SMS\BDados\BDSMS.GDB

Mas colocando este caminho nas procedures de criar e ler o arquivo INI dá pau, sei lá deve faltar alguma coisa.

Mas de qualquer forma já é uma vitória.....

Abraços

Valdecir

Link para o comentário
Compartilhar em outros sites

  • 0

Micheus, beleza

Cara, consegui conectar o banco com este caminho no DatabaseName do IBdatabase

Phoenix2:\VDLR - Controle SMS\BDados\BDSMS.GDB

ufa!!! :D

Depois que você colocou que resolveu deste modo, lembre da tal string de conexão. Tem diferença em acessar com o path ou através de um servidor. Dá uma olhada neste artigo e veja se você consegue clarear as idéias - link

Mas colocando este caminho nas procedures de criar e ler o arquivo INI dá pau, sei lá deve faltar alguma coisa.

Mas de qualquer forma já é uma vitória.....

Abraços

Valdecir

Que tipo de problema/mensagem...

Link para o comentário
Compartilhar em outros sites

  • 0

Micheus desculpe não responder antes, estou na correria, fim de mês e começo e bravo.

A mensagem de erro é a seguinte:

Your user name ande password are not definid. Ask your database administrator to set up an InterBase login

Não sei se tem algum erro na formação do arquivo INI.

Abraços

Valdecir

:D

Link para o comentário
Compartilhar em outros sites

  • 0

Micheus desculpe não responder antes, estou na correria, fim de mês e começo e bravo.

A mensagem de erro é a seguinte:

Your user name ande password are not definid. Ask your database administrator to set up an InterBase login

Não sei se tem algum erro na formação do arquivo INI.

Abraços

Valdecir

:D

Já que você disse (no post anterior) que direto do componente você havia consseguido a conexão, então deve estar ocorrendo algum problema com o usuário e senha que você está adicionando na propriedade Params.

Voce tentou depurar o código no momento antes da conexão do database, para certificar-se do conteúdo de Params?

[]s

Link para o comentário
Compartilhar em outros sites

  • 0
Voce tentou depurar o código no momento antes da conexão do database, para certificar-se do conteúdo de Params?

Cara como eu faço isso, nunca fiz.

Abraços

Valdecir

:unsure: :(

Na linha do código, onde você ativa a conexão, você tecla F5 (a linha deve ficar vermelha e um ponto vermelho aparece na margem esquerda do editor). Este procedimento adiciona um Break-point (ponto de parada). Quando você executar seu programa (normalmente via F9), ele irá parar nesta linha no momento em que ela estiver para ser executada. Neste momento você estará devolta a IDE do Delphi e poderá utilizar o avaliador de expressões (diálogo Evaluate/Modify). Na caixa Expression você digita o nome variável/componente que você quer verificar/alterar o conteúdo (tem que por o "caminho" completo se ele estiver noutro lugar que não a unit atual - p.e. um datamodule), por exemplo: IBContrSMS.Params.Text

Deste modo você conseguirá ver o conteúdo da propriedade params. Observe que esta propriedade é um TStings, então você também poderá ver linha a linha se utilizar IBContrSMS.Params[0], IBContrSMS.Params[1].

Este método é o que se utiliza para identificar problemas deste tipo.

[]s

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...