Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-05-2008
man_cj man_cj is offline
Registrado
 
Registrado: ene 2008
Posts: 2
Poder: 0
man_cj Va por buen camino
Question Help!!! Error al codificar Delphi a C++ Builder

Buenas primero que nada este es mi primer post y pues un saludo al "Club Delphi"

Para empezar tego un serio problema en la transformacion de Delphi a C ++ Builder 6 pues... con eso de que no hay mucha informacion de cbuilder en cuanto al manejo de bases de datos uno se llega a complicar bastante ... ahora que en delphi pues hay de todo ... bueno pues navegando en el club delphi encontre el "Tutorial Programa Ejemplo Ado, MsAccess (Novatos)" http://wiki.clubdelphi.com/wiki/inde...ría:Tutoriales echo en Delphi y pues 10 puntos.. y al pasarlo a C++ Builder 6 sorpresa el codigo tenia errores en builder (pruebenlo y veran que si da error al compilar)cambie todo de arriba a abajo, lei y re-lei el tutorial (ojo esta bien explicado ) cambie los := por :, el . por ->, respete mayusculas, etc., etc., etc, y pues nada me perdi... Delphi es versatil ¿porque C++ Builder no pudiera serlo?

//---Código en Delphi (este es el primer codigo a arreglar que no jala en builder)

Código Delphi [-]
 
procedure TBanco.FormCreate(Sender: TObject);
begin
   DTP1.DateTime:= now; // inicio la fecha al dia de hoy
   Banco.Active := True; // activo la tabla
   Banco.Last; // le indico que lea el ultimo registro
   SumRet.Active := True; // activo el query
   SumDep.Active := True; // activo el query
   // coloco el resultado de (SumDep - SumRet) en el edit
   ESalTot.Text := FloatToStr((SumDep.Fields[0].AsFloat) - SumRet.Fields[0].AsFloat);
   // establecemos los dbedits como desactivados
   DBNTransac.Enabled := False;
   DBDescrip.Enabled := False;
   DBRetiros.Enabled := False;
   DBDeposit.Enabled := False;
   DBSalAnt.Enabled := False;
   // Deshabilitamos el combobox
   CBTipo.Enabled:= False;
   // Deshabilitamos el navegador
   DBNavigator1.Enabled := False;
   // escondemos los botones, con esto evitamos cometer errores
   BRetiros.Visible := False;
   BDeposito.Visible := False;
end;






//--- Y ésta la codificación en C++ Builder 6 (lo que esta en rojo es donde da el error, porque )

Código:
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
   DTP1->DateTime = Now(); // inicio la fecha al dia de hoy
   Banco->Active = true; // activo la tabla
   Banco->Last(); // le indico que lea el ultimo registro
   SumRet->Active = true; // activo el query
   SumDep->Active = true; // activo el query
   // coloco el resultado de (SumDep - SumRet) en el edit
   ESalTot->Text = FloatToStr(SumDep->Fields[0]->AsFloat - SumRet->Fields[]->AsFloat);
   // establecemos los dbedits como desactivados
   DBNTransac->Enabled = false;
   DBDescrip->Enabled = false;
   DBRetiros->Enabled = false;
   DBDeposit->Enabled = false;
   DBSalAnt->Enabled = false;
   // Deshabilitamos el combobox
   CBTipo->Enabled = false;
   // Deshabilitamos el navegador
   DBNavigator1->Enabled = false;
   // escondemos los botones, con esto evitamos cometer errores
   DBRetiros->Visible = false;
   DBDeposit->Visible = false;
}

El mensaje de error:

[C++ Error] UBanco.cpp(33): E2288 Pointer to structure required on left side of -> or ->*

Cual mi error... o interprete mal las lineas echas en Delphi ?
Sera el único error que encontre o habra más?
Alguien hizo el tutorial y lo pudo solucionar?

De antemano Gracias y suerte a todos los integrantes del "Club Delphi"
Saludos amigos...
Responder Con Cita
  #2  
Antiguo 06-05-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
No lo he analizado con mucho detalle, pero a primer golpe de vista encuentro un error. No se si será un error de mera transcripción:

Código:
   // coloco el resultado de (SumDep - SumRet) en el edit
   ESalTot->Text = FloatToStr(SumDep->Fields[0]->AsFloat - SumRet->Fields[]->AsFloat);
El operador [] debe contener un indice:
Código:
   // coloco el resultado de (SumDep - SumRet) en el edit
   ESalTot->Text = FloatToStr(SumDep->Fields[0]->AsFloat - SumRet->Fields[0]->AsFloat);
En ocasiones el operador [] no tiene la misma sintaxis en delphi que en Builder. Para Builder, que es C++ ese operador referencia elementos de un array definido por un puntero. Esto es así mientras no esté sobrecargado. Como los objetos basados en VCL son todos punteros, ese operados no puede estar sobrecargado, para este tipo de objetos.

En ocasiones se debe utilizar sobre una variable llamada Items... que no aparece en delphi.

Para C++ el operador -> se utiliza cuando se llama desde un puntero a un objeto (como lo son los derivados de VCL) y el operador punto "." se utiliza cuando el objeto no es un puntero. Esta forma tan estricta está diseñada para evitar errores con punteros, de forma que obliga al programador a conocer, en todo momento, si está trabajando con punteros o con objetos propiamente dichos.

No se si me paso explicando obiedades, pero al preguntar por la "versatilidad" del delphi ma ha parecido oportuno.

Saludos.

Última edición por escafandra fecha: 07-05-2008 a las 14:33:28.
Responder Con Cita
  #3  
Antiguo 07-05-2008
man_cj man_cj is offline
Registrado
 
Registrado: ene 2008
Posts: 2
Poder: 0
man_cj Va por buen camino
Talking Cierto error de transcripcion pero igual no jala

Cierto escafandra me comi el indice que por fuerza si o si debe tener , no me di cuenta en la codificacion pero aun asi como explico anteriromente el error sale en la parte marcada en rojo

Código:
// coloco el resultado de (SumDep - SumRet) en el edit
   ESalTot->Text = FloatToStr(SumDep->Fields[0]->AsFloat - SumRet->Fields[]->AsFloat);
al compilar exactamente me pide un punteroo indice pero aun estando el mismo, sale el error, por el momento siguo revizando cual el error talvez sea en la conexion a la base de datos pero bueno seguire provando

Gracias por la correccion
Responder Con Cita
  #4  
Antiguo 07-05-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Prueba esto:
Código:
   // coloco el resultado de (SumDep - SumRet) en el edit
   ESalTot->Text = FloatToStr(SumDep->Fields->Items[0]->AsFloat - SumRet->Fields->Items[0]->AsFloat);
Sólo por si suena la flauta.

Investiga el tipo Fields ¿Aque apunta? Apunta a un objeto o a puntero.
Si apunta a un objeto quizas funcione esto:
Código:
   // coloco el resultado de (SumDep - SumRet) en el edit
   ESalTot->Text = FloatToStr(SumDep->Fields[0].AsFloat - SumRet->Fields[0].AsFloat);
Saludos.

Última edición por escafandra fecha: 07-05-2008 a las 14:39:10.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
linker error en c++ builder 6 mns C++ Builder 2 28-04-2008 08:00:02
Ayuda! Necesito Codificar colores en delphi Noiser Varios 2 10-04-2008 14:16:05
Error de impresion en el Report Builder Dark_RavenM Impresión 5 10-04-2008 01:45:42
Linker error : Problema con c++ builder waremovil C++ Builder 1 07-04-2008 11:30:01
Error del linker c++ builder 6 davomb C++ Builder 1 07-06-2006 18:23:03


La franja horaria es GMT +2. Ahora son las 06:15:34.


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
Copyright 1996-2007 Club Delphi