Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   W1035 Return value of function 'TDataModule1.OpenConnection' might be undefined (https://www.clubdelphi.com/foros/showthread.php?t=92140)

jolunavi 06-08-2017 21:11:59

W1035 Return value of function 'TDataModule1.OpenConnection' might be undefined
 
por favor alguien me podria decir por que sigue dando este warning?
Código:

[dcc32 Warning] Modulos.pas(102): W1035 Return value of function 'TDataModule1.OpenConnection' might be undefined
Código Delphi [-]
unit Modulos;

interface

uses
  System.SysUtils,
  System.Classes,
  FireDAC.Comp.DataSet,
  FireDAC.Comp.Client,
  FireDAC.DatS,
  FireDAC.DApt.Intf,
  FireDAC.DApt,
  FireDAC.Stan.Param,
  FireDAC.Stan.Def,
  FireDAC.Stan.Intf,
  FireDAC.Stan.Option,
  FireDAC.Stan.Error,
  FireDAC.Stan.Pool,
  FireDAC.Stan.Async,
  FireDAC.UI.Intf,
  FireDAC.Phys.Intf,
  FireDAC.Phys.MySQL,
  FireDAC.Phys.MySQLDef,
  FireDAC.Phys,
  FireDAC.VCLUI.Wait,
  Data.DB,
  FireDAC.Comp.UI;

type
  TDataModule1 = class(TDataModule)
    FDCon_DB:TFDConnection;
    FDQueryUsers:TFDQuery;
    FDPhysMySQLDriverLink1:TFDPhysMySQLDriverLink;
    FDGUIxWaitCursor1:TFDGUIxWaitCursor;
    procedure KonectarMySQL;
    function OpenConnection:Boolean;               ///////////////////////     ESTA DEFINIDO EN ESTA LINEA     ///////////////////////////
    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;                    ////////////////       WARNING HERE       ////////////////
///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.

creo que no deberia hacer caso a esta situacion.
pero es un poco molesto, ya que esta siempre alli.
aparece en la zona de los mensajes.
Código:

[dcc32 Warning] Modulos.pas(102): W1035 Return value of function 'TDataModule1.OpenConnection' might be undefined
Success
Elapsed time: 00:00:00.6

...asi que decidi hacer la pregunta a los profesionales :)




por otro lado alguien me podria decir que teclas debo pulsar para que el editor haga aparecer la "ventanita de ayuda"? o algun metodo de ayuda de escritura.
yo cierro y vuelvo a abrir para qe el editor me diga los errorres :( (he googleado pero parece que con "ventanita" ...nada relacionado a delphi :( )

puedo decir que esta "ventanita" aparece cuando escribo un "."
ejemplo:
TDataModule1.OpenConnection ....junto con una lista de todas las opciones



Muchas Gracias de antemano !!

PS: [usando RAD Studio 10.2 ]

Casimiro Notevi 06-08-2017 22:39:09

Imagina el caso "habitual" en el que FDCon_DB no está conectado, ¿qué ocurriría?
Ocurriría que pasaría el control a KonectarMySQL y luego saldría de la function OpenConnecction sin ningún valor (True/False).
Quizás sería mejor así:
Código Delphi [-]
Function TDataModule1.OpenConnection:Boolean;
begin
  Result:=True;
  try
    if not FDCon_DB.Connected then    
      KonectarMySQL;
  except
    result :=False;
  end;
end;

jolunavi 06-08-2017 23:10:43

WAW! ...Funcionó !!
Con ese cambio a desaparecido el mensaje de warning qe aparecia siempre!

Muchas gracias Casimiro Notevi

Casimiro Notevi 06-08-2017 23:13:10

Lo importante es que entiendas el motivo.

jolunavi 06-08-2017 23:29:35

seria mucha molestia si me lo explicas "...mas lentamente"

Por favor !!

Casimiro Notevi 06-08-2017 23:53:18

Código Delphi [-]
 // Esta función debe devolver un boolean (True/False)
 // Si llamas a esta función y FDCon_DB no está conectada, ¿qué pasos ocurrirían?
 // El valor se devuelve en la variable "Result"
  
 1 Function TDataModule1.OpenConnection:Boolean;    // debe devolver un boolean (true/false)
 2 begin
 3   try    // De momento Result no vale nada porque no le hemos asignado true o false
 4     if FDCon_DB.Connected = True then    // Si no está conectado FDCon_DB pasa al "else"
 5     begin
 6       result :=True;
 7     end
 8     else
 9     begin   // ahora ejecuta esta línea llamando a KonectarMySQL
10       KonectarMySQL;  
11     end;    // Regresa de llamar a KonectarMySQL 
12   except
13     result :=False;
14   end;
15 end;  // y termina.  ¿Qué valor tiene Result?   un valor indefinido, no le hemos asignado ningún valor.
¿Y qué dice el mensaje de aviso?
Cita:

Return value of function 'TDataModule1.OpenConnection' might be undefined
¿Lo entiendes ahora?

jolunavi 07-08-2017 00:13:58

Muchas Gracias Casimiro Notevi
ahora si entiendo !!
Estaba saliendo de la funcion sin darle ningun valor a OpenConnection.

Gracias de nuevo :D


La franja horaria es GMT +2. Ahora son las 08:19:36.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi