[VC++6.0, Win98] Problem mit Char-Array

Hallo!

Ich habe folgendes Problem. Ich soll bestehende DLL’s in ein Programm einbinden.
Diese DLL’s übergeben durch eine funktion einen Zeiger auf ein Charakterarray.
Ich muß dieses Array in ein File speichern. Jetzt komme ich zu der Krux, ich
kann nämlich nicht auf die Daten zugreifen. Irgendwie schaffe ich es nicht diesen
Zeiger richtig zu derefferenzieren. Im DeveloperKit(für VC++) zu den DLL’s ist
folgender Beispielcode:

Definition der Funktion:
void Funktion(char** Code, int* Size)

Zugriff auf die Funktion:
Funktion(&Code, &Size);

mit den Variablendefinitionen:
char* Code;
int Size;

Eigentlich müßte hinter diesem char** ja ein zweidimensionales Array stecken, oder?
Kann mir jemand sagen wie ich auf die einzelnen char’s in diesem Array zugreifen kann?

Liebe Grüße
Peter

Hi Peter:smile:)

Definition der Funktion:
void Funktion(char** Code, int* Size)

Also, es scheint so, als wuerde diese Funktion den Zeiger auf dein Char-Array auch ausserhalb der Funktion veraendern wollen. Innerhalb dieser Funktion kannst du ganz normal mittels (*Code)[i] auf die i-te Komponente deines Char-Arrays zugreifen. Du hast wahrscheinlich *Code[i] versucht (also die Klammern weggelassen), was deswegen nicht funktioniert, weil eckige Klammern hoehere Prioritaet haben als der Dereferenzierungs-Opertaor.

Zugriff auf die Funktion:
Funktion(&Code, &Size);

Es wird die Adresse der Variablen Code uebergeben, also nicht der char-Zeiger selbst. Deswegen musst du innerhalb obiger Funktion (*Code) schreiben, um den Zeiger selbst zu erhalten!

mit den Variablendefinitionen:
char* Code;
int Size;

Ja, das ist klar.

Ausserhalb der Funktion kannst du also mittels Code[i] auf die einzelnen Komponenten des char-Arrays zugreifen.

Ist C nicht eine geile Sprache :smile:))

cu Stefan.

Hallo!

Ich habe jetzt versucht eine Funktion zu schreiben die genau denselben Typ übergibt wie in meinen vergefertigten Funktionen. Denn auf den Code innerhalb der Funktionen habe ich keinen Zugriff. Das ist mir allerdings nur mit einem zweidimensionalem Array gelungen. Wie müßte eine Zuweisung in einer Funktion aussehen, die die gleiche Variable zurückgibt?

Hi Peter:smile:)

Definition der Funktion:
void Funktion(char** Code, int* Size)

Also, es scheint so, als wuerde diese
Funktion den Zeiger auf dein Char-Array
auch ausserhalb der Funktion veraendern
wollen. Innerhalb dieser Funktion kannst
du ganz normal mittels (*Code)[i] auf die
i-te Komponente deines Char-Arrays
zugreifen. Du hast wahrscheinlich
*Code[i] versucht (also die Klammern
weggelassen), was deswegen nicht
funktioniert, weil eckige Klammern
hoehere Prioritaet haben als der
Dereferenzierungs-Opertaor.

Zugriff auf die Funktion:
Funktion(&Code, &Size);

Es wird die Adresse der Variablen Code
uebergeben, also nicht der char-Zeiger
selbst. Deswegen musst du innerhalb
obiger Funktion (*Code) schreiben, um den
Zeiger selbst zu erhalten!

mit den Variablendefinitionen:
char* Code;
int Size;

Ja, das ist klar.

Ausserhalb der Funktion kannst du also
mittels Code[i] auf die einzelnen
Komponenten des char-Arrays zugreifen.

Genau das funktioniert aber nicht. Das war nämlich mein erster Versuch.

Ist C nicht eine geile Sprache :smile:))

Naja, da bin ich mir noch nicht so sicher. Mitlerweile habe ich schon einige Programme recht passabel hinbekommen. Aber dieses Problem beschäftigt mcih schon seit einem Jahr und ich komme zu keiner Lösung. Und das ärgert mich, und somit ärgert mich die Sprache :frowning:((

cu Stefan.

Danke
Peter

Nachtrag zur vorigen Nachricht
Ich habe mit folgendem Code herumgespielt:

#include „stdafx.h“
#include „iostream.h“

void Funktion(char** t_cpCode, int* t_ipSize)
{ char t_caCode[2];

t_caCode[0] = ‚a‘;
t_caCode[1] = ‚b‘;
t_cpCode = new char*[2];
t_cpCode[0] = t_caCode;
*t_ipSize = 2;
}

void main()
{ char* t_cpTest;
char t_cTest;
int t_iSize;

Funktion(&t_cpTest, &t_iSize);
t_cTest = ; // genau diese Zuweisung schaffe ich nicht
cout

Hi Peter :smile:))

Ich habe mal die Stellen, von denen ich meine, dass sie nicht ganz richtig sind, korrigiert …

#include „stdafx.h“
#include „iostream.h“

void Funktion(char** t_cpCode, int* t_ipSize) {
*t_cpCode = new char[2];
(*t_cpCode)[0] = ‚a‘;
(*t_cpCode)[1] = ‚b‘;
*t_ipSize = 2; }

void main() {
char* t_cpTest;
char t_cTest;
int t_iSize;

Funktion(&t_cpTest, &t_iSize);
t_cTest = t_cpTest[0];
cout
cu Stefan.