![]() |
Stream Lesefehler
Hmm ich seh den Fehler nicht, vielleicht weiß wer von euch weiter.
Folgender Code funktioniert einwandfrei, während die Stream-Variante eine Exception bei jedem ReadBuffer auswirft mit der Meldung Stream-Lesefehler.
Delphi-Quellcode:
Stream-Variante, TTGAImage ist mit TTGAFile identisch und lediglich umbenannt:
type
TTGAFile = record iType: byte; // should be 2 w, h: word; // Width, Height bpp: byte; // Byte per Pixel data: ^byte; // Pixels, dynamic length end; procedure LoadTGA(const filename: string; var TGAFile: TTGAFile); var f: file; bytes: longword; begin assign(f, filename); reset(f, 1); // type seek(f, 2); blockread(f, TGAFile.iType, 1); // w, h, bpp seek(f, 12); blockread(f, TGAFile.w, 5); TGAFile.bpp := TGAFile.bpp div 8; // data bytes := TGAFile.w * TGAFile.h * TGAFile.bpp; getmem(TGAFile.data, bytes); seek(f, 18); blockread(f, TGAFile.data^, bytes); close(f); end;
Delphi-Quellcode:
procedure LoadTGA(const filename: string; var TGAImage: TTGAImage);
var FStream: TFileStream; ImageSize: longword; begin FStream := TFileStream.Create(filename, fmOpenRead); try //iType FStream.Seek(soFromBeginning, 2); FStream.ReadBuffer(TGAImage.iType, 1); //w, h, bpp FStream.Seek(soFromBeginning, 12); FStream.ReadBuffer(TGAImage.w, 5); TGAImage.bpp := TGAImage.bpp div 8; //Data ImageSize := TGAImage.w * TGAImage.h * TGAImage.bpp; GetMem(TGAImage.data, ImageSize); FStream.Seek(soFromBeginning, 18); FStream.ReadBuffer(TGAImage.data^, ImageSize); finally FStream.Free; end; end; |
Re: Stream Lesefehler
Delphi-Quellcode:
FStream.Seek(2, soFromBeginning);
|
Re: Stream Lesefehler
:wall:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz