![]() |
E/A-Fehler 998 bei BlockRead :(
Delphi-Quellcode:
Mit dieser Prozedure hab ich angefangen zu versuchen eine Datei in ein eigenes Archiv hinzuzufügen, allerdings stüzt das Programm in der BlockRead-Zeile mit einem E/A-Fehler 998 ab.
function AddToArchive(archive_filename:String;InstallPath:String;FileName:String):boolean;
var fpos_start:cardinal; CRC:DWORD; buf:array[0..10000] of DWORD; OneChar:Char; fArchiv,fSource:file; gelesen:integer; i:integer; fName:String; begin // Fügt eine Datei dem Archiv hinzu CRC:=0; OneChar:=#0; gelesen:=0; AssignFile(fArchiv,archive_filename); AssignFile(fSource,FileName); reset(fArchiv); reset(fSource); fpos_start:=filesize(fArchiv); seek(fArchiv,fpos_start); FName:=InstallPath+ExtractFileName(FileName); BlockWrite(fArchiv,CRC,SizeOf(CRC)); BlockWrite(fArchiv,FName,length(FName)); BlockWrite(fArchiv,OneChar,SizeOf(OneChar)); While Not eof(fSource) do begin BlockRead(fSource,Buf,10000,gelesen); BlockWrite(fArchiv,Buf,gelesen); For i := 0 to gelesen do begin CRC:=CRC xor Buf[i]; end; end; CloseFile(fSource); CloseFile(fArchiv); end; Ich konnte leider bisher nichts finden, deshalb hoffe ich hier eine antwort auf die Frage zu finden. Was bedeutet dieser e/A-Fehler 998 und wie kann ich ihn vermeiden? |
Re: E/A-Fehler 998 bei BlockRead :(
Hab hier im forum nochmal mit anderen Suchbegriffen gessucht und habe den hinweis gefunden in der blockeadzeile das buf zu buf[0] zu ändern. Das hat an meine Prblem allerdings nichts geändert :(
|
Re: E/A-Fehler 998 bei BlockRead :(
Hi,
was der Fehler 998 bedeutet, weiß ich auch nicht aus dem Hut. Allerdings fällt mir auf, dass bei Reset(fSource) die Blockgröße nicht angegeben wird. Der Standardwert für den optionalen Parameter RecSize ist 128 (lt. Delphi-Hilfe). Du ließt also, bei entsprechender Dateigröße, 1280000 Bytes in ein Array mit 10001 Bytes Speicherplatz. Vieleicht ist der Fehler mit Reset(fSource, 1) bereits zu beheben? Gruß tomsel |
Re: E/A-Fehler 998 bei BlockRead :(
jetzt klappt ... thx4hlp :)
|
Re: E/A-Fehler 998 bei BlockRead :(
Da die Fehlernummern der von Windows WinAPI entsprechen, lässt sich mit
Delphi-Quellcode:
leicht rausfinden, das es sich um den Fehler "Unzulässiger Zugriff auf einen Speicherbereich" handelt. Daher ist die vorher gut dargelegte Fehlerursache recht wahrscheinlich.
ShowMessage(SysErrorMessage(998));
/EDIT: Der rote Kasten wird schmerzlich vermisst... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 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