untypisierte dateien - warum eine zugriffsverletzung(simpel)
hi,
das was ich gerade mal ausprobieren wollte ist eine untypisierte datei zu lesen... Das problem: ^^^^^^^^^^^^ ich kann sie lesen und auch wieder schließen, aber ich bekomme trotzdem eine speicherverletzungsfehlerkladeradatsch... könnt ihr mal bitte gucken, woran es liegen könnte?
Delphi-Quellcode:
vielen dankprocedure TForm1.Button1Click(Sender: TObject); var datei : file; Buf: array[0..4] of Char; countt :integer; tmp : string; i : integer; begin assignFile(datei,'asd.wav'); reset(datei); BlockRead(datei,buf,sizeof(buf),countt); tmp:=''; for i:=0 to 3 do begin tmp:=tmp+buf[i]; end; showmessage(inttostr(countt)); showmessage(tmp); closefile(datei); end; ach und ich hab delphi in der schrittweisen compelierung gestartet und er hat erst nach dem letzten oder beim letzten
Delphi-Quellcode:
gemeckert :gruebel:
end
|
Re: untypisierte dateien - warum eine zugriffsverletzung(sim
Hi KoRn117,
versuch es so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject); var datei : file; Buf: array[0..3] of Char; <- 3 und nicht 4 countt :integer; tmp : string; i : integer; begin assignFile(datei,'asd.wav'); reset(datei); BlockRead(datei,buf,sizeof(buf),countt); tmp:=''; for i:=0 to 3 do begin tmp:=tmp+buf[i]; end; showmessage(inttostr(countt)); showmessage(tmp); closefile(datei); end; |
Re: untypisierte dateien - warum eine zugriffsverletzung(sim
ist mir auch gerade aufgefallen :lol:
aber die fehlermeldung kommt trotzdem immer noch :cry: ... |
Re: untypisierte dateien - warum eine zugriffsverletzung(sim
Hilfe: :warn:
Delphi-Quellcode:
und was sagt uns das (kein Plan *g*)
Wird AmtTransferred nicht angegeben, tritt ein E/A-Fehler auf, wenn die Anzahl der gelesenen Datenblöcke nicht mit Count identisch ist. Wenn die Compiler-Direktive $I+ aktiv ist, lösen Fehler eine EInOutError-Exception aus.
Edit:
Delphi-Quellcode:
procedure BlockRead(var F: File; var Buf; Count: Integer [; var AmtTransferred: Integer]);
|
Re: untypisierte dateien - warum eine zugriffsverletzung(sim
ach schon gut...es lag an was anderen...
ich musste bei dem befehl "reset" noch einen weiteren parameter übergeben, der delphi sagt, dass er nur ein byte lesen soll :oops: ciao trotzdem danke hboy & altermann :roll: |
Re: untypisierte dateien - warum eine zugriffsverletzung(sim
ich interpretiere das so (@hboy):
count ist das was mitzählt wenn er ausließt und ist das nicht genauso groß wie du ihm gesagt hast was er auslesen soll - meckert er rum. beispiel: datei ist "10" groß ich sag ihm lies "15" AmtTransferred meldet eine differenz ...so oder so ähnlich wird das schon sein :stupid: :lol: ciao |
Re: untypisierte dateien - warum eine zugriffsverletzung(sim
*irre* normal ( also bei copy oder stream.readbuffer ) is count eigentlich die länge des zu lesenden Datenblocks.... sehr verwirrend... naja.. :drunken:
|
Re: untypisierte dateien - warum eine zugriffsverletzung(sim
ist es auch, ich hab mich mal wieder verschrieben
es geht um die differenz zwischen count und dem letzten parameter count gibt auch hier an wieviel gelesen werden soll...ich hab nur etwas komische variablen bezeichnungen BlockRead(datei,buf,sizeof(buf),countt); sizeof(buf) -> das ist die anzahl die er lesen soll (count) countt -> bei mir die komische vergleichsvariable die angibt, ob er alles lesen konnte |
Re: untypisierte dateien - warum eine zugriffsverletzung(sim
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var datei : file; Buf: array[0..3] of Char; <- 3 und nicht 4 countt :integer; tmp : string; i : integer; begin assignFile(datei,'asd.wav'); // evtl. Filemode setzen Filemode:=fmopenread; reset(datei,1); // hier muss 1 stehen, da recordsize standardmäßig auf 128 bytes steht BlockRead(datei,buf,sizeof(buf),countt); tmp:=''; for i:=0 to 3 do begin tmp:=tmp+buf[i]; end; showmessage(inttostr(countt)); showmessage(tmp); closefile(datei); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:49 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