hi hab ne fehlermeldung beim laden einer datei.
also was macht mein programm:
ich weis dem programm eine datei zu und diese soll in die einzelbestandteile aufgeteilt werden.
Die datei hat einen header und einen rumpf.
der header wird in zwie abschnitte aufgeteilt, wobei ein kleiner teil dazwischen herausgelassen wird(siehe labl weiter_st).
bis dahin funktionierts auch.
nun soll mir das delphi programm den rumpf des programmes byteweise in ein 2D array speichern.
und genau hier bringt mir das programm den fehler "
Access violation".
beim beenden des programmes kommt dann die meldung "invalid pointer".
ich glaub ich bin schon betriebsblind, da ich den fehler absolut nicht finde
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
//JC5 laden
Label weiter_st, fertig_st;
var
f:
File of Byte;
F_size, M_size, akt_pos: Integer;
headerL, header_pos: Integer;
plat_byte, schuss_byte, plat, schuss: Integer;
wert: byte;
begin
lokal_max:=0;
edit1.Text:=inttostr(lokal_max);
edit2.Enabled:=true;
openDialog1.Execute;
AFilename:=OpenDialog1.Filename;
Assignfile(f,AFilename);
Reset(f);
F_size:=Filesize(f);
headerL:=134+length(extractfilename(AFilename));
plat_Byte:=801;
//x größe des Musers für den array
// Mustergrössen bestimmmen
M_size:=F_size-headerL;
schuss_Byte:=(M_Size)/(plat_Byte);
schuss:= schuss_byte;
schuss_max:= schuss_byte;
// Dynamische Arrays dimensionieren
SetLength(Header_P1, 15);
SetLength(Header_P2, 134-15-1);
//-1, da 1Byte vor Filename noch veränderlich
SetLength(Muster, plat_Byte, schuss_Byte);
Label6.Caption:='
max.'+inttostr(schuss_max);
label7.Visible:=true;
label8.Visible:=false;
akt_pos:=0;
plat:=1;
header_pos:=0;
while not eof(f)
Do
Begin
read(f,wert);
inc(akt_pos);
// Zwecks Header Informationen
if akt_pos<headerL+1
Then goto weiter_st;
Muster[plat,schuss-1]:=wert;
inc(plat);
If plat=plat_byte
then
begin
plat:=0;
dec(schuss);
end;
If schuss=0
Then goto fertig_st;
weiter_st:
Begin
If akt_pos<16
then
header_P1[akt_pos-1]:=wert;
If akt_pos>16+(headerL-134)
then
begin
header_P2[header_pos]:=wert;
inc(header_pos);
end;
End;
End;
fertig_st:
closefile(f);
button2.Visible:=false;
button1.visible:=true;
edit2.Text:='
';
end;