Ver Mensaje Individual
  #1  
Antiguo 06-08-2017
jolunavi jolunavi is offline
Registrado
NULL
 
Registrado: ago 2017
Posts: 8
Reputación: 0
jolunavi Va por buen camino
[dcc32 Error]..... E2010 Incompatible types: 'string' and 'Integer'

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)
    ///  pulsanti
    BtnSalir: TButton;
    BtnLogin: TButton;
    BtnConfig: TButton;
    ///  Edits o Campi per scrivere
    EditUser: TEdit;
    EditPass: TEdit;
    ///  Labels o etichette
    Label2: TLabel;
    Label1: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    ///  Shapes o Quadri
    Shape1: TShape;
    Shape2: TShape;
    ///  Imagenes
    Image1: TImage;


    ///  Registry
    procedure ReadRegistry;
    procedure WriteRegistry;

    ///  Check Login MySQL
    procedure LoginCheckSQL;

    ///  FormKeyPress
    procedure FormKeyPress(Sender: TObject; var Key: Char);

    ///  FormShow
    procedure FormShow(Sender: TObject);

    ///  BtnLogin
    procedure BtnLoginClick(Sender: TObject);

    ///  BtnUscire
    procedure BtnSalirClick(Sender: TObject);

    ///  BtnConfig
    procedure BtnConfigClick(Sender: TObject);

    ///  EditUser
    procedure EditUserKeyPress(Sender: TObject; var Key: Char);
    procedure EditUserChange(Sender: TObject);
    procedure EditUserEnter (SEnder: Tobject);
    procedure EditUserExit(Sender: TObject);

    ///  EditPass
    procedure EditPassKeyPress(Sender: TObject; var Key: Char);
    procedure EditPassChange(Sender: TObject);
    procedure EditPassEnter (SEnder: Tobject);
    procedure EditPassExit(Sender: TObject);


  private
    { Private declarations }
    Reg: TRegistry;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  var Key: Char;

implementation

{$R *.dfm}

uses Config, Modulos, menu;


//////////////////////////////////////////////////////////////
/// - TForm1 -      REGISTRO DEI DATI DEL DATABASE
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;

////////////////////////////////////////////////////////////////
/// - TForm1 -      REGISTRO DEI DATI DEL DATABASE
procedure TForm1.WriteRegistry;
  var alamat:String;
  begin
    alamat:='\Software\DatosLogin';
    try
        Reg.OpenKey(alamat,True);
        ///PUEDES REEMPLAZAR POR NUMERO IP.
        Reg.WriteString('HostName','localhost');
        ///DATABASE DE MYSQL A USAR.
        Reg.WriteString('Database','dati');
        ///USUARIO DATABASE MYSQL.
        Reg.WriteString('UserName','root');
        //PASSWORD USUARIO DATABASE MYSQL.
        Reg.WriteString('Password','688200');
        ///PUERTO DE MYSQL.
        Reg.WriteString('Port','3306');

        DataModule1.StringaHostName:='localhost';
        DataModule1.StringaDBName:='dati';
        DataModule1.StringaDBUser:='root';
        DataModule1.StringaDBPass:='688200';
        DataModule1.StringaDBPort:='3306';

    finally
        Reg.CloseKey;
    end;
  end;



//////////////////////////////////////////////////////////////
/// - BtnSalir -      BOTON USCIRE [ Salir ]
procedure TForm1.BtnSalirClick(Sender: TObject);
  begin
    application.Terminate;
  end;

//////////////////////////////////////////////////////////////
/// - BtnConfig -      BOTON CONFIGURAZIONE [ Configuracion ]
procedure TForm1.BtnConfigClick(Sender: TObject);
  begin
    form1.Hide;
    Form2.ShowModal;
  end;

//////////////////////////////////////////////////////////////
/// - BtnLogin -      BOTON LOGIN [ Entrar ]
procedure TForm1.BtnLoginClick(Sender: TObject);
  begin
    ////////////////////////
    /// VALIDAZIONE DI LOGIN
    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;

//////////////////////////////////////////////////////////////
///  LoginCheckSQL
procedure TForm1.LoginCheckSQL;
  begin
      if DataModule1.OpenConnection = True then

      ///////////////////////////////////////
      ///  CREIAMO LA QUERY
      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);//////////ERROR HERE
                          DataModule1.StringaFullName:=StrToInt(DataModule1.FDQueryUsers.FieldByName('fullname').AsString);   //////////ERROR HERE

                          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;

//////////////////////////////////////////////////////////////
/// - EditPass -     CAMPO PER SCRIVERE LA PASSWORD
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;

//////////////////////////////////////////////////////////////
/// - EditUser -      CAMPO X SCRIVERE NOME UTENTE
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;

//////////////////////////////////////////////////////////////
/// - Form1 -      CHIUDERE LA APPLICAZIONE AL PREMERE  [ Esc ]
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
  begin
    if Key=#27 then Application.Terminate;
  end;

//////////////////////////////////////////////////////////////
/// DOBBREBE SCRIVERE NEL REGISTRO!   ...CONTROLLARE

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
    { Private declarations }
  public
    { Public declarations }

    StringaHostName,StringaDBName,StringaDBUser,StringaDBPass,StringaDBPort:String;
    intUID:integer;
    StringaUsername:String;
    StringaFullName:String;
  end;

var
  DataModule1: TDataModule1;

implementation

{%CLASSGROUP 'Vcl.Controls.TControl'}

{$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

Última edición por jolunavi fecha: 06-08-2017 a las 03:40:44. Razón: agregar informacion
Responder Con Cita