Clipboard funktioniert in Debug-Version, leider nicht bei der Release-Version.



  • Vielen Dankfür deinen Tipp, nur leider hat er nicht geholfen 😞
    Der Parameter beschreibt nur die Minimalgröße. Eine Änderung hat leider nichts bewirkt und wenn das der Fehler gewesen wäre, dann müsste er doch eigentlich auch in der Debug Version auftreten oder?



  • hmm,
    du kann ja mal nen normalen strcpy versuchen.



  • Habe ich auch schon versucht. Beim compilieren bekomme ich da folgenden Fehler:

    strcpy(buffer, (LPCSTR)source);
    
    error C2440: 'type cast' : cannot convert from 'CString' to 'LPCSTR'
    

    Wieder nur in der Release Version...



  • strcpy(buffer, source.GetBuffer(source.GetLenght()));
    


  • Erstmal noch einmal vielen Dank für deine Hilfe!
    Jetzt kann ich es auch mit der Funktion strcpy testen nur leider bleibt das Ergebnis das gleiche 😞

    In der Release Version wird immer nur das erste Zeichen aus dem Clipboard angezeigt und nicht der ganze String.
    Ich werd langsam verrückt 😞

    Gibt es vielleicht eine ganz andere Möglichkeit meine Anforderung zu erfüllen?
    Ich möchte gerne Text aus dem Prgramm in ein editierbares Feld eines Dialogs ausgeben.
    Lohnt ein Test mit Rich Edit 2.0 Control?

    Für weitere Hilfe wäre ich sehr dankbar!



  • Du willst nur Text in einem CEdit setzen ??
    Dann verwende doch SendDlgItemMessage mit WM_SETTEXT:

    SendDlgItemMessage(IDC_EDIT, m WM_SETTEXT, 0, reinterpret_cast<LPARAM>(szText));
    

    Ansonsten debugge doch mal dein Release. Vielleicht lässt sich da was erkennen.



  • Ich habe den Quellcode jetzt wie folgt geändert:

    WPARAM length = SendDlgItemMessage( IDC_TRACE, WM_GETTEXTLENGTH, 0, 0 );
    char *buffer = new char [length+source.GetLength()+1];
    LRESULT got = SendDlgItemMessage( IDC_TRACE, WM_GETTEXT, length+1, (LPARAM)buffer );
    
    long lLen = source.GetLength () + 1; 
    //memcpy( &buffer[length], source.GetBuffer(lLen), lLen ); 		
    strcpy(&buffer[length], (LPCSTR)source.GetBuffer(source.GetLength()));
    
    SendDlgItemMessage(IDC_TRACE, WM_SETTEXT, 0, (LPARAM)buffer);
    
    delete [] buffer;
    

    Leider bleibt die Ausgabe nicht zufriedenstellend 😞

    Debug Version:
    Context established...
    Smartcard Readers found:
    - SCM Microsystems Inc. SCR33x USB Smart Card Reader 0
    Smartcard connected...

    Release Version:
    C몭몭몭몭몭A몭꯮ꮫꮫꮫﺫﻮﻮﻮ

    Ich hoffe jemanden fällt eine Lösung ein.



  • So langsam kommen wir der Lösung näher.
    Ich bin Unmsteiger von Visual Studio 6.0 und da konnte man noch nicht im Release Modus debuggen.
    Durch den Tipp habe ich folgendes gefunden. Im Speicher des CString gibt es einen Unterschied bei
    der Release zur Debug Version:

    Release:
    0x0037FF40  43 00 6f 00 6e 00 74 00 65 00 78 00 74 00 20 00  C.o.n.t.e.x.t. .
    Debug:
    0x0037A438  43 6f 6e 74 65 78 74 20 65 73 74 61 62 6c 69 73  Context establis
    

    Durch die trennenden 00 können die Strings natürlich nicht verarbeitet werden.

    Bleibt die Frage ob das immer so ist und wie ich einen CString auslesen ohne die 00?

    Hoffentlich bleibt das jetzt die letzte Frage... 🙂



  • was hast du eigendlich für projecteinstellungen unter zeichensatz?
    unicode- o. multi-byte zeichensatz



  • Genau das wars:
    Configuration Properties - General - Character Set = Use Multi-Byte Character Set

    Und schon gehts! Oh man, dafür habe ich so viele Stunden gebraucht 😞

    Naja, Danke für eure Hilfe. Besonders der Tipp mit dem debuggen wird mir sicher nochmal helfen.

    Viele Grüße
    Keks


Anmelden zum Antworten