EAccessViolation



  • Hi
    ich hab mal wieder ein problem und hoffe, dass ich es in die richtges forum gepostet hab.
    [bereits gelöst] Also hier sind 2 Formulare mit Quell- und Headerdateien.
    ich nutze BCB6
    in der TForm1 Klasse (Public) hab ich (schon) 2 Funktionen die ich aus den quelldateien der beiden Formularen nutzen will. noch vor class TForm1 :Public TForm... hab ich die Prototypen der beiden funktionen.....
    Includes:
    Form1.cpp -> Form1.h &Standartincludes
    Form1.h -> Standartincludes & Form2.h
    Form2.cpp -> Form1.h, Form2.h &Standardincludes
    Form2.h -> Standartincludes

    des weiteren hab ich vor der Klassendefnition von Form2 (Form2.h) class TForm1; eingefügt, es soll eine forwärtsdefinition sein, wenn sie das nicht ist sagts...

    das Problem ist, das ich beim Kompilieren folgende fehlermeldungen bekomme...
    Erzeugen
    [Linker Fehler] Unresolved external 'GPoa()' referenced from G:\PROGRAMME\BORLAND\CBUILDER6\PROJECTS\Form1.OBJ
    [Linker Fehler] Unresolved external 'GP()' referenced from G:\PROGRAMME\BORLAND\CBUILDER6\PROJECTS\Form2.OBJ

    [/bereits gelöst]
    wenn ich die Funktionen hinter die Klasse schreibe, dann funzts????? 😕
    ah ne doch nich...
    ich erhalte immer eine EAccessViolation(BCB Debugger) und dann EInvalidOp wenn folgende Funxion ausgeführt werden soll:

    double GPoa(void)
    {
    try
    {
    double GP;
    for(int i =1; i<Form1->TStringGrid1->RowCount;i++)
    {
    GP =GP+Form1->TStringGrid1->Cells[4][i].ToDouble();
    }
    Form1->Edit1->Text=GP;
    return GP;
    }
    catch(...)
    {}
    }
    

    ich erhalte den Fehler immer wenn diese funktion ausgeführ werden soll, egal ob ich sie aus Form1 oder Form2 aufrufe...
    die funktion steht unterhalb von

    __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    

    hoff, ihr könnt mir helfen... 🙂
    Elefunty
    ->wenn mir noch was einfallt oda so schreib ichs hier rein... wenn ihr was benötigt sagt bescheid

    [EDIT]
    ich habe die beiden funktionen in eine eigene *.h datei geschmissen.
    doch das geht auch nich:

    class TForm1;
    class TForm2;
    Prototypen
    Funktionen
    

    dann heißt es:

    Funktionen.h(13), undefiniertes Symbol 'Form2'
    Funktionen.h(34), undefiniertes Symbol 'Form1'
    Funktionen.h(38), undefiniertes Symbol 'Form1'
    

    wat is jez falsch?
    ich denke, bzw ich hoffe, dass es jetzt verständlicher ist... :p

    Ele



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum VCL/CLX (Borland C++ Builder) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • so ich hab jez die funktionen wieder in die public von TForm1 geschrieben und sie dann mit Form1->Funktion1(); angesprochen...

    denkbar einfach und damit hab ich gute 1 1/2 Tage gebraucht 👎 😮
    naja fehler sind da, um aus ihnen zu lernen...

    Egal

    Ele


Anmelden zum Antworten