AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stream Lesefehler

Ein Thema von Cyf · begonnen am 27. Jun 2008 · letzter Beitrag vom 27. Jun 2008
Antwort Antwort
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#1

Stream Lesefehler

  Alt 27. Jun 2008, 16:53
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:
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;
Stream-Variante, TTGAImage ist mit TTGAFile identisch und lediglich umbenannt:

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;
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Stream Lesefehler

  Alt 27. Jun 2008, 17:22
FStream.Seek(2, soFromBeginning);
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#3

Re: Stream Lesefehler

  Alt 27. Jun 2008, 17:33
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz