N
Hallo zusammen,
Ich habe folgendes Problem: Ich habe eine Variable die ich einer Funktion, in welcher die Variable verändert wird, übergebe. Danach will ich die veränderte Variable im Hauptprogramm weiternutzen.
Also im Hauptprogramm habe ich folgendes:
BYTE* outbuffer = (BYTE*)new BYTE[bufSize]; //output buffer
BOOL ok=JpegFile::Compress(dataBuf,bufSize,width, height,FALSE,75,&outbuffer);
HANDLE hFile3 = CreateFile("compressed_image.jpg",
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
DWORD num_read2 = -1;
if(!WriteFile(hFile3,outbuffer /*bytes*/ , bufSize /*bufLength*/, &num_read2, NULL))
printf("Error\n");
errno_t err = GetLastError();
CloseHandle(hFile3);
outbuffer ist die Variable um die's geht.
Die Deklaration von Compress sieht folgendermaßen aus:
static BOOL Compress(BYTE *dataBuf, /* RGB buffer */
long bufLength, /*RGB Buffer Size */
UINT width, /* pixels */
UINT height, /* rows */
BOOL color, /* TRUE = RGB */ /* FALSE = Grayscale */
int quality, // 0 - 100
void* outbuffer /* output buffer */);
In der Funktion Compress() wird die Veriable Outbuffer nur mehr einmal verwendet und zwar:
outbuffer = (BYTE*)jpeg_finish_compress(&cinfo);
Die WriteFile Funktion liefert mir leider nur ein leeres File, also denke ich, dass mein Fehler beim Umgang mit den Pointern liegt. Wenn ich das WriteFile in Compress() ausführe, funktioniert alles fehlerfrei.
Ich habe schon andere Varianten probiert, aber bis jetzt war keine von Erfolg gekrönt.
Vielleicht kann mir jemand ei meinem Problem weiterhelfen!
lg,
nac_