AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [C/C++] cannot convert `const wchar_t*' to `const char*'
Thema durchsuchen
Ansicht
Themen-Optionen

[C/C++] cannot convert `const wchar_t*' to `const char*'

Ein Thema von Luckie · begonnen am 29. Sep 2006 · letzter Beitrag vom 2. Okt 2006
Antwort Antwort
Seite 2 von 2     12   
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#11

Re: [C/C++] cannot convert `const wchar_t*' to `const char*'

  Alt 2. Okt 2006, 10:52
Hallo,

ich habe mich gerade schlau gemacht: Es gibt keine Unicode-Version von GetProcAddress. Die Antwort auf das Warum ist einfach: Ein Funktionsname muss immer aus ASCII-Zeichen bestehen, deshalb ist eine Unicode-Version sinnlos.

Dir wird also nichts anderes übrigbleiben, als Deinen Unicode-String in einen Ansistring umzuwandeln (und nicht einfach nur zu casten).

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)
Online

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#12

Re: [C/C++] cannot convert `const wchar_t*' to `const char*'

  Alt 2. Okt 2006, 10:56
Jetzt wo Du es sagst macht das tatsächlich Sinn
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#13

Re: [C/C++] cannot convert `const wchar_t*' to `const char*'

  Alt 2. Okt 2006, 11:10
OK. Dann definiere ich die Konstante eben als char*. Ok, das geht ja dann.

Aber das Unicode macht mich noch wahnsinnig:
Code:
    _tprintf(_T("JNI_CreateJavaVM\n"));
   int status = JNI_CreateJavaVM(&jvm, (void **)&env, &vm_args);
#endif
       if (status != JNI_OK) {
       switch (status) {
          case JNI_ERR:
            _tprintf(_T("Error: %d\nunknown error\n"), status);
            break;
         case JNI_EDETACHED:
            _tprintf(_T("Error: %d\nthread detached from the VM\n"), status);
            break;
         case JNI_EVERSION:
            _tprintf(_T("Error: %d\nJNI version error\n"), status);
            break;
         case JNI_ENOMEM:
            _tprintf(_T("Error %d:\nnot enough memory\n"), status);
            break;
         case JNI_EEXIST:
            _tprintf(_T("Error %d:\nVM already created\n"), status);
            break;
         case JNI_EINVAL:
            _tprintf(_T("Error %d\ninvalid arguments\n"), status);
            break;
       }    
       return -1;
    }
    else {
       _tprintf(_T("JVM created successfully\n\n"));
    }
Ausgabe:
Zitat:
JNI_CreateJavaVM
J V M c r e a t e d s u c c e s s f u l l y
Das ist die Zeile vor dem Switch-Block und dann die Zeile im else-Abschnitt.
In der Konsole von Eclipse habe ich da lauter Rechtecke zwischen den Buchstaben und in der Windows Konsole sind es Leerzeichen. Warum macht er das aufeinmal? Die beiden Zeilen unterscheiden sich doch im Prinzip nicht von einander?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)
Online

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#14

Re: [C/C++] cannot convert `const wchar_t*' to `const char*'

  Alt 2. Okt 2006, 11:31
Hrm? Wenn Du die JVM in der zwischenzeit nicht lädst passiert das nicht, oder?
Was stellt denn die JVM mit der Ausgabe an? Wird da irgendwas umgebogen?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#15

Re: [C/C++] cannot convert `const wchar_t*' to `const char*'

  Alt 2. Okt 2006, 11:37
Mist, wenn ich den Aufruf auskommentiere geht es. Der Funktionsaufruf scheint also da irgendwas zu verbiegen. Nehme ich eine MessageBox geht es.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)
Online

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#16

Re: [C/C++] cannot convert `const wchar_t*' to `const char*'

  Alt 2. Okt 2006, 11:42
Da wird dann aber irgendwas ganz kräftig umgebogen so dass eine Funktion die vorher Unicode handeln konnte es danach nicht mehr kann.

Da würde ich mal bei Sun (oder woher kommt diese JVM?) in einem Forum anklopfen und da nachhaken. Das kann ja eigentlich wirklich ned sein.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#17

Re: [C/C++] cannot convert `const wchar_t*' to `const char*'

  Alt 2. Okt 2006, 18:40
Es ist immer ANSI oder ein Wert bis $FFFF, korrekt. Aber wenn man schonmal in die IAT und die Exporte von PE-Dateien geschaut hat, weiß man, daß es keine Unicode-Namen bei Funktionsnamen gibt - obwohl sowas wie UTF-7 oder UTF-8 denkbar wäre
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz