Zum Inhalt springen

CRichEditView Streamin\out in DB speichern


-camper-cleo

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...