Problem mit Variablen aus DLLs - Visual C++

Hallo Leute!

Da ich manche Variablen und Arrays in mehreren Programmen nutzen will, wollte ich eine DLL programmieren.

Ich hab mir gedacht, ich könnte dort einfach eine Klasse erstellen, dort ein Array definieren, den einzelnen Elementen des Arrays Werte zuweisen und das Array dann in anderen Programmen nutzen.

Die Klasse habe ich so aufgesetzt (mit Namespace):

namespace buchstaben {

public ref class alpha_class
{
public:
void zuweisung()
{
array ^alph = gcnew array(5);


alph[0] = „A“; //A
alph[1] = „B“; //B
alph[2] = "C; //C
alph[3] = „D“; //D
alph[4] = „E“; //E
}
};
}

Instanziert habe ich so:
(in dem Programm habe ich schon einen Assymblyverweis eingerichtet)

using namespace buchstaben;



buchstaben::alpha_class ^beispiel1 = gcnew buchstaben::alpha_class();

Und so wollte ich dann z.B. ein Arrayelement verwenden (in einer Ereignisbehandlungsmethode):

textBox1->Text = beispiel1.zuweisung.alph[0];

Beim Kompilieren zeigt er mir dann aber einen Fehler an.

Kann es sein, dass ich die Klassendefinition und die Instanzierung irgendwie falsch verwende?

Bin ziemlich hilflos.
Hoffe auf eure Antworten.

MfG
LapPro

P.S.: Ich verwende Visual C++ 2008 Express Edition und programmiere mit C++/CLI (also für das .NET-Framework)

Hi

Vorweg: Diese Frage wäre wohl besser im .NET-Brett aufgehoebn :wink:

Eine DLL ist wohl kaum dafür geeignet, das zu leisten, was du da willst. DLLs sind eher dafür da, Routinen und Strukturen programmübergreifend berreitzustellen.

Du solltest das Array in einer Datei speichern.

MfG IGnow

Hallo!

Wie schon erwähnt ist diese Managed C++ Frage im .NET Brett tatsächlich besser aufgehoben, aber auch hier sehr leicht zu beantworten:
Du hast eine Methode zuweisung() in Deiner Klasse, die void zurückliefert.
Das Array deklarierst und befüllst Du ausschließlich in dieser Methode, es ist außerhalb der Methode nicht sichtbar.
D.h. Du brauchst auch irgendwo (außerhalb der Methode!) noch eine Deklaration
public array ^alph;

Gruß,
Martin

Hallo IGnow!

Das Problem ist aber, dass ich dem Anwender meines Programms nicht mein Array zur Verfügung stellen will (Also, dass er nicht einfach meine Textdatei öffnet!). Deswegen habe ich mir gedacht, statt die Datei zu verschlüsseln, das Array einfach in einer DLL zu definieren und somit vor ungewollten Blicken schützen will.

Zur anderen Antwort: Soll ich einfach in der DLL das Array als Public deklarieren oder nochmal neu in meinem Programm definieren?

MfG
LapPro

Hallo alle zusammen!

Also das Problem hätte ich jetzt gelöst, aber auch ein neues hat sich aufgetan.

Ich möchte die Arrays in den Klassenmethoden ja verwenden.

Also definiere ich die Arrays in dem Konstruktor.

array ^alph = gcnew array(36);
array ^bzz = gcnew array(36);

Dann weise ich den Arrays ihre Werte zu.

Wenn ich dann aber die Arrays später in einer Replace()-Methode verwenden will, zeigt mir der Compiler Fehlermeldungen an, dass die Arrays nicht bekannt sind.

Wenn ich die Arrays in der Methode definiere, sagt mit der Compiler irgendwas mit dem Datentyp wchar_t.

Muss ich für die Replace-Methode also zwingend wchar_t Arrays definieren, kann ich mit der Replace-Methode überhaupt Zeichen durch Integer-Variablen ersetzen, oder liegt der Fehler wo anders?

MfG
LapPro