[C Builder]probleem met frames

Pagina: 1
Acties:

  • CRiMiNaL
  • Registratie: Mei 2002
  • Laatst online: 10-01-2024
Ik zit hier met een klein probleempje,

Als ik binnen mijn programma een andere frame aan wil spreken terwijl er al 1 open is krijg ik een mooie error :
code:
1
Acces violation at address 004A8EAF in modules 'programma.exe'. Read of address 00000057.

ik dacht dat het kwam door een link fout. Dus heb ik het frame uit m'm programma gewist en een nieuwe ingevoegd. Dit hielp alleen niet, ik blijf de error houden. Haal ik de 2e frame weer uit m'n programma is de error helemaal weg.
Wat kan het probleem zijn ... ?

[ Voor 3% gewijzigd door CRiMiNaL op 02-12-2003 12:21 ]

... MMORPG Addict.


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

Creepy

Tactical Espionage Splatterer

Is het tweede frame al gecreerd? Ben je al door je code heen gestapt zodat je kan zien op welke regel het mis gaat? Heb je misschien wat relevante code voor ons?

De melding die je geeft is 99 van de 100 keer een fout van de programmeur en niet door een link fout ;)

"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


  • CRiMiNaL
  • Registratie: Mei 2002
  • Laatst online: 10-01-2024
bijde frames zijn al gecreeerd omdat er dynamische datamodules (lol) aanhangen.

een stukje code waarmee ik mischien iets verduidelijk :

code:
1
2
3
4
5
6
7
Orders4->Visible = false;
Artikelen2->DArtikel->DataSet = Main->ADOArtikel;
Artikelen2->DArtikelGroep2->DataSet = Main->ADOArtikelGroep;
Artikelen2->DFabrikant2->DataSet = Main->ADOFabrikant;
Artikelen2->DLeverancier2->DataSet = Main->ADOLeverancier;
Artikelen2->DBTW2->DataSet = Main->ADOBTW;
Artikelen2->Visible = true;

Orders4 en Artikelen2 zijn frames.

Hierin gaat het fout, het programma draai iig prima totdat ie deze regels uit moet voeren, dan krijg ik de exception error.

[ Voor 10% gewijzigd door CRiMiNaL op 02-12-2003 12:30 ]

... MMORPG Addict.


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Een zijn de variablen Orders4 en Artikelen2 wel geassigned? Ik heb het vermoeden dat ze null/nil zijn. Ze zijn dan kennelijk nog niet gecreeerd.

We adore chaos because we like to restore order - M.C. Escher


  • CRiMiNaL
  • Registratie: Mei 2002
  • Laatst online: 10-01-2024
TOrders4 *Orders4;

TArtikelen2 *Artikelen2;

zijn mijn assignments, lijkt mij dus wel goed te zitten op dat gebied.

... MMORPG Addict.


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Dat zijn declaraties en dat bewijst niets :)

Gaarne echt debuggen en vertellen vlak voor de exceptie wat de waarde is van die variablen

We adore chaos because we like to restore order - M.C. Escher


  • whoami
  • Registratie: December 2000
  • Nu online
Dat zijn -zoals LordLarry al verteld - geen assignments.

Je declareert nu een pointer naar het type TOrders4 en TArtikelen2. Echter, die pointers zijn nog niet geassigned en wijzen dus naar een stuk niet gealloceerd geheugen (NULL).
Vandaar dat je die Access Violation krijgt, je moet nl. eerst geheugen alloceren eer je die pointers kunt gebruiken
bijvoorbeeld:
code:
1
Orders4 = new TOrders4();

https://fgheysels.github.io/


  • CRiMiNaL
  • Registratie: Mei 2002
  • Laatst online: 10-01-2024
hmmzz ... dacht dat ik wel een beetje van C wist, maar dat valt toch tegen

code:
1
2
3
4
5
6
__fastcall TMain::TMain(TComponent* Owner)
        : TForm(Owner)
{
Orders4 = new TOrders4();
Artikelen2 = new TArtikelen2();
}

dit is zoals ik em gewijzigd heb dus, maar het werkt niet krijg een error met

[C++ Error] Artikelframe.cpp(19): E2285 Could not find a match for 'TArtikelen2::TArtikelen2()'

hier ontgaat mij echt iets. Je moet het toch gebruiken als object ?
zoals ik in Delphi gewend ben : ObjTable.Create(self);

... MMORPG Addict.


  • whoami
  • Registratie: December 2000
  • Nu online
Er zal dus geen (public) 0 - argument constructor bestaan voor TArtikelen.

https://fgheysels.github.io/


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Dit zal beter werken
C:
1
2
3
4
5
6
7
8
__fastcall TMain::TMain(TComponent* Owner)
        : TForm(Owner)
{
Orders4 = new TOrders4(this);
Orders4->Parent = this;
Artikelen2 = new TArtikelen2(this);
Artikelen2->Parent = this;
}

We adore chaos because we like to restore order - M.C. Escher


  • CRiMiNaL
  • Registratie: Mei 2002
  • Laatst online: 10-01-2024
whoami schreef op 02 december 2003 @ 16:42:
Er zal dus geen (public) 0 - argument constructor bestaan voor TArtikelen.
Dit is toch public of niet ?
code:
1
2
public:
        __fastcall TOrders2(TComponent* Owner);
LordLarry schreef op 02 december 2003 @ 16:53:
Dit zal beter werken
C:
1
2
3
4
5
6
7
8
__fastcall TMain::TMain(TComponent* Owner)
        : TForm(Owner)
{
Orders4 = new TOrders4(this);
Orders4->Parent = this;
Artikelen2 = new TArtikelen2(this);
Artikelen2->Parent = this;
}
hoe graag ik het ook wil, werken doet ie niet, nu met de errors
code:
1
2
[C++ Error] Hoofd.cpp(20): E2303 Type name expected
[C++ Error] Hoofd.cpp(20): E2034 Cannot convert 'int *' to 'TOrders2 *'

[ Voor 3% gewijzigd door CRiMiNaL op 02-12-2003 17:24 ]

... MMORPG Addict.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

CRiMiNaL schreef op 02 december 2003 @ 17:23:
[...]

Dit is toch public of niet ?
code:
1
2
public:
        __fastcall TOrders2(TComponent* Owner);
En heeft toch meer dan 0 arguments of niet?
hoe graag ik het ook wil, werken doet ie niet, nu met de errors
code:
1
2
[C++ Error] Hoofd.cpp(20): E2303 Type name expected
[C++ Error] Hoofd.cpp(20): E2034 Cannot convert 'int *' to 'TOrders2 *'
Tis handig als je het goede type assigned aan de goede pointer.

Professionele website nodig?


  • CRiMiNaL
  • Registratie: Mei 2002
  • Laatst online: 10-01-2024
Dat heb ik gedaan, en dan krijg ik dit :
code:
1
Project HMI.exe raised exception class EComponentError with message 'A component named artikelen2 alreadt exists'

Ik maak em toch net aan, hoe kan ie dan al bestaan :/

ik geef toe, ik ben best n00b in C Builder, maar zoveel verschilt het toch niet van andere talen qua opbouw ?

[ Voor 23% gewijzigd door CRiMiNaL op 02-12-2003 17:53 ]

... MMORPG Addict.


  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 22-05 13:09
CRiMiNaL schreef op 02 december 2003 @ 17:48:
code:
1
Project HMI.exe raised exception class EComponentError with message 'A component named artikelen2 alreadt exists'
Lijkt me hetzelfde probleem als hier:
http://groups.google.nl/g...0news.psu.edu%26rnum%3D14

Dus de Name property wijzigen voordat je Parent naar this zet.

  • CRiMiNaL
  • Registratie: Mei 2002
  • Laatst online: 10-01-2024
matthijsln schreef op 02 december 2003 @ 18:03:
[...]


Lijkt me hetzelfde probleem als hier:
http://groups.google.nl/g...0news.psu.edu%26rnum%3D14

Dus de Name property wijzigen voordat je Parent naar this zet.
mag ik u hartelijk danken, hiervoor moet je dus blijkbaar erg opassen als je met meerdere frames tegelijk werkt.

... MMORPG Addict.


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Je kan toch nooit twee componenten met dezelfde naam op een form hebben? Als je Name leeg laat/maakt is er ook niets aan de hand.

We adore chaos because we like to restore order - M.C. Escher


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Heel de Name property moet je gewoon negeren, die is in de praktijk alleen voor de BCB form designers intern van belang. Runtime identificatie zijn tig betere mechanismes voor (zoals gewoon alleen op de goede pointer werken :z )

Professionele website nodig?

Pagina: 1