Autor Beitrag
*Knust*
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95



BeitragVerfasst: Do 31.07.08 23:02 
Hi!
Ich habe ein Programm, das in einigen Prozessen Diesen Fehler rausgibt, wenn der Prozess zuende ist(also beim letzten end;).
Ich würde gerne wissen, was genau diesen Fehler aufruft?
Der Code für den einen Prozess ist dieser:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure tform2.btnclick(x,y:integer);
begin
 if buttons[x][y].caption='' then
  begin
   buttons[x][y].Caption:='X';
   ary3belegt[x][y][wtag]:=1;
   inc(ary2belegtpausen[wtag][y]);
   inc(ary1belegtlehrer[x]);
  end
  else
   begin
    buttons[x][y].Caption:='';
    ary3belegt[x][y][wtag]:=0;
    dec(ary2belegtpausen[wtag][y]);
    dec(ary1belegtlehrer[x]);
   end;
end;


wenn ich schrittweise den prozess durchgehe, zeigt er den fehler nach dem letzten end;.

Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00403330 in Modul 'Project1.exe'. Lesen von Adresse FFFFFFDD'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------

Was ist das Problem?

mfg

Knust

PS: Vielleicht sollte ich dazu sagen, wass die Sachen aus dem Prozess sind:
buttons is n array of array of tbutton
ary3belegt n array of array of array of integer
ary2belegtpausen mit 2 dimensionen und ary1belegt lehrer halt 1.


Moderiert von user profile iconNarses: Topic aus Windows API verschoben am Do 31.07.2008 um 23:08


Zuletzt bearbeitet von *Knust* am Fr 01.08.08 00:00, insgesamt 1-mal bearbeitet
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 31.07.08 23:09 
user profile icon*Knust* hat folgendes geschrieben:
Ich habe ein Programm, das in einigen Prozessen Diesen Fehler rausgibt, wenn der Prozess zuende ist(also beim letzten end;).

Das heißt wahrscheinlich nicht, dass der Fehler dort auftritt, sondern dass einfach die letzte Zeile der aktuellen Methode markiert wird. Das ist bei mir auch so.

Zugriffsverletzungen (EAccessViolation) treten gerne mal auf, wenn man vergisst, einen Zeiger (zum Beispiel der auf einen Button) zuzuweisen. Schaue einfach mal im Debugger nach, ob einer der Array-Werte nil ist.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 31.07.08 23:10 
Moin!

Eine weitere, häufige Ursache für solche Probleme im Zusammenhang mit Arrays ist eine Indexüberschreitung. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
*Knust* Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95



BeitragVerfasst: Do 31.07.08 23:17 
wenn der zeiger nil wäre, dann dürfte der button ja nicht existieren und er versucht trotzdem drauf zuzugraifen, verstehe ich das richtig???
Wenn das so wäre, dann wäre das nicht der fehler, weil man diese prozedur erst dadurch aufruft, dass man auf den button aus buttons[x][y] clickt...
Eine Indexüberschreitung dürfte auch nicht das problem sein:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm2.Button1Click(Sender: TObject);
var x,y:integer;
begin
for x:=0 to length(buttons)-1 do
 begin
  for y:=0 to length(buttons[0])-1 do
   begin
    if sender=buttons[x][y] then
     begin
      btnclick(x,y);
      exit;
     end;
   end;
 end;
end;


(das ist der prozess, der den button rausfindet, der geklickt wurde)

er sucht ja raus, wie lang die arrays sind... deswegen wird er keine grenze überschreiten...


Zuletzt bearbeitet von *Knust* am Do 31.07.08 23:26, insgesamt 2-mal bearbeitet
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Do 31.07.08 23:20 
Anstelle von length solltest Du high() verwenden. ;)
*Knust* Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95



BeitragVerfasst: Do 31.07.08 23:24 
:( ändert nix das problem is das gleiche
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 31.07.08 23:57 
Moin!

Bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien:

1.2 Beiträge:
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]


Einfach oben bei Deinem ersten Beitrag auf user defined image oder user defined image klicken und den Titel ändern. Danke Dir!

cu
Narses

Ach ja:
user profile icon*Knust* hat folgendes geschrieben:
:( ändert nix das problem is das gleiche
Und woher kommt dann wtag? :nixweiss:

_________________
There are 10 types of people - those who understand binary and those who don´t.
*Knust* Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95



BeitragVerfasst: Fr 01.08.08 00:01 
wtag is n integerwert der 0-4 sein kann...
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 01.08.08 00:04 
Moin!

Kommentier mal testweise die Inc+Dec-Anweisungen aus und klicke dann mal, dann Programm beenden, immer noch AV? :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
*Knust* Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95



BeitragVerfasst: Fr 01.08.08 00:30 
hilft auch nich...
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 01.08.08 00:35 
Moin!

Das wird so nix, pack mal das Projekt ohne die EXE als ZIP hier in den Anhang. :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
*Knust* Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95



BeitragVerfasst: Fr 01.08.08 00:41 
Jo hier
Einloggen, um Attachments anzusehen!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 01.08.08 01:06 
Moin!

Ich kriege keine AV, keine Ahnung, was du da machst. :nixweiss:

Allerdings hast du ein paar fette Schnitzer in deiner Speicherverwaltung: du erzeugst im Form2Create zwei Stringlisten, aber gibst diese nicht wieder frei :shock: und hier:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
function tform2.lueckenfuellen(wochentag,pause:integer):integer;
begin
result:=0;
//lstlehrer:=tstringlist.Create; // Falsch, weil von Funktion geliefert!
lstlehrer:=findalllehrerzupause(point(wochentag,pause));
 for x:=0 to lstlehrer.count-1 do
rufst du eine Funktion auf, die eine Stringliste liefert, aber erzeugst vorher selbst noch eine. :hair:

Und insgesamt könnte dein Code mal eine Portion Suche bei Google STYLEGUIDE vertragen, das kann man ja kaum lesen... :|

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
*Knust* Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95



BeitragVerfasst: Fr 01.08.08 01:12 
Ja das seltsame ist ja, dass er nicht immer die felher gibt... gib mal 14 pausen und 4 lehrer ein und klicke auf die erste oben links.... dann bekommst du den fehler
Wennn du 13 und 4 hast und auf die klickst nich....macht iwie keinen sinn...

danke schonmal

Knust
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 01.08.08 01:18 
Moin!

user profile icon*Knust* hat folgendes geschrieben:
Ja das seltsame ist ja, dass er nicht immer die felher gibt...
:|

user profile icon*Knust* hat folgendes geschrieben:
gib mal 14 pausen und 4 lehrer ein und klicke auf die erste oben links.... dann bekommst du den fehler
Hab ich gemacht, 4 Lehrer, 14 Pausen, li/oben klick, "X" erscheint, Fenster zu, kein Problem. :nixweiss:

Ähm, warum nimmst du eigentlich keine Grid-Kompo (z.B. ein String-Grid)? Ist doch irgendwie einfacher, als die dynamischen Kompos, oder? :?

Abgesehen davon habe ich auch noch nicht wirklich kapiert, was da eigentlich passiert? :gruebel:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
*Knust* Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95



BeitragVerfasst: Fr 01.08.08 01:23 
xD
Ja es ist noch nich ganz fertig....
Es soll im endstadium pausenaufsichtspläne bauen aus möglichkeiten die vorgegeben sind also derhrer xy kann am montag an pause zw aufsicht machen und dann bastelt er sich was zusammen.
ja ich häte auch n grid nehmne können.... egal^^
warum sollte bei mir n fehler angezeigt werden und bei dir nicht???
ich hab es nochmal neu geladen aber immernoch kommt der fehler...
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 01.08.08 01:24 
Ähm meinst du vielleicht genau umegkehrt, 14 Lehrer und 4 Pausen, da gibts bei mir nen Fehler ^^

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
*Knust* Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95



BeitragVerfasst: Fr 01.08.08 01:27 
xD oder so ja^^
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 01.08.08 01:32 
- Der Fehler tritt bei mir sofort auf, ohne dass ich oben links auf den ersten Button klicke
- Im Einzelschritt lies sich feststellen dass er in den zeilen 145-156 auftritt
- ich bin Müde und geh ins Bett :) gute nacht ^^

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
*Knust* Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95



BeitragVerfasst: Fr 01.08.08 01:37 
xD gut.... ähnliches denke ich auch gerade...
Es ist zum verzweifeln


Aber danke für eure mühe!

Gute nacht!

Knust