CLongBinary, wie schreibt daraus eine Datei?
-
hi,
Meine Datebank füllt mit ein CLongBinary Objekt mit einem MediumBlob aus der DB. in diesem Blob stehen in Binär daten, eine PDF file.
Mhmm ich weiss nun leider nicht wie ich die schreiben soll auf die Festplatte... habe mal mit CFile::Write() und ::WriteHuge() ausprobiert
hat aber leider nicht so geklappt...Habt ihr so ein Problem schonmal gehabt?
Vielen dank im Voraus
MfG,
T1c4L
-
wie ist denn die klasse definiert ?? ne standart klasse ist es auf jeden fall ncht; zumindest hab ich die nirgends !?
-
ich mache das mit CRecordset & ODBC, über den ClassWizard, der Erstellt dann auch anhand der Tabelle die ihc übernehme per ODBC automatisch die dazugehörigen Members z.B.
SQL:
table MyTable {
UINT PRIMARY KEY BLABLA PDD_PKEY;
MEDIUM BLOB PDD_PDFFILE;
}daraus würde er z.B. das bastel
class MyClass : public CRecordset { // jede menge classwzard zeugs // Field/Param Data //{{AFX_FIELD(CPepPrintdocDetails, CRecordset) long m_PKEY; CLongBinary m_PDD_PDFFILE; //}}AFX_FIELD }
-
Hallo,
CLongBinary hat als Member m_hData, ein HGLOBAL. Mit GlobalLock bekommt man einen zum HGLOBAL zugeordneten LPVOID auf den Speicherbereich, der dann schließlich für die CFile oder CStdioFile-Methoden zum Schreiben in Dateien benutzt werden kann (die Anzahl der Bytes steht in CLongBinary::m_dwDataLength zur Verfügung).
MfG
-
ich habe das mal ausprobiert...
mhmm nur weiss ich nicht so recht wie ich das LPVOID objekt jetzt mit CFile mit Write benutzen kann zum schreiben?...kannst du mir da vieleicht ein wenig hilfestellung geben bitte?
Vielen dank
T1c4L
-
sollte so gehen:
LPVOID pv = GlobalLock(m_PDD_PDFFILE.m_hData); CFile f("C:\\temp\\test.pdf", CFile::modeCreate | CFile::modeWrite); f.Write(pv, (UINT) m_PDD_PDFFILE.m_dwDataLength); f.Close(); GlobalUnlock(m_PDD_PDFFILE.m_hData);MfG
-
ich werde das gleich ausprobieren,
Vielen Dank schonmal.
MfG
T1c4L
-
habe das ausprobiert endlich

die Pdfs werden geschrieben, allerdings beim laden im reader kommt die Meldung "Beim Öffnen ist ein Fehler aufgetreten..."
mhmmm