AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia TGA - Was ein Dateiformat o.O
Thema durchsuchen
Ansicht
Themen-Optionen

TGA - Was ein Dateiformat o.O

Ein Thema von Neutral General · begonnen am 6. Aug 2006 · letzter Beitrag vom 15. Aug 2006
Antwort Antwort
Seite 2 von 2     12   
14. Aug 2006, 12:57
Dieses Thema wurde von "Phoenix" von "Klatsch und Tratsch" nach "Multimedia" verschoben.
Und Grafikformate gehören imho nach Multimedia.
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#12

Re: TGA - Was ein Dateiformat o.O

  Alt 14. Aug 2006, 13:02
Da steht leider genau das gleiche was auch in Wikipedia steht
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#13

Re: TGA - Was ein Dateiformat o.O

  Alt 14. Aug 2006, 13:19
Zitat von Neutral General:
Ich habe schon tausendmal drübergeguckt, aber ich konnte keinen Fehler entdecken

Meine Informationen habe ich aus Wikipedia:

Delphi-Quellcode:
  // Read First Footer
  AStream.Position := AStream.Size - 26;
  AStream.Read(TGAInfo.Footer.MetaOffset, SizeOf(Longword));
  AStream.Read(TGAInfo.Footer.DevOffset, SizeOf(Longword));
  for i:= 0 to 17 do
   AStream.Read(TGAInfo.Footer.Signature[i], SizeOf(Char));
  
  {
  !!!!!!! ------------- !!!!!!! <-- ab hier läuft was schief :|
  }
     

  // Dev Area
  AStream.Position := TGAInfo.Footer.DevOffset;
Hi, ich zitiere mal aus deiner Quelle:
Zitat von http://de.wikipedia.org/wiki/Targa_Image_File:
(4) optional ab Version 2.0 (wenn vorhanden, dann immer die letzten 26 Bytes)
(Anm. des Autors : Bezieht sich auf Footer in TGA-Dateien)
Die letzten 26 Byte sind bei einem Nullbasierten Index natürlich AStream.Size - 27 (1tes Byte = AStream.Postion = 0), du liest hier also einen vollkommen falschen Footer ein, darin liegen sicher die Probleme.

Zitat von Neutral General:
Kann sich vielleicht einer die Mühe machen und mal gucken ob er einen Fehler findet ?
Also ich finde nichts...
Du hast doch eigentlich schon oft genug gepostet um zu wissen, dass sich die Leute hier gerne die Mühe machen, du es ihnen aber auch leichter machen kannst, indem du zum Beispiel mal das Projekt anhängen würdest! Dann guckt sich vielleicht auch jmd. die anderen Probleme an.
Sorry falls ich hier oder im anderen Beitrag den Anhang übersehen haben sollte! Wenn du aber wirklich nur das Stück Code hier gepostet hast, dann die Bitte beim nächsten mal dran denken, macht vieles einfacher! (zusätzlich zu dem geposteten Code)

Gruß Der Unwissende

[EDIT]
Mal nach einem zweiten Blick auf deinen Source, möchte ich hier noch ein paar Dinge ergänzen. Die Betreffen auch direkt deine noch anstehenden Probleme.
Du verarbeitest die Datei etwas zu blauäugig. Nicht jedes File dass mit einem Programm geöffnet wird hält sich immer an die Spezifikation. Dies kann an einer falschen Implementierung des Erstellers liegen, die dann auch mutwillig sein kann. Bevor du in einem Stream einen Wert ausliest (oder auch nur die Position wechselst) solltest du unbedingt validieren, ob es ein gültiger Zugriff ist. Beim Stream heißt das, dass du gucken solltest ob die Position Offset + sizeOf(Datum) < Stream.Size ist. Nur wenn dies der Fall ist, liegt das Datum in der Datei. Alles andere kann ein Versehen sein oder nicht und würde nur im besten Fall zu einer Fehlermeldung führen. Schlechter ist es, wenn du hier in einem fremden Speicherbereich landest, besonders wenn es hier zum Schreiben kommen würde...
Jedenfalls kannst du das leicht in eine Methode auslagern, die du dann zum Lesen verwendest.
An sich solltest du schon hier weniger in einer Methode machen. Lies lieber die einzelnen Teile in einzelnen Methoden aus, sollte es mal eine Version 2.x oder 3.0 geben, kannst du hier leichter Teile wiederverwenden und austauschen.
[/EDIT]
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#14

Re: TGA - Was ein Dateiformat o.O

  Alt 14. Aug 2006, 13:50
Also -27 ist nachweislich falsch. Denn bei -27 wird die Signatur falsch ausgelesen. Bei -26 richtig!
Ok habe dann mal die TGA-Unit angehängt.. Zum benutzen innem Image einfach in das Projekt einbinden und halt

Image1.Picture.LoadFromFile('APicture.tga');
Angehängte Dateien
Dateityp: pas tgaimage_159.pas (11,4 KB, 19x aufgerufen)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#15

Re: TGA - Was ein Dateiformat o.O

  Alt 15. Aug 2006, 16:33
Hat sich denn mal jemand die Unit angeguckt ?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 00:18 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