Zum Inhalt springen

Fehler durch BCB5?


LLpresident

Empfohlene Beiträge

hey. ich habe folgenden quelltext aus der msdn übernommen. der quelltext soll überprüfen ob ein bestimmter benutzer in netzwerk angemeldet ist. aber wenn ich ihn ausführe bekomme ich mehrere fehlermeldungen. bin jetz am überlegen ob das am compiler liegt. wenn nicht:wer kann mir sagen wo der fehler liegt? kann mir jemand einen besseren vorschlag machen als diesen?

quelltext:

- Bitte nur den relevanten Code posten

- Bitte Code-Tags benutzen

- Bitte die fehlerhaften Zeilen kennzeichnen

Klotzkopp

Link zu diesem Kommentar
Auf anderen Seiten teilen

- Bitte nur den relevanten Code posten

- Bitte Code-Tags benutzen

- Bitte die fehlerhaften Zeilen kennzeichnen

Klotzkopp

fehlermeldungen:

[C++ Warnung] Unit1.cpp(92): W8012 Vergleich von signed- und unsigned-Werten

[C++ Fehler] Unit1.cpp(130): E2034 Konvertierung von 'wchar_t *' nach 'char *' nicht möglich

[C++ Fehler] Unit1.cpp(130): E2340 Keine Übereinstimmung des Typs beim Parameter 1 ('char *' erwartet, 'wchar_t *' erhalten)

[C++ Fehler] Unit1.cpp(130): E2034 Konvertierung von 'wchar_t *' nach 'const char *' nicht möglich

[C++ Fehler] Unit1.cpp(130): E2340 Keine Übereinstimmung des Typs beim Parameter 2 ('const char *' erwartet, 'wchar_t *' erhalten)

[C++ Fehler] Unit1.cpp(251): E2034 Konvertierung von 'wchar_t * *' nach 'char * *' nicht möglich

[C++ Fehler] Unit1.cpp(251): E2342 Keine Übereinstimmung des Typs beim Parameter 'StringSid' ('char * *' erwartet, 'wchar_t * *' erhalten)

[C++ Warnung] Unit1.cpp(306): W8012 Vergleich von signed- und unsigned-Werten

[C++ Warnung] Unit1.cpp(392): W8070 Funktion sollte einen Wert zurückgeben.

[C++ Warnung] Unit1.cpp(392): W8004 'pIADs' wurde ein Wert zugewiesen, der nie verwendet wird.

[C++ Warnung] Unit1.cpp(392): W8004 'pObj' wurde ein Wert zugewiesen, der nie verwendet wird.

thx im vorraus und schuldigung für die gestaltung. zeigt es mir anders an als er es eigentlich macht. übernimmt auch nicht die zusätzlichen leerzeichen. sorry noch mal.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von LLpresident

@klotzkopp. genau da liegt mein problem. ich weiss leider nicht in welchen zeilen der fehler liegt.

Das steht doch in der Fehlermeldung:

[C++ Fehler] Unit1.cpp(130): E2034 Konvertierung von 'wchar_t *' nach 'char *' nicht möglich

[C++ Fehler] Unit1.cpp(130): E2340 Keine Übereinstimmung des Typs beim Parameter 1 ('char *' erwartet, 'wchar_t *' erhalten)

[C++ Fehler] Unit1.cpp(130): E2034 Konvertierung von 'wchar_t *' nach 'const char *' nicht möglich

[C++ Fehler] Unit1.cpp(130): E2340 Keine Übereinstimmung des Typs beim Parameter 2 ('const char *' erwartet, 'wchar_t *' erhalten)

[C++ Fehler] Unit1.cpp(251): E2034 Konvertierung von 'wchar_t * *' nach 'char * *' nicht möglich

[C++ Fehler] Unit1.cpp(251): E2342 Keine Übereinstimmung des Typs beim Parameter 'StringSid' ('char * *' erwartet, 'wchar_t * *' erhalten)

und mit den code-tasks war ich mir unsicher wie das funktioniert. wenn ich mehr zeit hätte hätte ich erst mal im test-forum getestet. deshalb hab ich mich ja auch gleich entschuldigt.
Ach so, wenn man sich gleichzeitig entschuldigt, darf man machen, was man will? Naja...

Also bitte, zeig uns Zeile 130 und Zeile 251 von Unit1.cpp.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Klotzkopp

Du hast in genau zwei Zeilen Fehler.

Hm...wenn ich mir die Warnungen so angugge würde ich sagen das er noch nicht so lange programmiert. Wir sollten ihm das verzeihen...(nein nicht den langen quellcode, das übersehen der Fehlermeldung meine ich...)

...solltest du aber schon länger programmieren so sei dir gesagt: Klick mich...

Link zu diesem Kommentar
Auf anderen Seiten teilen

@hexagon: programiere schon ein weilchen. komme mit den fehlermeldungen trotzdem nicht so klar wegen objektorientiert und so.

auserdem wollte ich halt wissen ob euch noch ne bessere möglichkeit als diese einfällt.

hier die zwei zeilen:

130: wsprintf(pszSearchFilter, L"(&(objectClass=user)(objectCategory=person)%s)",szFilter);

251: ConvertSidToStringSid(pObjectSID, &szSID);

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von LLpresident

130: wsprintf(pszSearchFilter, L"(&(objectClass=user)(objectCategory=person)%s)",szFilter);

Hier meinst du vermutlich swprintf.

251: ConvertSidToStringSid(pObjectSID, &szSID);

Wenn du nicht UNICODE definierst, aber hier trotzdem die Unicode-Version haben willst, musst du die explizit aufrufen, mit ConvertSidToStringSidW.

auserdem wollte ich halt wissen ob euch noch ne bessere möglichkeit als diese einfällt.

Dazu wäre es hilfreich gewesen, zu erklären, was der Code tun soll...

Hat das einen bestimmten Grund, dass du überall wchar_t benutzt?

Link zu diesem Kommentar
Auf anderen Seiten teilen

@klotzkopp: ok. deine vorschläge haben geklappt. bekomme jetzt blos noch folgenden fehler:

[Linker Fehler] Unresolved external '_main' referenced from C:\PROGRAMME\BORLAND\CBUILDER5\LIB\C0X32.OBJ

diesen quelltext hab ich aus der msdn zum thema lastlogoff gefunden.

dadurch will ich herraus finden wann sich jemand das letzte mal ein- und ausgelogt hat über das netzwerk.

Link zu diesem Kommentar
Auf anderen Seiten teilen

irgentwie rall ich heut nix. hab die main jetz so gemacht:

void main()
{
HRESULT GetUserProperties(IADs * pObj);
HRESULT EnumeratePropertyValue(IADsPropertyEntry *pEntry);
HRESULT FindUserByName(IDirectorySearch *pSearchBase,LPOLESTR szFindUser,IADs **ppUser);
}[/PHP]

trozudem bekomme ich keine nachrichten oder kann irgentetwas eintippen. woran liegt das.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von LLpresident

irgentwie rall ich heut nix. hab die main jetz so gemacht:

void main()
{
HRESULT GetUserProperties(IADs * pObj);
HRESULT EnumeratePropertyValue(IADsPropertyEntry *pEntry);
HRESULT FindUserByName(IDirectorySearch *pSearchBase,LPOLESTR szFindUser,IADs **ppUser);
}[/PHP]

[/b]

Das schluckt dein Compiler? Das sind Funktionsdeklarationen, keine Aufrufe.

[b]trozudem bekomme ich keine nachrichten oder kann irgentetwas eintippen. woran liegt das. [/b]
Nachrichten?

Eintippen?

Das ist doch ein Konsolenprogramm, oder? Wo sollten da Nachrichten herkommen?

[b]frage:wieso funktioniert wmain nicht? das ganze programm basiert auf unicode, also müsste wmain doch funktionieren und als main-funktion erkannt werden oder nicht? muss ich vieleicht eine spezielle headerdatei einbinden? [/b]
Dein Programm "basiert" nicht auf Unicode. Dazu hättest du UNICODE auf globaler Ebene per Präprozessordirektive (oder in den Projekteinstellungen der IDE) definieren müssen. Und hättest du das getan, hättest du weiter oben nicht ConvertSidToStringSidW schreiben müssen.
Link zu diesem Kommentar
Auf anderen Seiten teilen

aha. gut. is eigentlich logisch. problem ist jetzt das mir aus der hilfe folgender text gegeben wurde:

(Kommandozeilenäquivalent: -WU)

Mit Hilfe dieser Option wird aus Quelltext, der die _txxxx-Makros in TCHAR.H verwendet, eine Unicode-Anwendung erzeugt. Wenn _UNICODE aktiviert ist, werden die Makros durch Unicode-Namen ersetzt, andernfalls durch Nicht-Unicode-Namen.

Beispielsweise kann der folgende Code in beiden Varianten compiliert werden (-WU erzeugt eine Uniocode-Anwendung).

#include <stdio.h>

#include <tchar.h>

int _tmain(char argc, _TCHAR ** _targv)

{

_TCHAR buff[200];

int i;

for (i = 0; i < argc; i++)

{

_tcscpy(buff, _targv);

_tprintf(_T("Argument %d:%s\n"), i, buff);

}

return 0;

}

In diesem Beispiel wird _tcscpy ersetzt durch wcscpy, wenn -WU verwendet wird, anderfalls durch strcpy. Ähnliches gilt für _tprintf/wprintf oder printf, _TCHAR/wchar_t oder char und _targv/_wargv oder _argv. Das Makro _T(...) wandelt den in Klammern stehenden String in Wide-Zeichen oder einen Standard-String um.

Die Header-Datei TCHAR.H bildet außerdem _tWinMain auf WinMain oder wWinMain ab und so weiter. Die komplette Umwandlungsliste finden Sie in der Header-Datei.

Standard = AUS

mein problem ist das ich keinen plan habe wo ich dieses -WU eintippen soll damit er unicode aktiviert. in den optionen für den compiler hab ich leider auch nichts gefunden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...