Autor Beitrag
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Di 15.04.08 04:18 
Hallo, bei jedem Projekt Zugriffsverletzung bei Programmende, oder doch vielleicht Zufall.

Ich finde jetzt nicht heraus, weshalb diese Zugriffsverletzungen passieren, ich bekomme immer
das CPU Fenster beim schließen meines Programms, bzw. meiner Programme.

Ich war an einem Projekt dran und plötzlich passiert es, obwohl das vorher wunderbar funktioniert hat.
Habe dann die letzten Änderungen rausgenommen und trotzdem bleibt der Fehler,
dann habe ich es erstmal nicht weiterentwickelt und ein neues angefangen, da passiert das gleiche beim
Programmende.

Das interessante ist, dass alle Programme in meinem System danach betroffen sind und nicht ordnungsgemäß
arbeiten und wenn ich neustarte hängen die Programme. Bei einem Programm sehe ich chinesiche Schriftzeichen.


Ich weiß, ich habe nicht ganz so sauberen Programmierstil, aber nur deswegen weil ich bis
jetzt nicht eingehend einige Fragen geklärt habe.

Folgendes Szenario:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
Unit1.pas

interface
uses...
type
...
const..
var..
implementation

uses Unit2  // Einbindung



Unit2.pas

interface
uses...
type
...
const..
var..
implementation

uses Unit1  // kann hier Problem entstehen?


Oder

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
Unit1.pas

interface
uses...
type
...
const..
var..
implementation

uses Unit2, Unit3  // Einbindung


Unit2
interface
uses...
type
...
const..
var..
implementation

uses Unit3 // Kann hier Problem entstehen ?


Ich hatte von jemandem erzählt bekommen, dass es gefährlich ist Quer-Einbindung
stimmt es ? Wie wird's in der Regel gemacht?

Vielleicht sollte ich in Unit2 und Unit3 Ereignisse definieren und alles in Unit1 auffangen / verarbeiten,
sodass ich alle Units in Unit1 einbinde und die Unit2 und Unit3 wissen nichts von Unit1?

----------------------

Wenn ein Objekt beim Programmende von der Anwendung freigegeben wird, dann ist ja die variable nicht nil?
Wie kann ich es in Delphi abfangen?

myForm is TForm ???

----------------------

Wie verhält es sich wenn ich die libmysql50.dll verwende. Muß ich zum Schluss etwas freigeben?
Ich verwende die Zeos Componenten
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 15.04.08 08:06 
Such mal hier im Forum nach OmMap und untersuch damit mal, ob Du den Fehler in deinem Programm lokalisieren kannst, oder ob as ein Problem mit einer Third-Party-DLL ist. Ich kenn da inzwischen nämlich schon einige Programme, di mit Hooks arbeiten, was nicht immer stabil implementiert ist ...

Ggf. auch von Windows mal den Stack geben lassen und daraus versuchen nen StackTrace mit OmMap zu erzeugen. Debug-DCUs solltest Du dafür aktiviert haben. Alles andre steht im Thread zum Programm.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Fr 02.05.08 18:02 
Hallo, ich habe leider nicht soviel Zeit. Ich habe nun die Speicherbereiche geprüfft und muß sagen dass ich nicht soviel Erfahrung habe, was ich erkennen kann, ist dass mein Programm in den Speicherbereich 0xFEEEFEEE nicht fällt.

Nur wie gehe ich da weiter vor? Ich hatte so einen guten Start mit dem Programm, wobei ich mit diesem Programm schon mehrmals angefangen hatte,

- einmal in NetBeans - kamm irgendwie nicht weiter mit der neueren Datenbank-Entwicklungstechnik.
- Dann hatte ich es in Lazarus angefangen, der zerhaute irgendwann dann beim kopieren und einfügen in der GUI das ganze Layout und es ließ sich nicht so einfach reparieren
- und nun in Delphi 6.0 Enterprise, aber das ganze hält ungemein viel auf, weil ich das eine und andere versuche und nach dem ersten Start und wieder Beenden, kann ich mein Programm nicht starten und die anderen Programme hängen beim Beenden.

Wie also zum Geier lokalisiere ich das Problem? Ich habe auch nicht die volle Kenntnis über Delphi, wie ich die einzelnen Optionen setzen muß, ich kann auch nichts mit dem CPU Fenster anfangen.

Kann mir sonst einer sagen, wie ich schnell das Problem Orte? Kann es mit der libmysql50.dll zusammenhängen? Ich hatte vorher auch die libmysql.dll einfach genommen und in libmysql50.dll umbenannt, jetzt habe ich die vom ZEOS Repository.

Wie könnte ich bei DLL's verfahren?

Habe jetzt schon gedacht siehst de mal nach in den LOGS um dort sonstwie den Fehler zu erkennen.