![]() |
EAccessViolation Fehler
Delphi-Quellcode:
Hat jemand eine Idee wo der Fehler sein könnte???
TZeiger =^TSportler;
TSportler = record name : string[50]; zeit : real; next : TZeiger; end; var Form1: TForm1; ExDatei: file of TSportler; gespeichert: boolean; Sportler, Schnellster, vor: TZeiger; Anzahl, y: integer; implementation uses Unit2; {$R *.dfm} procedure TForm1.FormActivate(Sender: TObject); var n: integer; begin vor:= nil; schnellster:= nil; gespeichert:= false; with StringGrid1 do begin ColCount:= 3; RowCount:= 31; Cells[1, 0]:= 'Name'; Cells[2, 0]:= 'Zeit'; end; for n:= 1 to 30 do StringGrid1.Cells[0, n]:= IntToStr(n); end; procedure TForm1.Einfuegen1Click(Sender: TObject); begin form2.visible:= true; end; procedure TForm1.Ausgeben; var yPos: integer; begin for yPos:= 1 to 30 do begin StringGrid1.Cells[1, yPos]:= ''; StringGrid1.Cells[2, yPos]:= ''; end; sportler:= schnellster; ypos:= 1; while sportler <> nil do begin StringGrid1.Cells[1, yPos]:= sportler^.name; StringGrid1.Cells[2, yPos]:= FloatToStr(sportler^.zeit); sportler:= sportler^.next; ypos:= ypos+1; end; end; procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin y:= ARow; end; procedure TForm1.Loeschen1Click(Sender: TObject); var handle: string[50]; time: real; begin handle:= StringGrid1.Cells[1, y]; time:= StrToFloat(StringGrid1.Cells[2, y]); sportler:= schnellster; while (handle <> sportler^.name) and (sportler^.zeit <> time) do begin vor:= sportler; sportler:= sportler^.next; end; vor^.next:= sportler^.next; dispose(sportler); ausgeben; end; // neues Formular procedure TForm2.EinfuegenClick(Sender: TObject); var neu: TZeiger; begin new(neu); neu^.name:= NameEd.Text; neu^.zeit:= StrToFloat(ZeitEd.Text); if schnellster = nil then schnellster:= neu else begin neu^.next:= schnellster; schnellster:= neu; end; gespeichert:= false; form1.ausgeben; // an dieser Stelle tritt bei Betätigung dieses Knopfes ein EAccessViolation-Fehler auf form2.visible:= false; end; |
Re: EAccessViolation Fehler
wie lautet die genaue Fehlermeldung? vor allem die Adressen der AccessViolation sind wichtig.
Ich würde auf anhieb sagen das Form1 nicht erzeugt wurde zu dem Zeitpunkt wo darauf zugegriffen wird. |
Re: EAccessViolation Fehler
'Zugriffsverletzung bei Adresse 004044BE in Modul Project1.exe. Lesen von Adresse 02746665'
|
Re: EAccessViolation Fehler
Setz mal einen Breakpoint(F5) auf die Zeile, und debug von da aus (F7). Der Fehler tritt wahrscheinlich in der Prozedur TForm1.Ausgeben auf.
|
Re: EAccessViolation Fehler
''Datei nicht gefunden "SysConst.pas"'' ??
|
Re: EAccessViolation Fehler
Von was redest Du?
|
Re: EAccessViolation Fehler
Wenn ich die Zeile "form1.ausgeben" mit F5 markiere und dann mit F7 debugge erscheint nach zweimaligem Betätigen von F7 oben genannte Fehlermeldung
|
Re: EAccessViolation Fehler
Wie sieht die Methode "ausgeben" von TForm1 aus? und wenn du einen Haltepunkt auf die erste Anweisung von "ausgeben" setzt, wird dieser erreicht oder kommt die Zugriffsverletzung vorher?
|
Re: EAccessViolation Fehler
Liste der Anhänge anzeigen (Anzahl: 1)
Was meinst du mit Methode???
Wenn ich F7 drücke nachdem ich die erste Zeile von ausgeben markiert habe, erscheint im Anhang zu findendes Fenster |
Re: EAccessViolation Fehler
Du musst das Projekt starten... Wird die markierte Stelle im Code bei der Ausführung erreicht, hält das Programm an und du hast wieder den Code vor dir. Von da an kannst du mit F7 Schritt für Schritt durch den Code gehn, das heißt jede Zeile einzeln und nacheinander ausführen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:15 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