Hola a todos, disculpen las molestias.
Soy nuevo en delphi
Estoy tratando de crear un login pero tengo un problema y me encantaria que me den una mano para resolver esto
estoy reciviendo el siguiente error:
Código:
[dcc32 Error] inicio.pas(240): E2010 Incompatible types: 'string' and 'Integer'
[dcc32 Error] inicio.pas(241): E2010 Incompatible types: 'string' and 'Integer'
agrego el archivo "inicio.pas" que es en el qe recibo el error
espero que me puedan ayudar. Agradezco de antemano las respuestas que me puedan dar.!
Código Delphi
[-]
unit inicio;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Imaging.pngimage, Vcl.Imaging.jpeg, Vcl.ExtCtrls, Registry;
type
TForm1 = class(TForm)
BtnSalir: TButton;
BtnLogin: TButton;
BtnConfig: TButton;
EditUser: TEdit;
EditPass: TEdit;
Label2: TLabel;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Shape1: TShape;
Shape2: TShape;
Image1: TImage;
procedure ReadRegistry;
procedure WriteRegistry;
procedure LoginCheckSQL;
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormShow(Sender: TObject);
procedure BtnLoginClick(Sender: TObject);
procedure BtnSalirClick(Sender: TObject);
procedure BtnConfigClick(Sender: TObject);
procedure EditUserKeyPress(Sender: TObject; var Key: Char);
procedure EditUserChange(Sender: TObject);
procedure EditUserEnter (SEnder: Tobject);
procedure EditUserExit(Sender: TObject);
procedure EditPassKeyPress(Sender: TObject; var Key: Char);
procedure EditPassChange(Sender: TObject);
procedure EditPassEnter (SEnder: Tobject);
procedure EditPassExit(Sender: TObject);
private
Reg: TRegistry;
public
end;
var
Form1: TForm1;
var Key: Char;
implementation
{$R *.dfm}
uses Config, Modulos, menu;
procedure TForm1.ReadRegistry;
var alamat: String;
begin
alamat:='\Software\DatosLogin';
try
try
Reg.OpenKey(alamat, false);
DataModule1.StringaHostName:=Reg.ReadString('Hostname');
DataModule1.StringaDBName:=Reg.ReadString('Database');
DataModule1.StringaDBUser:=Reg.ReadString('UseName');
DataModule1.StringaDBPass:=Reg.ReadString('Password');
DataModule1.StringaDBPort:=Reg.ReadString('Port');
if DataModule1.StringaHostName ='' then
begin
WriteRegistry;
exit;
end
else if DataModule1.StringaDBName ='' then
begin
WriteRegistry;
exit;
end
else if DataModule1.StringaDBUser ='' then
begin
WriteRegistry;
exit;
end
else if DataModule1.StringaDBPass ='' then
begin
WriteRegistry;
exit;
end
else if DataModule1.StringaDBPort ='' then
begin
WriteRegistry;
exit;
end
except on ERegistryException do
end;
finally
Reg.CloseKey;
end;
end;
procedure TForm1.WriteRegistry;
var alamat:String;
begin
alamat:='\Software\DatosLogin';
try
Reg.OpenKey(alamat,True);
Reg.WriteString('HostName','localhost');
Reg.WriteString('Database','dati');
Reg.WriteString('UserName','root');
Reg.WriteString('Password','688200');
Reg.WriteString('Port','3306');
DataModule1.StringaHostName:='localhost';
DataModule1.StringaDBName:='dati';
DataModule1.StringaDBUser:='root';
DataModule1.StringaDBPass:='688200';
DataModule1.StringaDBPort:='3306';
finally
Reg.CloseKey;
end;
end;
procedure TForm1.BtnSalirClick(Sender: TObject);
begin
application.Terminate;
end;
procedure TForm1.BtnConfigClick(Sender: TObject);
begin
form1.Hide;
Form2.ShowModal;
end;
procedure TForm1.BtnLoginClick(Sender: TObject);
begin
if EditUser.Text = '' then
begin
Application.MessageBox('Primero escriba su nombre de usuario','Informacion',MB_OK or MB_IconInformation);
EditUser.SetFocus;
exit;
end
else if EditPass.Text = '' then
begin
Application.MessageBox('Primero escriba su contraseña','Informacion',MB_OK or MB_IconInformation);
EditPass.SetFocus;
exit;
end;
try
LoginCheckSQL;
except
Application.MessageBox('Fallo la coneccion!. Por favor contacte al Administrador de su base de datos','Informacion',MB_OK or MB_IconWarning);
end;
end;
procedure TForm1.LoginCheckSQL;
begin
if DataModule1.OpenConnection = True then
DataModule1.FDQueryUsers.SQL.Clear;
DataModule1.FDQueryUsers.SQL.Add('SELECT * FROM users WHERE username = ' + QuotedStr(EditUser.Text));
try
DataModule1.FDQueryUsers.Open;
DataModule1.FDQueryUsers.Active:= False;
DataModule1.FDQueryUsers.Active:= True;
if not DataModule1.FDQueryUsers.Eof then
begin
if StrToInt(DataModule1.FDQueryUsers.FieldByName('status').AsString) = 0 then
begin
MessageDlg('Lo siento usuario' + EditUser.Text + '. Usted ya no esta activo!' + sLineBreak + 'Por favor contactar a su Administrador',MtInformation,[MbOK], 0);
end
else if DataModule1.FDQueryUsers.FieldByName('password').AsString <> EditPass.Text then
begin
MessageDlg('Contraseña incorrecta!' + sLineBreak + '...Trate de nuevo',MtInformation,[MbOK], 0);
end
else
begin
DataModule1.intUID:=StrToInt(DataModule1.FDQueryUsers.FieldByName('id').AsString);
DataModule1.StringaUsername:=StrToInt(DataModule1.FDQueryUsers.FieldByName('username').AsString); DataModule1.StringaFullName:=StrToInt(DataModule1.FDQueryUsers.FieldByName('fullname').AsString);
Form3.Show;
Form1.Hide;
end
end
else
begin
MessageDlg('Lo siento usuario' + EditUser.Text + '. No podemos encontrarlo!' + sLineBreak + 'Por favor contactar a su Administrador',MtInformation,[MbOK], 0);
end
except
on e: Exception do
begin
MessageDlg('ERROR mientras se estaba haciendo la consulta!'+ sLineBreak +'. ' ,MtError,[MbOK], 0);
exit;
end;
end;
end;
procedure TForm1.EditPassChange(Sender: TObject);
begin
EditUser.Color:=$00FFEBDF;
end;
procedure TForm1.EditPassEnter(SEnder: Tobject);
begin
EditUser.color:=$F6CECE;
end;
procedure TForm1.EditPassExit(Sender: TObject);
begin
EditUser.Color:=$FFFFFF;
end;
procedure TForm1.EditPassKeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then
begin
if EditPass.Text <> '' then
begin
BtnLogin.SetFocus;
end
else
begin
Application.MessageBox('Antes escriba su password!','Informacion',MB_OK or MB_IconInformation);
EditPass.SetFocus;
end;
end;
end;
procedure TForm1.EditUserChange(Sender: TObject);
begin
EditUser.Color:=$00FFEBDF;
end;
procedure TForm1.EditUserEnter(SEnder: Tobject);
begin
EditUser.color:=$F6CECE;
end;
procedure TForm1.EditUserExit(Sender: TObject);
begin
EditUser.Color:=$FFFFFF;
end;
procedure TForm1.EditUserKeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then
begin
if EditUser.Text <> '' then
begin
EditUser.SetFocus;
end
else
begin
Application.MessageBox('Antes escriba su Nombre de Usuario!','Informacion',MB_OK or MB_IconInformation);
EditUser.SetFocus;
end;
end;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key=#27 then Application.Terminate;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_CURRENT_USER;
ReadRegistry;
DataModule1.KonectarMySQL;
end;
end.
agrego tambien el codigo del archivo de coneccion:
Código Delphi
[-]
unit Modulos;
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.VCLUI.Wait,
FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt, Data.DB,
FireDAC.Comp.DataSet, FireDAC.Comp.Client, FireDAC.Phys.MySQL,
FireDAC.Phys.MySQLDef, FireDAC.Comp.UI;
type
TDataModule1 = class(TDataModule)
FDCon_DB: TFDConnection;
FDQueryUsers: TFDQuery;
FDQueryInventarios: TFDQuery;
FDPhysMySQLDriverLink1: TFDPhysMySQLDriverLink;
FDGUIxWaitCursor1: TFDGUIxWaitCursor;
procedure KonectarMySQL;
Function OpenConnection:Boolean;
procedure CloseConnection;
private
public
StringaHostName,StringaDBName,StringaDBUser,StringaDBPass,StringaDBPort:String;
intUID:integer;
StringaUsername:String;
StringaFullName:String;
end;
var
DataModule1: TDataModule1;
implementation
{$R *.dfm}
procedure TDataModule1.KonectarMySQL;
begin
FDCon_DB:=TFDConnection.Create(Self);
try
FDCon_DB.DriverName:= 'MySQL';
FDCon_DB.Params.Add('Server=' + StringaHostName );
FDCon_DB.Params.Add('Database=' + StringaDBName );
FDCon_DB.Params.Add('UserName=' + StringaDBUser );
FDCon_DB.Params.Add('Password=' + StringaDBPass );
FDCon_DB.Params.Add('Port=' + StringaDBPort );
FDCon_DB.LoginPrompt:= False;
FDCon_DB.Connected:= True;
FDQueryUsers:=TFDQuery.Create(Self);
FDQueryUsers.Connection:=FDCon_DB;
except
end;
end;
Function TDataModule1.OpenConnection:Boolean;
var ConnString:String;
begin
try
if FDCon_DB.Connected = True then
begin
result :=True;
end
else
begin
KonectarMySQL;
end;
except
result :=False;
end;
end;
procedure TDataModule1.CloseConnection;
begin
FDQueryUsers.Close;
FDCon_DB.Close;
end;
end.
si tienen algun consejo ....bienvenido sea.
tengo casi 17 dias aprendiendo delphi [leyendo tutorials, libros y demas]
.....Muchas gracias de nuevo