Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Variablen von char[x] in unsigned char *

Empfohlene Antworten

Veröffentlicht

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?

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.

uups, habe leider den Aufruf vergessen,

also hier ist der Aufruf der Funktion :

nSqlCode = sqlsil (g_SqlCur, SQLILRL);

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:

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...

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...

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...

<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>

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.

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.

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

ich denke // ist dein Freund ;)

Ich hoffe, daß "//" meine Freunde werden, ich suche nur noch, wo sie hinwollen :), hab da nicht wirklich den Durchblick ;)...

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.