void* in CString



  • Hallo zusammen,

    weis einer von Euch wie ich einen Typenlosen Zeiger in CString konvertieren kann. Möchte:

    CString ZeichenKette;
    ...
    datei.Read(ZeichenKette, 100);

    verwenden.

    danke im vorraus !

    MfG



  • Hallo, ich würde mir einen Buffer anlegen und den dann an CString übergeben...

    char buffer[100+1];    //ich weiß immer nicht, ob ich für '/0' zusätzlich platz brauche
    datei.read(buffer, 100);    //oder cast: (void*)buffer
    
    CString zeichenkette;
    zeichenkette = buffer;    //oder auch CString zeichenkette(buffer);
    

    Gruss mathi



  • wie ich einen Typenlosen Zeiger in CString konvertieren kann

    Gar nicht. Man kann immer nur Zeiger in Zeiger konvertieren. CString ist KEIN Zeiger.

    CString Zeichenkette;
    datei.Read( Zeichenkette.GetBufferSetLength( 101), 100);
    Zeichenkette.ReleaseBuffer( -1);
    


  • Danke

    ich muss aber die tatsächliche Grösse schon vorher bestimmen, es darf kein übergrosses Array definiert sein.



  • ich muss aber die tatsächliche Grösse schon vorher bestimmen, es darf kein übergrosses Array definiert sein

    Wer hindert dich daran?



  • datei.Read(str, sizeof(pStr));

    TCHAR pStr = new TCHAR[(sizeof(str)]; // funzt nicht
    datei.Close();

    Ich will bevor ich aus einer Datei gelesen habe die grösse des arrays bestimmen ohne das ein überschuss entsteht



  • Hallo, ich denke in dem Fall musst du das über einen Buffer machen. FileRead-Funktionen liefern die Anzahl der gelesenen Zeichen zurück.

    CString zeichenkette;
    
    char buffer[100+1];
    UINT anzRead = datei.Read(buffer, 100);
    buffer[anzRead] = '\0';    //String-ende setzen
    
    zeichenkette = buffer;
    

    So sollte das funktionieren, wichtig ist die escape-sequenz '\0' (String termination).

    Gruss mathi

    PS.:

    Ich will bevor ich aus einer Datei gelesen habe die grösse des arrays bestimmen ...

    würde mich wundern, wenn dass geht 😉

    [ Dieser Beitrag wurde am 31.03.2003 um 13:43 Uhr von mathi editiert. ]



  • Ich habs so hinbekommen:

    CFile datei(m_strPath, CFile::modeRead);
    DWORD size_buff = datei.GetLength();
    TCHAR* pStr = new TCHAR[size_buff+1];
    datei.Read(pStr, (size_buff));
    datei.Close();
    ...
    delete[] pStr;

    trotzdem danke

    MfG



  • Thema verfehlt, 6, setzen

    Die Frage wäre gewesen: "Wie bestimme ich die Grösse einer Datei?"



  • Man kann doch auch einfach mit ReadString arbeiten wenn man die Datei in nen String holen will...



  • Sorry hast recht

    MfG


Anmelden zum Antworten