AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

invalid poiter und access violation

Ein Thema von tkone · begonnen am 12. Okt 2009 · letzter Beitrag vom 16. Okt 2009
 
tkone

Registriert seit: 2. Okt 2009
Ort: Sachsen
63 Beiträge
 
Delphi 7 Professional
 
#1

invalid poiter und access violation

  Alt 12. Okt 2009, 15:03
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;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:00 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