Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi BlockRead endet mit E/A-Error 998 (https://www.delphipraxis.net/19473-blockread-endet-mit-e-error-998-a.html)

glunzl 4. Apr 2004 01:05


BlockRead endet mit E/A-Error 998
 
Moinsens!

Ich bastel mir mal wieder ein Problem ...

Ich möchte eine dBase Datei in ein Array Of Byte einlesen um das später zu verarbeiten.
Das mache ich z.Z. so:

Delphi-Quellcode:
procedure Tform1.Menu_Datei_OeffnenClick(Sender: TObject);
var
  ProtFile : File of Byte ;
  ProtFileData : Array of Byte ;
  i : integer ; // Zählvariable
begin
  OpenDialog.Filter := 'dBase-Dateien (*.dbf)|*.dbf';
  OpenDialog.InitialDir := 'c:\' ;
  if OpenDialog.Execute then
    begin
       AssignFile(ProtFile, OpenDialog.FileName) ; // Dateivariable den Namen der externen Datei zuweisen
       FileMode := 0 ; // ReadOnly
       {$i-} // E/A-Prüfung deaktiviert. Fehlerabfrage mit IOResult.
       Reset(ProtFile) ; // Datei öffnen
       {$i+} // E/A-Prüfung aktiviert. Fehlerabfrage mit IOResult
       if IOResult <> 0 then
         begin
           Application.MessageBox('Datei konnnte nicht geöffnet werden!', 'Visuanalyse', 48) ;
           exit ;
         end
       else
         begin
           SetLength(ProtFileData, FileSize(ProtFile)) ; // Arraygrösse = Dateigrösse
           BlockRead(ProtFile, ProtFileData, FileSize(ProtFile)) ; // Blockgrösse = Dateigrösse
           CloseFile(ProtFile) ;
Beim Blockread kommt es zu einem E/A-Error 998, den ich in der OH nirgens finde. Was mache ich falsch?

Gruss
Michael

Christian Seehase 4. Apr 2004 01:37

Re: BlockRead endet mit E/A-Error 998
 
Moin Michael,

wenn Du ein Array als Buffer verwendest, musst Du den Index des ersten Elementes angeben, ab dem der Buffer gefüllt werden soll.

Code:
BlockRead(ProtFile, ProtFileData[color=red][0][/color], FileSize(ProtFile)) ;
So sollte es gehen.

BTW: 998 = ERROR_NOACCESS = Ungültiger Speicherzugriff.

glunzl 4. Apr 2004 02:00

Re: BlockRead endet mit E/A-Error 998
 
Moin Christian!

Schon ganz schön spät ... :wall: Danke!

Wo hast Du denn den Fehlercode nachgelesen?

Michael

Christian Seehase 4. Apr 2004 11:12

Re: BlockRead endet mit E/A-Error 998
 
Moin Michael,

den Fehlercode hab' ich im PSDK nachgeschlagen unter Error Codes [Win32].
Im MSDN kann man das auch online tun.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:55 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