AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Problem mit Freigabe von Objekten

Ein Thema von axelf98 · begonnen am 20. Nov 2003 · letzter Beitrag vom 21. Nov 2003
Antwort Antwort
axelf98

Registriert seit: 27. Aug 2003
Ort: Ennepetal
440 Beiträge
 
Delphi 2005 Personal
 
#1

Problem mit Freigabe von Objekten

  Alt 20. Nov 2003, 21:38
Hallo!

Ich habe ein Proramm geschrieben, dass objektorientiert ist Es geht um ein Mathe-Programm, dass über beliebig viele Fenster verfügt, die dann jeweils ein Objekt sind. Das klappt alles wunderbar. Nun soll jedes Fenster auch Rechnen können, und deswegen habe ich so eine Klasse Rechner geschrieben; jedes Fenster bekommt einen Rechner. Und der rechnet auch, aber nur 1-2 mal und dann bekomm ich Zugriffsverletzungen und ungültige Zeigeroperationen...
Da ich nach Tests weiss, dass es nicht am Algorithmus liegen kann, hab ich den constructor und das Freigeben im Auge. In der Klasse kommen einige Arrays und Variablen vor.
Wie kann man sowas am besten freigeben?

Ihr könnt euch die Klasse ja mal anschauen...
(Ach ja, in einem anderen Programm hat die Klasse super funktioniert!)
Angehängte Dateien
Dateityp: pas rechner.pas (11,0 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

Re: Problem mit Freigabe von Objekten

  Alt 20. Nov 2003, 22:03
Hallo,

wenn ich es richtig verstanden habe, weist Du jedem Fenster eine Instanz von Loesungssystem zu. Die Instanzen haben alle ihre eigenen Methoden, greifen aber gemeinsam auf die globalen Variablen zu. Ohne daß ich es probiert habe, glaube ich, besteht die Lösung darin, Deine Variablen in die Klasse zu verlagern, z.B. in den private-Abschnitt. Und noch ein Hinweis: es ist üblich (wenn auch nicht zwingend notwendig), Konstruktoren 'Create' und Destruktoren 'Destroy' zu nennen, daß macht es leichter, den Quelltext zu lesen, und produziert weniger Fehler, wenn Du mal Klassen ableiten solltest. Weiterhin sollte Dein Destruktor den von TObject aufrufen:

Delphi-Quellcode:
    ...
    destructor Destroy; override;
  end

destructor Destroy {Dein GibFrei};
begin
  .. hier aufräumen;
  inherited Destroy;
end;
Viele Grüße
Lutz
  Mit Zitat antworten Zitat
axelf98

Registriert seit: 27. Aug 2003
Ort: Ennepetal
440 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Problem mit Freigabe von Objekten

  Alt 20. Nov 2003, 22:12
Danke für die Tipps.. In der Schule heisst das immer gibfrei *g*
Na egal! Aber ich bekomm immer noch Ungültige Zeigeroperationen...

Ich häng mal die Exe hinten dran, damit ihr euch auch was unter dem Programm vorstellen könnt:

Bei der Eingabe einfach mal ein paar Zahlen eingeben!
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#4

Re: Problem mit Freigabe von Objekten

  Alt 20. Nov 2003, 22:42
OK, die funktionsweise deines Prog hab ich mir schon ungefähr so vorgestellt, aber was hast du jetzt an deiner Klasse geändert? könntest du die .pas nochmal schicken?
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#5

Re: Problem mit Freigabe von Objekten

  Alt 20. Nov 2003, 23:49
Also, habs mal getestet:
Ich habe mal irgendwelche Phantasie-Zahlen verwendet und es durchlaufen lassen (soweit es ging).

Bei TLoesungssystem.istgeloest() tritt ein Fehler auf, wenn Parameter X 0 (null) ist, weil dann die erste j-Schleife nicht durchlaufen wird, des halb musst du nach der Schleife
    If (X = 0) then j := 0; einsetzen.

Wenn TLoesungssystem.einfachstezeilefinden() als Ergebnis -1 zurückgibt, wird ein Fehler ausgelöst, weil in TLoesungssystem.Systemloesen() ja dann Matrix[line,j] nicht funktioniert = ausserhalb des zulässigen Bereichs der Array.

Weiter bin ich noch nicht gekommen, weil ich auf die Schnelle nicht darauf komme, was gemacht werden soll, wenn line -1 ist.

[edit]
So, habs mal mit nem If gelöst, das er die nä. drei Zeilen nicht aus führt, wenn line -1 ist. Danach kommen keine Fehler mehr. Erstellen und Freigeben der Klasse und beenden des Programms gehen jetzt ohne Fehler.
[/edit]
  Mit Zitat antworten Zitat
axelf98

Registriert seit: 27. Aug 2003
Ort: Ennepetal
440 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Problem mit Freigabe von Objekten

  Alt 21. Nov 2003, 06:31
Ok, ich versuch mal die anfrage einzubauen..
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:39 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