Bartleby Geschrieben 22. Oktober 2001 Geschrieben 22. Oktober 2001 Hi, ich hab ein Problem mit Variablen. In einem Header von einem Hersteller wird eine Konstante mit "define" definiert: #define SQLILRL "RL" Wenn ich diese Variable im Programm verwende, kommt folgende Fehlermeldung: : error C2664: '_mbscat' : Konvertierung des Parameters 2 von 'unsigned char' in 'const unsigned char *' nicht moeglich Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat Kann mir wer helfen, und mir sagen, wie ich die Variable Konvertieren muss? Zitieren
TingleTangle Geschrieben 22. Oktober 2001 Geschrieben 22. Oktober 2001 Es handelt sich hier nicht um eine Konstante sondern um eine Symbol-Konstante. Der mit #define definerte Wert wird nicht als Speicheradresse initialisiert, sondern ruft nur ein Compiler-Replace hervor. Wie sieht den deine Referenz aus? Du musst vermutlich den Aufruf, oder die Definition ändern. Zitieren
Bartleby Geschrieben 22. Oktober 2001 Autor Geschrieben 22. Oktober 2001 uups, habe leider den Aufruf vergessen, also hier ist der Aufruf der Funktion : nSqlCode = sqlsil (g_SqlCur, SQLILRL); Zitieren
haddock Geschrieben 22. Oktober 2001 Geschrieben 22. Oktober 2001 Schön, aber wie ist nSqlCode deklariert, von welchem Typ erwartet es den 2. Parameter ??? String-Literale sind immer vom Typ const char* (nix anderes ist das durch den preproz eingesetzte "RL"), das scheint ja nicht zu passen :confused: Zitieren
Bartleby Geschrieben 22. Oktober 2001 Autor Geschrieben 22. Oktober 2001 Das Problem ist, das sowohl die Funktion sqlsil wie auch nSQLCode von dem Hersteller vordefiniert sind, und ich diese leider net ändern kann, ich habe auch keine Informationen was die Funktion tut, kenne nur den Übergabeparameter (eben unsigned char *, der erste ist unsigned short) und weiß was ich mit dem Return anfangen soll... Ich brauch eigentlich nur ne Funktion, die mir aus dem SQLILRL ein unsigned char macht... Vielleicht kann mir trotzdem jemand helfen, ich kenn mich mit C++ net so aus, und interessier mich eigentlich net dafür, nur muss ich mich damit in der Firma damit beschäftigen... Zitieren
haddock Geschrieben 22. Oktober 2001 Geschrieben 22. Oktober 2001 cast it, baby: nSqlCode = sqlsil (g_SqlCur, [b](unsigned char*)[/b] SQLILRL); <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR> (...) ich kenn mich mit C++ net so aus, und interessier mich eigentlich net dafür, nur muss ich mich damit in der Firma damit beschäftigen... Zitieren
Bartleby Geschrieben 22. Oktober 2001 Autor Geschrieben 22. Oktober 2001 Danke, das hat geholfen. @Captain: Ich hab während der Ausbildung festgestellt, daß diese Branche nicht das ist, was ich machen will , nun such ich was anderes... Zitieren
haddock Geschrieben 22. Oktober 2001 Geschrieben 22. Oktober 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Bartleby: <STRONG>@Captain: Ich hab während der Ausbildung festgestellt, daß diese Branche nicht das ist, was ich machen will , nun such ich was anderes...</STRONG> Zitieren
TingleTangle Geschrieben 23. Oktober 2001 Geschrieben 23. Oktober 2001 Ich würde im Debugger noch mal checken, ob der Typ durch den Cast nicht verdreht wird, oder obs passt. Je nach dem ob irgendwelche pragma's im Einsatz sind oder nicht. Zitieren
haddock Geschrieben 23. Oktober 2001 Geschrieben 23. Oktober 2001 Naja, solange sich die char-Werte in den symbolischen Konstanten alle innerhalb von ASCII-7 bewegen, also c <= 127, sollte durch den cast kein Verdreher auftreten. @bartleby: schau dir die #defines an, wenn keine Umlaute/Sonderzeichen oberhalb ascii(127) vorkommen, besteht keine Gefahr. Zitieren
Bartleby Geschrieben 23. Oktober 2001 Autor Geschrieben 23. Oktober 2001 Ich sagte doch schon, daß es funktioniert, habe nun nur noch ein paar Probleme mit "Doppeldefinitionen" wegen diverser HEader, aber das krieg ich auch noch irgendwie hin... Thx anyway Zitieren
TingleTangle Geschrieben 23. Oktober 2001 Geschrieben 23. Oktober 2001 ich denke // ist dein Freund Zitieren
Bartleby Geschrieben 24. Oktober 2001 Autor Geschrieben 24. Oktober 2001 Ich hoffe, daß "//" meine Freunde werden, ich suche nur noch, wo sie hinwollen , hab da nicht wirklich den Durchblick ... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.