![]() |
Header aus PNG laden
Bin mir jetzt nicht sicher ob das so ok ist.
Es wird zwar True zurückgegeben aber den Headern habe ich deshalb trotzdem nicht. Wie bekomme ich den?
Delphi-Quellcode:
AniHeader = Record
Frame: WORD; Width: WORD; Height: WORD; Speed: WORD; offset: dword; reserved: dword; Sign: dword; end;
Delphi-Quellcode:
Falls nicht bitte sagen was falsch läuft.
function TAnimatePng.GetPngAnimation(wsFile: string; var anih: TAniHeader): Bool;
var ByteArray: array of byte; FileStream: TFileStream; IntI: Integer; begin Result := False; try FileStream := TFilestream.Create(wsFile ,fmopenread or fmShareDenyNone); SetLength(ByteArray, FileStream.Size); FileStream.Read(ByteArray[0], Length(ByteArray)); finally FileStream.Free; end; for IntI := Low(ByteArray) to High(ByteArray) do begin if (ByteArray[IntI] * 4) = StrToInt('ANIM') then Result := True end; end; gruss |
AW: Header aus PNG laden
Du liest den Header ja nirgends aus bzw. weißt deinem
Delphi-Quellcode:
Parameter niemals einen Wert zu.
var
Außerdem:
Delphi-Quellcode:
:?:
for IntI := Low(ByteArray) to High(ByteArray) do
begin if (ByteArray[IntI] * 4) = StrToInt('ANIM') then Result := True end; Was soll dieser Code bewirken? Ich kann nur sagen, dass
Delphi-Quellcode:
schonmal definitiv eine Exception schmeißen wird.
StrToInt('ANIM')
|
AW: Header aus PNG laden
Zitat:
Nein ein exeption wird nicht geworfen es kommt ein true zurück. Wie komme ich denn an den Header und kann nach dem anih.Sign := ANIM suchen? Die Daten sollten sich ja im ByteArray befinden. gruss |
AW: Header aus PNG laden
Zitat:
Zitat:
Zitat:
|
AW: Header aus PNG laden
So wie der Code oben abgebildet wirft er mir kein Exeption glaube mir das Bitte.
D2010. Zitat:
Am Anfang steht "IHDR" Am Ende steht "ANIM" Der Header ist so korrekt. gruss |
AW: Header aus PNG laden
Zitat:
Delphi-Quellcode:
mit ungültiger Zahl schon eine Exception geschmissen. So oder so ist "ANIM" auf jeden Fall keine Zahl, weshalb
StrToInt
Delphi-Quellcode:
nicht funktionieren kann und in irgendeiner Form fehlschlagen wird.
StrToInt
Aber nur zur Sicherheit: Der Code wird wirklich ausgeführt und du hast auch keinen Exception Handler um den Aufruf, der die Exception ggfls. abfangen könnte? Zitat:
Delphi-Quellcode:
ans Ende der Datei abzüglich
TFileStream.Seek
Delphi-Quellcode:
springen und den Header direkt mit
SizeOf(TAniHeader)
Delphi-Quellcode:
auslesen.
TFileStream.Read(anih, SizeOf(anih))
|
AW: Header aus PNG laden
Zitat:
Aber ich glaube dir das es falsch ist. Zitat:
gruss |
AW: Header aus PNG laden
Zitat:
Delphi-Quellcode:
denn für einen Wert zurück? Das ist jetzt mal spannend herauszufinden.
StrToInt('ANIM')
|
AW: Header aus PNG laden
Zitat:
Ausgeben tut er sonst nichts. Aber wie gesagt es kann nicht richtig sein auch wenn das Ergebnis true ist. So komme ich nicht an den Header. Das ist was ich sehe wenn IntI 8 ist. gruss |
AW: Header aus PNG laden
Zitat:
Delphi-Quellcode:
machst? Würde mich mal interessieren.
ShowMessage(IntToStr(StrToInt('ANIM')))
Zitat:
Delphi-Quellcode:
FileStream := TFilestream.Create(wsFile ,fmopenread or fmShareDenyNone);
try FileStream.Seek(-SizeOf(TAniHeader), soEnd); FileStream.Read(anih, SizeOf(anih)); finally FileStream.Free; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 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