wie konvertiere ich char nach TCHAR?



  • Hallo

    wenn ich

    #define UNICODE 
    
    int scan(char* ip)
    {
     LPTSTR server = ip;
    .
    .
    .
    }
    

    kompilieren will gibt es die Fehlermeldung : "connont convert `char' to`TCHAR*' in initialisation"*

    Ich hab schon LPTSTR server = _T(ip); probiert etc. habe aber das passende noch nicht gefunden.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum MFC mit dem Visual C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • TCHAR ist entweder char oder wchar_t. TCHAR ist kein eigener Typ. Es gibt ein paar Funktionen, die können zwischen char und wchar_t konvertieren und auch nach/von TCHAR, je nachdem was TCHAR gerade ist. Einfach mal in der MSDN suchen...



  • Also ich find da in der MSDN nur Parse und das wandelt nur einzelne Zeichen um. Für ne Funktion die gleich nen ganzen string umwandelt wäre ich sehr dankbar.

    Mfg
    nob





  • sorry aber ich kriegs einfach nich gebacken und langsam geht mir mein versuchswille verloren. ich poste mal ein stückchen code vlt kann mir dann einer weiterhelfen:

    #define UNICODE
    #include <windows.h>
    #include <stdio.h>
    #include <fstream.h>
    #include <iostream>
    #include <lm.h>
    
    using namespace std;
    
    int scan(char *ip)
    {
     PSHARE_INFO_2 muha, muha2;
     NET_API_STATUS muh;
     DWORD maxlen = MAX_PREFERRED_LENGTH, er=0,tr=0,resume=0;
     int i = strlen(ip);
     LPTSTR server[19];          
     for(int u = 0; 0 < i; u++)
     {
      server[u] = new wchar_t(ip[u]); // Hier ist der Kritische Part
     }                                
     cout << server << endl;
    
     printf("Share:              Local Path:                   Uses:   Descriptor:\n");
     printf("---------------------------------------------------------------------\n");
    
     do
     {
      muh = NetShareEnum(server, 2, (LPBYTE *) &muha, maxlen, &er, &tr, &resume);
    
      if(muh == ERROR_SUCCESS || muh == ERROR_MORE_DATA)
      {
       muha2=muha;
    
       for(int i = 1; i < er; i++)
       {
        printf("%-20S%-30S%-8u",muha2->shi2_netname, muha2->shi2_path, muha2->shi2_current_uses);
        printf("\n\n\n");
        muha2++;
       }
       NetApiBufferFree(muha);
      }
      else 
      printf("Error: %ld\n", muh);
     }while (muh == ERROR_MORE_DATA); 
     return 0;
    }
    
    int main(int argc, char *argv[]) 
    {
     char ip[] = "\\\\999.999.999.999", ifile[] = "C:\\ips.txt", c;
     int i;
     ifstream ips;
    
     ips.open(ifile, ios::in | ios::binary);
     if(!ips)
     {
      printf("Error: Could not open %d!\n", ifile);
      goto ENDE;
     }
    
     while(!ips.eof())
     {
      i = 0;
      while(ips.get(c))
      {
       if(c == '\r') 
       {
        ips.get(c);
        break;
       }
       ip[i++] = c;
      }
      ip[i] = '\0';
      cout << i << " " << ip << " wird gescanned!" << endl;
      scan(ip);
     }
     ips.close();
     return 0;
    }
    

    Mfg
    nob



  • Nimm die WinAPI-Funktion MultiByteToWideChar


Anmelden zum Antworten