CString to char *



  • Hi,

    ich habe folgende Funktionen:

    int CStandard::getComputername(char *zielstring)
    {
    	zielstring[0]='\0';
    	DWORD nnSize = UNLEN +1;
    	if (!GetComputerName(zielstring, &nnSize))
    	{
    		writeLine("Fehler!!! Konnte den Computernamen nicht ermitteln!");
    		return -1;
    	}
    	else
    	{
    		return 0;
    	}
    }
    

    Ich würde die Funktion gerne so nutzen:

    BOOL CHilfeKopieDlg::OnInitDialog()
    {
    ...
    	CString strAktRQ;
    	getComputername(strAktRQ);
    ...
    	return TRUE;
    }
    

    Kann man statt einem ***char **** einen CString übergeben und wenn, dann wie?

    Bin für jede Idee dankbar
    Gruß



  • CString::GetBuffer(0)



  • Hi,

    der Compiler meckert schon mal nicht. 🙂

    Ich habe das mal bei 2 Funktionen versucht

    1) CString strAktRQ;
    2) CString strINIPath;
    3) getComputername(strAktRQ.GetBuffer(0)); //int getComputername(char * zielstring);
    4) getCurrDirectory(strINIPath.GetBuffer(0));  //int getCurrDirectory(char * zielstring);
    5) strINIPath = strINIPath + "HilfeKopie.ini";
    

    Keine Ahnung warum, aber bei der Ausgabe der CStrings scheint strAktRQ leer zu sein und strINIPath nur "HilfeKopie.ini" zu enthalten. Beim Debuggen steht nach der Zeile 4 in beiden CStrings das Ergebnis von getCurrDirectory() (z.B. "C:\HilfeKopie\Debug\") 😕
    Nach der Zeile 5 steht dann in strINIPath nur noch HilfeKopie.ini 😕



  • Achso sorry, die 2. Funktion sieht so aus:

    int CStandard::getCurrDirectory(char *zielstring)
    {
        char szBuffer[MAX_PATH+2];
        char *pFilename;
        if(GetModuleFileName(NULL, szBuffer, MAX_PATH) > 0)
    	{
    		if(GetFullPathName(szBuffer, sizeof (szBuffer), zielstring, &pFilename) > 0)
    		{
    			zielstring[pFilename-zielstring] = '\0';
    			return 0;
    		}
    		else
    			return -1;
    	}
    	else
    		return -1;
    }
    

Anmelden zum Antworten