[C++] Exception - Abstract error

Pagina: 1
Acties:

  • -Miura-
  • Registratie: Mei 2002
  • Laatst online: 13:23
Ik ben voor een school projectje software aan het schrijven voor een digtiaal uitleesbare weegschaal. Hiervoor wordt een Velleman K8055 kaartje gebruikt.

Nou wordt er bij het starten van het programme (OnCreate) geconnect naar het kaartje. Mocht dit niet lukken dan laat ik een ander Form zien met een Retry knop en een timer die om de 10 sec probeert te connecten. Dit form delete zich als het geconnect is met het kaartje.
Het connecten gebeurt met een functie ConnectBalance()

Code op het main form - word uitgevoerd als het connecten mislukt
code:
1
2
FormConnection = new TFormConnection(Application);
FormConnection->Show();


Code op het connectie-form - word uitgevoerd als het connecten gelukt is
code:
1
delete this;


Wanneer ik de timer de functie ConnectBalance() laat aanroepen gaat alles goed. Het form word ook gedelete. Druk ik op de Retry-knop ( ConnectBalance(); ) dan krijg ik de volgende error:

code:
1
2
Debugger Exception Notification
Project Balance.exe raised exception class EAbstractError with message 'Abstract Error'. Process stopped ........."


Mijn vraag is dus wat deze error veroorzaakt en wat ik eraan kan doen

Dit is de eerste keer C++ voor mij, ik heb wel wat andere talen wat programmatjes geprogrammeerd. Ik heb gegoogled maar deze error is voor mij te vaag om iets mee te kunnen.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18:25

Creepy

Tactical Espionage Splatterer

En wat is de code van je ConnectBalance() dan? Daar gaat waarschijnlijk iets mis. Waarschijnlijk gebruik je ergens direct een functie van een class i.p.v. een instantie van die class of wil je een instantie maken van een class die abstract / static is.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • -Miura-
  • Registratie: Mei 2002
  • Laatst online: 13:23
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void TFormConnection::ConnectBalance()
{
   TimerRetry->Enabled = false;
   ButtonRetry->Enabled = false;

   ProgressBarRetry->Position = 0;
   GroupBoxProgressBar->Caption = " Trying to connect ";


   int h=OpenDevice(0);
   if (h==0)
   {  //Connection successful
      ClearAllDigital();
      SetDigitalChannel(8);
      SetDigitalChannel(7);
      FormBalance->last_digital_channel = true;

      FormBalance->TimerReadAnalog->Enabled = true;
      FormBalance->TimerConnection->Enabled = true;
      FormBalance->TimerZero->Enabled = true;
      FormBalance->Enabled = true;
      this->Hide();
   }
   else
   {  //Connection failed
      retry_count++;
      TimerRetry->Enabled = true;
      ButtonRetry->Enabled = true;
   }
}


Het rare vind ik dat het wel werkt via de timer en niet via de knop.
Ik heb het nu wat omgebouwt en gebruik geen 'new Form' meer, maar laat het Form maar gewoon verschijnen met ->Show(); Ik vind die andere manier toch wel iets netter, dus als het nog opgelost kan worden graag :)