-camper-cleo Geschrieben 19. September 2002 Teilen Geschrieben 19. September 2002 Holla. Also folgendes für mich alleine unlösbares Problem: ich arbeite mit VC++ und habe eine Sybasedatenbank. Ich möchte bzw. muss *heul* in einem RichEditView rtf -Dateien Importieren. <- kein problem nun is es aber so das ich diese rtf datei in meine Datenbank abspeichern möchte. datentyp von der spalte ist long varchar <- kein problem so jetzt enthält die rtf datei ein bild bzw nur n bild das ich in die tabelle abspeichern will datentyp der spalte blob das reinschreiben funktioniert teilweise ich bekomme zwar keinen fehler aber die datenbank schneidet was ab und nimmt formatierungen raus. Es ist halt nicht mehr das gleiche. Wenn ich jetzt diese Spalte wieder in meinen View laden will funktioniert das natürlich nicht. Nun haben wir uns gedacht das das am CString liegen kann mit dem ich die CallBack - funktion rumhantiere. (abschliessende 0 usw.) ok also habe versucht das bild in eine temorär datei zu speichern und dann dieses in die datenbank zu schreiben. funktioniert auch nicht <- Das programm erhängt sich bei der Callbackfunktion. usw. Hiemal ein Teil des ersten Versuchs, der im übrigen mit nur formatierten Texten funktioniert. static DWORD CALLBACK MyStreamOutCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb) { CString* pstrRTF = (CString*) dwCookie; char* sz = new char[cb+1]; strncpy(sz,(const char*)pbBuff,cb); *(sz+cb)=0; *pstrRTF += sz; *pcb = cb; delete [] sz; /* CFile* pFile = (CFile*) dwCookie; pFile->Write(pbBuff, cb); *pcb = cb; */ return 0; } ******************************* CString strFileName; CString Buffer; EDITSTREAM es; strFileName = "C:\\test.rtf"; CFile rtfFile(strFileName, CFile::modeCreate|CFile::modeWrite|CFile::modeRead); // NeuerEintrag(); es.dwCookie = (DWORD) &rtfFile; es.pfnCallback = MyStreamOutCallback; ((CMainFrame*)GetParentFrame())->m_p1->m_hauptanzeige->StreamOut(SF_RTF, es) ich hoffe es kann mir jemand helfen. bin am verzweifeln mfg cleo Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 19. September 2002 Teilen Geschrieben 19. September 2002 Hallo und willkommen auf dem Board Erstmal schieb ich Dich dahin, wo Du OnTopic bist, denn mit Standard-C/C++ hat CRichEditCtrl und der Rest der MFC nicht mehr viel zu tun Aber zum Thema: Hast Du mal geprüft, ob in den Daten, die in Deiner Callback-Funktion aufschlagen, Nullbytes auftauchen? Die dürften Dir die Behandlung mit Strings erschweren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
-camper-cleo Geschrieben 19. September 2002 Autor Teilen Geschrieben 19. September 2002 es sind keine Nullbytes drinne. aber ich habe es vorhin auch mit nem unsinged char array versucht indem ich das bild in ne extra datei abgespeichert habe und dem ding die länge mitgegeben habe. hab dann das bild in dieses array geschrieben und wollte es in die db speichern. und aus die maus. wieder einmal durchgelaufen durch die callback und das wars bzw. der hat das cfile objekt geöffnet aber nicht wieder geschlossen keine ahnung warum. dann haben ich noch weiter rumgedoktored und nix kam bei raus. vielleicht weiss ja jemand wie es gehen könnte bin natürlich auch für andere lösungsansätze dankbar. mfg [camper]cleo Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 19. September 2002 Teilen Geschrieben 19. September 2002 Der Ansatz mit CFile ist ja schon mal nicht schlecht. Aber ist das, was Du oben angegeben hast, der aktuelle Code? Da interpretierst Du nämlich den CFile*, der als Cookie reinkommt, als CString*. Das wird nicht funktionieren. Wo und wann schließt Du das CFile-Objekt? Wirft Write vielleicht eine Exception? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
-camper-cleo Geschrieben 19. September 2002 Autor Teilen Geschrieben 19. September 2002 naja deswegen sach ich ja auch das das der erste versuch war. schreib morgen den aktuellen code rein. mach etzt feierabend mfg [camper]cleo Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.