Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehler beim Benden (https://www.delphipraxis.net/21818-fehler-beim-benden.html)

p3ps1 8. Mai 2004 17:50


Fehler beim Benden
 
Ich muss für meine Facharbeit im INfo-LK ein Programm schreiben.
Funktioniert auch, alles schön und gut. Aber wenn man es beenden will, kommen verschiedene Fehlermeldungen. Und ich habe keine Ahnung warum. Woran könnte sowas theoretisch alles liegen? :?:

Luckie 8. Mai 2004 17:55

Re: Fehler beim Benden
 
Als ich in den Südstaaten war habe ich öfters an Läden folgendes Schild gesehen:
Zitat:

No shirt, no shoes, no service!
Ähnliches gilt hier in deinbem Fall:
Zitat:

No code, no errormessages, no help.
:mrgreen:

Es kann tausende von Gründen geben, waum dein Programm abstürzt. Ohne etwas Hilfe von dir artet das aber hier in einer endlosen Raterei aus.

Nicodius 8. Mai 2004 17:56

Re: Fehler beim Benden
 
du musst uns schon sagen was du für nen fehelr hattets :)

p3ps1 8. Mai 2004 18:09

Re: Fehler beim Benden
 
gut, direkt wenn ich es (in delphi) beende kommen zwei fehler mit "Zugriffsverletzung" auf Adresse soundso. Will ich es dann wieder strten kommt "Format '%p' ungültig oder nicht kompatibel mit argument". Ich weiss halt nicht ob wer damit was anfangen kann, aber könnte ja sein dass bestimmte Fehler typisch für irgendwas sind

SirThornberry 8. Mai 2004 18:11

Re: Fehler beim Benden
 
Jetzt kommst du nicht mehr umhinn bissl source zu posten. Der wirst irgendwas im OnDestroy oder onClose haben was auf etwas zugreift das schon freigegeben ist oder so

p3ps1 8. Mai 2004 18:15

Re: Fehler beim Benden
 
meinst du, enn z.B. ein Objekt, dass beendet wird, auf ein anderes zugreifen will, dass aber schon beendet ist?

Pseudemys Nelsoni 8. Mai 2004 18:16

Re: Fehler beim Benden
 
wieso postest nicht einfach n bisschen source

Matze 8. Mai 2004 18:18

Re: Fehler beim Benden
 
Zitat:

Zitat von Pseudemys Nelsoni
wieso postest nicht einfach n bisschen source

Das frag ich mich auch, so kann dir keiner weiterhelfen. :dp:

p3ps1 8. Mai 2004 18:33

Re: Fehler beim Benden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ok, ich kann ja mal die Hauptunit posten.

SirThornberry 8. Mai 2004 19:21

Re: Fehler beim Benden
 
ich hab gleich mal ne Kritik:
Delphi-Quellcode:
Constructor TVerwaltung.create;
Begin
   suchbaum:=TSearchtree.create;
   Codebaum:=TSearchtree.Create;
   zeichenanz:=0;
   Liste:=TListe.create;
   keylist:=TListe.create;
   stack:=TLifo.create;
End;
Wo wird suchbaum etc. wieder freigegeben? Hast du schonmal versucht die anwendung zu debuggen um zu eingrenzen zu können wo der fehler kommt? eventuell liegts ja sogar daran das irgend eine klasse noch arbeitet während die anderen klassen schon zerstört sind...

p3ps1 8. Mai 2004 19:26

Re: Fehler beim Benden
 
meinst du mit freigeben zerstören?

Also ich gehe mal davon aus, dass diese objekt alle zerstört werden, wenn TVerwaltung in der Anwendung zerstört wird. oder nicht? Und dieses wird doch da es eine Variabel der mainunit ist automatisch zerstört oder?

Und zum debuggen: Ich weiss nicht. Der Fehler triit ja wie gesagt erst auf wenn das programm beendet wird. Zur Laufzeit funktioniert alles wie es soll.

SirThornberry 8. Mai 2004 19:39

Re: Fehler beim Benden
 
Wenn die Anwendung zerstört wird dann werden auch die Objecte zerstört. Allerdings kann die Zugriffsverletzung genau aus diesem grund kommen. Ich würde an deiner stelle lieber noch einen destructor bauen und darin die jeweiligen objecte freigeben. Nur weil ein object im Create angelegt wird, wird dieses nicht beim destroy auch freigegeben (könnte ja schließlich sein das man das object für ein anderes object erstellt)... Also immer schön freigeben...

p3ps1 8. Mai 2004 19:42

Re: Fehler beim Benden
 
ok, danke ich werds mal versuchen

p3ps1 8. Mai 2004 20:05

Re: Fehler beim Benden
 
mmh, irgendwie hilft mir das alles nichts.
Trotz Destructor bleibt alles beim alten.

:wall:

SirThornberry 8. Mai 2004 20:23

Re: Fehler beim Benden
 
hast du mal paar haltepunkte gesetzt damit du weißt an welcher stelle es zu der AV kommt?

p3ps1 8. Mai 2004 20:32

Re: Fehler beim Benden
 
wie soll ich denn Haltepunkte setzen? Der Fehler tritt ja erst beim Beenden auf.

SirThornberry 8. Mai 2004 21:21

Re: Fehler beim Benden
 
in den verschiedenen destructoren, somit weißt du bei welchem destroy...

p3ps1 8. Mai 2004 21:33

Re: Fehler beim Benden
 
achso, ich hatte ein TVerwaltung.destroy gemacht, in der die in create aufgerufenen Objecte auch wieder freigegeben wurden. Hat auch geklappt.
Soll ich vielleicht mal das komplete Projekt laden?

MrKnogge 8. Mai 2004 21:35

Re: Fehler beim Benden
 
wie gibst du die den wieder frei, mit free pder destroy ?

SirThornberry 8. Mai 2004 21:37

Re: Fehler beim Benden
 
poste mal das komplette projekt, dann kann dir bestimmt schneller geholfen werden

p3ps1 8. Mai 2004 21:44

Re: Fehler beim Benden
 
Liste der Anhänge anzeigen (Anzahl: 1)
äh, ich habs als letztes mit.free gemacht.

SirThornberry 8. Mai 2004 22:23

Re: Fehler beim Benden
 
Also viel kann ich dir jetzt ni helfen, das einzige was ich bisher gefunden habe ist das der fehler nur kommt wenn irgendwann mal
Delphi-Quellcode:
   Repeat
      sortstack;
      l:=TBintreenode(stack.top).Copy;
      stack.pop;
      r:=TBintreenode(stack.top).Copy;
      stack.pop;
      inhalt.change;
      Inhalt.setprob(THuffman(l.Elem).value.wahrscheinlichkeit+THuffman(r.elem).value.wahrscheinlichkeit);
      node:=TBintreenode.Create(l,THuffman.create(inhalt.value.zeichen,inhalt.value.wahrscheinlichkeit),r);
      stack.push(node);
   Until stack.length=1;
   Codebaum.Root:=TBintreenode(stack.top);
in TVerwaltung.huffman aufgerufen wurde. Somit wird irgend eines dieser objecte beim destroy sch**** machen. Eventuell hat da irgend ein Object ein Onchange, und weil beim destory items gelöscht werden wird das aufgerufen und schlegt fehl weil halt irgendwas das im onchange angesprochen wird nicht mehr existiert... also einfach mal alle klassen die hier in dem stück vorkommen debuggen... ich guck auch mal bissl weiter...

p3ps1 8. Mai 2004 22:42

Re: Fehler beim Benden
 
ja gut, also dieser Teil wird ja immer mindestens einmal ausgeführt.
Und die anderen Klassen also Treeclss,Listclss usw. die müsste alle 100%ig stimmen.
Ich hab im Moment leider auch absolut keine Ahnung meher woran es liegen könnte. Rein logisch betrachtet müsste es ja am destroy liegen.

SirThornberry 8. Mai 2004 22:46

Re: Fehler beim Benden
 
wenn mann keinen text verschlüsselt, also das programm startet und dann gleich wieder schließt kommt kein fehler

p3ps1 8. Mai 2004 23:09

Re: Fehler beim Benden
 
das stimmt, es müsste also auf jeden fall an irgendwas liegen, das in TVerwaltung aufgerufen wird.
Ich weiss nicht ob das auch in dem Projekt ist, dass ich hochgeladen habe, aber ich hab mal ein TVerwaltung.destroy gemacht, wo alle Objecte die du auch in create findest, freigegeben werden. naja das TVerwaltung.destroy wird ja dann in btneu.click aufgerufen, und ich habs auch mal ans Ende von jedem Codieren gsetzt. Aber das klappt eigentlich wenn man das mal so durchgeht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:18 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