Komponentenzugriff von Funktionen.cpp

derNero

Grünschnabel
Hallo,

ich bin neu hier und hoffe das ihr mir vieleicht helfen könnt.

Ich arbeite derzeit an einem Projekt mit dem BCB6 (Ist mein ernstes im BCB).

Ich habe nun Beispielsweise ein Formular auf dem sich einen Edit.Komponente befinet.
und eine 2.Unit nennen wir sie mal Unit_funktionen.cpp

Ich möchte nun folgendes mache:

Code:
#include <vcl.h>
#pragma hdrstop

#include "Unit_funktionen.h"
#include "Unit1.h"
//---------------------------------------------------------------------------

#pragma package(smart_init)

void __fastcall test(){
        ShowMessage ("Hallo");  //Funktioniert
        Form1->Edit1->Text = "Welt";  //Funktioniert nicht
}

Aber bei Form1->Edit1->Text = "Welt";
kommt: Zugriffsverletzung bei Adresse 401075B9 in Modul 'vcl60.bpl. Lesen von Adresse 8C726EA1

würde mich sehr freuen wenn ihr mir helfen könntet.
 

Turri

Erfahrenes Mitglied
Hallo,

Du willst also die Funktion "Test()" in der Unit1 bzw. im Form1 ausführen, aber eben den Funktionsrumpf nur auslagern... hab ich das richtig verstanden?

LG Turri
 

derNero

Grünschnabel
Hallo

ich habe ein Formular Form1 mit einer Unit1.

ich hab auf Form1 eine beliebige Komponente zb ein Edit

und eine zweite Unit : Unit_funktionen ohne Form in der ich die ganzen Funktionen hab.

Jetzt möchte ich in Unit_funktionen die Komponente von Form1 ansprechen.

zb. Form1->Edit1->Text ("AaaaAAaaa")

aber ich bekomm immer zugriffsfehler ....

hab auch schon den Sender mit übergeben ... dann is dieser fehler nicht mehr in vcl50.bpl sondern in projekt2.exe.

Kenn mich halt mit bcb net so...... :rolleyes:
 

Turri

Erfahrenes Mitglied
Sollte eigentlich gehn....
Wenn das Problem bis heute abend nich gelöst ist,
hock ich mich mal dran (bin auf Arbeit und hab keinen Borland zur Hand).
Hab zwar schon öfter mit dem Borländer was entwickelt,
bin aber nie auf das Problem gestoßen ;)

MfG Turri
 

derNero

Grünschnabel
(= bin auch auf der Arbeit ...

ist ein Projekt für meine Ausbildung und mein Ausbilder sitzt mir mit einem pseudo Terminplan im Nacken .... (wegen Selbstschätzung von Programmierdauer .... usw) müsste dieses Problem schon gestern gelöst haben damit ich weiter machen kann ... hab noch andere Sachen an dem Programm zu tun ...

Und keiner hat hier je c gesehen und ich solls programmieren ... und das alles autodidakt
und dann hab ich noch Termindruck ...

HELP :(
 

Turri

Erfahrenes Mitglied
dann lass das auslagern der Funktionen erstmal,
und schreib die einfach mit in die Unit1.cpp rein...

Das auslagern zu späteren Zeitpunkt sollte kein Problem sein...

MfG Turri
 

Turri

Erfahrenes Mitglied
So, hab das mal eben gebaut...
Unit1.h bleibt unberührt...
Unit1.cpp
Code:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit_funktionen.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    Edit1->Text = "Test";
    Test();
}
Unit_funktionen.cpp
Code:
//---------------------------------------------------------------------------


#pragma hdrstop

#include "Unit_funktionen.h"
#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

void __fastcall Test()
{
    Form1->Edit1->Text = "Blubb";
}
Unit_funktionen.h
Code:
//---------------------------------------------------------------------------

#ifndef Unit_funktionenH
#define Unit_funktionenH
//---------------------------------------------------------------------------

void __fastcall Test();
#endif
Am Ende steht eben "Blubb" da, durch die Test() Funktion und nicht das vorher zugewiesene Test...
Bei Fragen einfach fragen... :)

MfG Turri
 

derNero

Grünschnabel
danke, es hat letztendlich geklappt.



obwohl ich inzwischen der Meinung bin das der bcb6 ab und zu etwas "zickig" ist.

noch ma vielen Danke für deine Hilfe.:)