Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

C++- Problem

(Anonym) / 9 Antworten / Baumansicht Nickles

Hi Leute!

Ich stehe als C++- Anfänger vor dem Problem, einer Funktion, die ich nur aus einer Header- Datei kenne, zwecks Datenbankzugriff den Namen einer Datei sowie deren Pfad als Argumente zu übergeben. Die Funktion sieht also so aus:

funktionsname( unsigned char*Dateiname, unsigned char* Pfad)

Mein Problem liegt nun darin, dass ich nicht weiss, wie ich den Dateinamen und den Pfadnamen übergeben kann. Ich habe versucht, die beiden Angaben als char- Felder zu übergeben, also beispielsweise so:
char*Dateiname="xyz.dat"; char*Pfad="C:\\\\xyz\\\\";
Dabei bekomme ich jedoch die Fehlermeldung, die Argumente könnten nicht nach "unsigned char" konvertiert werden und ich sollte den "reinterpret_cast- Operator" zur Umwandlung verwenden, von dessen Anwendung ich aber keine Ahnung habe.
Kann mir jemand vielleicht helfen und mir eine mögliche Form der Übergabe der beiden benötigten Angaben "Dateiname" und "Pfad" in einer zu "unsigned char" kompatiblen Form nennen???

Danke für eure Hilfe,

AcMe

bei Antwort benachrichtigen
(Anonym) Nachtrag zu: „C++- Problem“
Optionen

warum nicht 'unsigned char' statt 'char'?

unsigned char *Dateiname = "xyz.dat";
unsigned char *Pfad ="C:\\\\xyz\\\\";

bei Antwort benachrichtigen
(Anonym) Nachtrag zu: „warum nicht unsigned char statt char ? unsigned char Dateiname xyz.dat unsigned...“
Optionen

Danke für den Tipp, aber das habe ich schon versucht und erhalte als Fehlermeldung:

error C2440: 'initializing' : 'char [10]' kann nicht in 'unsigned char' konvertiert werden
Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat

Dies ist die gleiche Fehlermeldung, die ich auch bei der Übergabe eines Char- Feldes an die Funktion erhalte.

Für weitere Vorschläge bin ich sehr dankbar!!!#

Thanx, AcMe

bei Antwort benachrichtigen
ShipHank (Anonym) „Danke für den Tipp, aber das habe ich schon versucht und erhalte als...“
Optionen

dann 'caste' das ganze doch!

char* name = "laber laber";
unsigned char* castname;
castname = (unsigned char*)name;

bei Antwort benachrichtigen
(Anonym) ShipHank „dann caste das ganze doch! char name laber laber unsigned char castname castname...“
Optionen

Hi ShipHank, danke für deine Antwort, genauso funktionierts.

bei Antwort benachrichtigen
ShipHank (Anonym) „Hi ShipHank, danke für deine Antwort, genauso funktionierts. “
Optionen

jetzt weißt du auch wie man 'casten' tut, nur ist das kein guter C++ Stil!

bei Antwort benachrichtigen
(Anonym) ShipHank „jetzt weißt du auch wie man casten tut, nur ist das kein guter C Stil!“
Optionen

naja, war aber für die funktion notwendig und ich hab die header- datei, die zum "casten" zwingt (weil die funktion drinsteht), nicht geschrieben !!!
vielleicht hast du noch 'ne lösung für mein nächstes posting?? (siehe oben)

Thanx, AcMe

bei Antwort benachrichtigen
toosten (Anonym) „C++- Problem“
Optionen

FILE *fp;
char *pfad="c:\\windows\\temp\\test.001";
fp=fopen(pfad,"w");

http://toosten.bei.t-online.de/

bei Antwort benachrichtigen
(Anonym) toosten „FILE fp char pfad c: windows temp test.001 fp fopen pfad, w...“
Optionen

Das interessiert den Frager doch nicht!

Er hat eine Funktionssammlung, die ihm eine Funktion zum Öffnen von einer Datei zur Verfügung stellt und _die_, genau _die_ will er(muß er) nutzen!!! Jene welche, braucht halt uchar's als Param, die er mangels Wissen nicht liefern kann, deswegen fragt er ja auch hier, also braucht er einen 'cast' und nicht eine Möglichkeit nach ANSI C, Dateien zu öffnen!

bei Antwort benachrichtigen
(Anonym) Nachtrag zu: „C++- Problem“
Optionen

Hi AcMe,
"echtes" (hihi...) C++ wäre:

reinterpret_cast neuerTyp (alterTyp)

//falls es nicht angezeigt wird: neuer Typ steht in spitzen Klammern!

Aber Vorsicht: der reinterpret_cast-Operator kann alles in
jedes casten (const-Eigenschaft kriegt er allerdings nicht weg).
Er versucht beim Kompilieren den erforderlichen Datentyp zu reinterpretieren, der Compiler denkt sich also:"Oho, er hat
einen geladenen reinterpret_cast, und er wird ihn verdammtnochmal
ohne Skrupel benutzen!"
Der Compiler gibt also klein bei, was manchmal zu echt eigenartigen
Effekten führen kann.

PeeWee

PS: nochmal zum "echten" C++ - ich nehm auch immer den
alten C-cast (neu)alt. Is viel einfacher als static_cast
schreiben zu müssen.


bei Antwort benachrichtigen