![]() |
Benachrichtigung über Debugger-Exception- Problem
Hi,
zu Beginn erstmal ein Hallo ans Forum, bin neu hier! :) Ich bin wirklich ein totaler Anfänger im Programmieren, von daher kann es sien, dass mein Problem für euch lächerlich oder so erscheint, aber ich kriege es einfahc nicht auf die Reihe. Also wir sollen im Informatik-Unterricht mit delphi, ein Programm mit heapsort-Sortierverfahren erstellen. Ich habe echt keine Ahnung, ob mein Programm so wie ich es da zusammengeschrieben habe Sinn macht, aber ich zeig es euch mal.
Code:
Aufjedenfall bekomme ich, wenn ich den Debugger starten will, die Meldung:
unit heapsort_verfahren_u;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type Theapsort = class(TForm) mAusgabe: TMemo; btnZahlen: TButton; btnSortieren: TButton; procedure btnZahlenClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure btnSortierenClick(Sender: TObject); procedure refillMemo(); private i: integer; Data: array of integer; procedure sortierverfahren(Data: array of integer); procedure Erstelleheap(i: integer; Data: array of integer; knot: integer); { Private-Deklarationen } public { Public-Deklarationen } end; var heapsort: Theapsort; implementation {$R *.dfm} procedure Theapsort.FormCreate(Sender: TObject); begin SetLength(Data,1); end; procedure Theapsort.btnSortierenClick(Sender: TObject); begin sortierverfahren(Data); refillMemo(); end; procedure Theapsort.btnZahlenClick(Sender: TObject); var c, zahl,i: integer; begin for c:=0 to 10 do begin randomize; zahl:=random(100)+1; SetLength(Data, Length(Data)+1); i:=i+1; Data[i]:=zahl; refillMemo(); end; end; procedure Theapsort.sortierverfahren(Data: array of integer); var knot, temp, i: integer; begin i:= Length(Data); knot:= i div 2; while knot > 0 do begin dec(knot); Erstelleheap(i, Data, knot); end; while i >= 0 do begin temp:= Data[0]; Data[0]:= Data[i]; Data[i]:= temp; Erstelleheap(i,Data, 0); Dec(i); end; end; procedure Theapsort.Erstelleheap(i: integer; Data: array of integer; knot: integer); var temp_knot_value, subknot: integer; begin temp_knot_value := Data[knot]; while knot < i div 2 do begin subknot := 2*knot+1; if (subknot < i-1) and (Data[subknot]< Data [subknot +1]) then Inc(subknot); if temp_knot_value >= Data[subknot] then break; Data[knot]:= Data[subknot]; end; Data[knot]:= temp_knot_value; end; procedure Theapsort.refillMemo(); var a:Integer; Data: Array of integer; begin mAusgabe.Text:=''; for a:= 1 to Length(Data)-1 do begin mAusgabe.text:= mAusgabe.Text + Inttostr(Data[a])+#13#10; end; end; end. "Im Projekt heapsort_verfahren.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung 'Zugriffsverletzung bei Adresse 0044FD2E in Modul 'heapsort_verfahren.exe'. Schreiben von Adresse 00E1030C'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen." Woran könnte das liegen, ich vermute mal und hoffe, dass ihr mir sagen könnt wo der Fehler ist. Grüße, rossi37 |
AW: Benachrichtigung über Debugger-Exception- Problem
Und in welcher Zeile tritt das auf?
|
AW: Benachrichtigung über Debugger-Exception- Problem
procedure btnZahlenClick
... Data[i]:=zahl; da wirds mir angezeigt. aber da wurde schonmal gemeckert weil Variable Data und i nicht initialisiert werden konnten. (?) tut mir leid ich hab' echt keine Ahnung von Delphi! :D |
AW: Benachrichtigung über Debugger-Exception- Problem
Hallo,
zahl:=random(100)+1; zahl zwischen 1 und 100 SetLength(Data, Length(Data)+1); Länge von data um 1 erhöhen (im FormCreate wurde es auf 1 gesetzt) i:=i+1; i um 1 erhöhen Welchen Wert hat denn i vor dieser Zeile ??? Der Wert ist unbekannt (lokale Variablen haben keinen Default-Wert) Data[i]:=zahl; Zugriff auf ... tja worauf denn ? Heiko |
AW: Benachrichtigung über Debugger-Exception- Problem
Zitat:
Zitat:
Danke, rossi37 |
AW: Benachrichtigung über Debugger-Exception- Problem
In welcher Quellcodezeile kommt der Fehler?
Arg, faule RedBox und ich sollte nebenbei mich nicht zu lange ablenken lassen. Randomize ruft man nur einmal auf und nicht mehrmals (steht auch in der OH). Die Codeformatierung ist grauenhaft. PS: das [DELPHI]-Tag ist schöner, als das [CODE]-Tag. Tipp: Schalte mal die Indexprüfung an, in den Projektoptionen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:21 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