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
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
warum nicht 'unsigned char' statt 'char'?
unsigned char *Dateiname = "xyz.dat";
unsigned char *Pfad ="C:\\\\xyz\\\\";
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
dann 'caste' das ganze doch!
char* name = "laber laber";
unsigned char* castname;
castname = (unsigned char*)name;
Hi ShipHank, danke für deine Antwort, genauso funktionierts.
jetzt weißt du auch wie man 'casten' tut, nur ist das kein guter C++ Stil!
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
FILE *fp;
char *pfad="c:\\windows\\temp\\test.001";
fp=fopen(pfad,"w");
http://toosten.bei.t-online.de/
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!
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.