 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 09 May, 2017 10:22 am Asunto: Función no existe (Call of nonfunction) |
|
|
Tengo un formulario en un proyecto en BCB 6 con esto:
| Código: | #pragma resource "*.dfm"
TfMenInt *fMenInt;
extern AnsiString cAux, NombreUser;
extern bool lPrueba;
extern int LinEje;
extern TDateTime dFecha;
extern TListItem *pItem;
extern TReplaceFlags oReplace;
extern void ColorForm(TForm *Form);
extern int Mensaje(int Icono, AnsiString Mensaje, AnsiString Botones); |
Esa última función Mensaje la uso absolutamente en todos los formularios del proyecto (58 en total) y en todos ellos está declarada exactamente igual como es lógico.
También en todos la uso exactamente de la misma forma; en este formulario la primera vez que la llamo lo he hecho así:
| Código: | fPersona->Query->Close();
fPersona->Query->SQL->Text = "INSERT INTO Correo (Remite, Destino, Hora, Asunto, Mensaje, Leido) VALUES (:Remite, :Destino, :Hora, :Asunto, :Mensaje, 0)";
fPersona->Query->ParamByName("Remite")->AsString = NombreUser;
fPersona->Query->ParamByName("Hora")->AsDateTime = Now();
fPersona->Query->ParamByName("Asunto")->AsString = Asunto->Text;
fPersona->Query->ParamByName("Mensaje")->AsString = Mensaje->Text;
if (Usuarios->Visible)
{
lPrueba = false;
for (nItem = 0; nItem <Usuarios>Items->Count; nItem ++)
if (Usuarios->Items->Item[nItem]->Checked)
{
lPrueba = true;
try
{
fPersona->Query->Close();
fPersona->Query->ParamByName("Destino")->AsString = Usuarios->Items->Item[nItem]->SubItems->Strings[0];
fPersona->Query->ExecSQL();
fPersona->Query->Transaction->Commit();
}
catch(...)
{
fPersona->Query->Transaction->Rollback();
}
}
if (!lPrueba)
{
Mensaje(3, "No ha seleccionado ningún destinatario.", "Volver"); // <---- AQUÍ DA EL ERROR EL COMPILADOR
return;
}
} | Pero a la hora de compilar me está dando un error E2314 Call of nonfunction en esa llamada. Y estoy totalmente perdido sobre los motivos ya que SIEMPRE lo hago igual. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Ultima edición por Angel el Mar 09 May, 2017 4:36 pm, editado 1 vez |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 09 May, 2017 4:34 pm Asunto: |
|
|
Voy más allá. He probado a compilar el formulario poniendo esa llamada en diversos sitios del código, por si fuera un problema de escritura y no lo hubiera detectado; Ponga donde ponga esa línea me da el mismo error. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
Felip Master

Registrado: 09 Jun 2004Mensajes: 200
|
Publicado: Mie 10 May, 2017 4:37 am Asunto: |
|
|
Hola, Angel, creo que el problema puede estar aquí:
fPersona->Query->SQL->Text = "INSERT INTO Correo (Remite, Destino, Hora, Asunto, Mensaje, Leido) VALUES (:Remite, :Destino, :Hora, :Asunto, :Mensaje, 0)";
...
fPersona->Query->ParamByName("Mensaje")->AsString = Mensaje->Text;
Estas declaraciones anteriores impiden al compilador ver su función con el mismo nombre. Cambie el nombre Mensaje |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 10 May, 2017 8:16 am Asunto: |
|
|
| Felip escribió: | Hola, Angel, creo que el problema puede estar aquí:
fPersona->Query->SQL->Text = "INSERT INTO Correo (Remite, Destino, Hora, Asunto, Mensaje, Leido) VALUES (:Remite, :Destino, :Hora, :Asunto, :Mensaje, 0)";
...
fPersona->Query->ParamByName("Mensaje")->AsString = Mensaje->Text;
Estas declaraciones anteriores impiden al compilador ver su función con el mismo nombre. Cambie el nombre Mensaje |
Hola Felip y gracias. Esa posibilidad la tuve en consideración y por ello hice la prueba poniendo la llamada en otros sitios diferentes del formulario y siempre me da el mismo error, independientemente de donde haga la llamada. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mie 10 May, 2017 8:40 am Asunto: |
|
|
Hola Ángel, como bien dice Felip, el error tiene que estar ahí, seguramente tienes un argumento local que tiene el mismo nombre que la función a la que intentas llamar, prueba a cambiar la línea:
| Código: | Mensaje(3, "No ha seleccionado ningún destinatario.", "Volver"); | por
| Código: | ::Mensaje(3, "No ha seleccionado ningún destinatario.", "Volver"); |
Para hacer referencia a la función global ya que sino intentara usar la variable local y de ahí ese mensaje de error. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 10 May, 2017 9:15 am Asunto: |
|
|
¡ME DESCUBRO ANTE VOSOTROS!
Efectivamente ese era el problema. Lo que no entiendo es por qué si pongo esa llamada en cualquier otro evento del formulario, por ejemplo en un OnClick, también me da el error aunque no haya nada declarado en dicho evento. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|