![]() |
Programm beendet sich nicht richtig
Hi,
und zwar habe ich ein Problem sobald ich mein Programm beende, beendet es sich auch bzw bildlich gesehen, das heißt das Formular wird beendet. Bloß wenn ich nun in den Taskmanager nach schau unter Prozesse, seh ich das Programm immer noch laufen.
Delphi-Quellcode:
For i := 0 to 7 do // Auswaerts Tore Begin Ergebnis[50,i]:=(TorProzent(HGTorschnitt,i) + TorProzent(ATorschnitt,i)) / 2; // Auswertung Array anpassen End; Ich habe ausfindig machen können, das dieser code wohl diesen Fehler verursacht nur weiß ich nicht warum. Ergebnis = Array TorProzent = Funktion aus einer dll Ich hoffe jemand hat eine Idee wieso dieser Abschnitt diesen Fehler verursacht. Ohne diesen Abschnitt wird es ganz normal beendet. Edit: Was es noch zu sagen gibt, der Fehler verursachende Code wird gar nicht ausgeführt, da man vorher einen Button klicken muss und trotzdem beendet es sich nicht richtig. |
Re: Programm beendet sich nicht richtig
Zitat:
Zitat:
EDIT: liegt der Fehler eventuell im Code des Assemblies, eventuell ist der .NET Compiler ja so intelligent, dass er merkt wenn kein Code aus dem Assembly im Programm ist und es dann garnicht einbindet? Verstehe ich das richtig: Wenn du den Aufruf der Assembly-Funktion komplett rauwirfst (oder auskommentierst) dann besteht das Problem nicht, ist der Code aus dem Assembly enthalten dann schon? |
Re: Programm beendet sich nicht richtig
Und ist das wirklich .NET?
|
Re: Programm beendet sich nicht richtig
Zitat:
Alfi001 genau das ist was mich so verwirrt, normal dürfte der Code den Fehler nicht verursachen, da er nicht ausgeführt wird solange ich nicht den Button klicke. Allerdings tritt der Fehler auch der vollständig compilierten exe auf nicht nur wenn ich es von delphi aus starte. |
Re: Programm beendet sich nicht richtig
Zitat:
Eventuell wird ja in der DLL etwas, z.B. ein COM Server, initialisiert und hinterher nicht wieder freigegeben und sorgt so dafür, dass das Programm hängenbleibt. Ohne weitere Infos über die DLL ist alles weitere nur Spekulation... |
Re: Programm beendet sich nicht richtig
Es ist eine selbsterstellte DLL.
Hier der Quellcode
Delphi-Quellcode:
library fa; { Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss sich in der ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt- Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL. Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String- Informationen als PChar- oder ShortString-Parameter übergeben. } uses SysUtils, Math, ShareMem, Dialogs, Classes; {$R *.res} function ProzentBerechnung(Hauptwert: Extended; Nebenwert: Extended): Extended; stdcall; begin if Hauptwert = 0 then Result:= 0 Else Result:= (Nebenwert/Hauptwert)*100; end; function NFak(Val: Integer): INT64; stdcall; begin if Val < 0 then raise Exception.Create('Val muss größer/gleich 0 sein.'); if Val = 0 then Val := 1; Result := 1; repeat Begin Result := Result * Val; Dec(Val) End; until Val <= 1; end; function TorProzent(TorD: Extended; Tor: Integer): Extended; stdcall; Var e: Extended; begin e:= 2.718281828459; result := power(TorD,Tor)*power(e,-TorD)/NFak(Tor); end; exports ProzentBerechnung, TorProzent, NFak; begin end. |
Re: Programm beendet sich nicht richtig
Ist im Hauptprogramm ebenfalls die Unit "ShareMem" eingebunden??
Ich hatte schon die komischsten Effekte wenn ich das vergessen habe! (wenn ich das richtig sehe ist ShareMem hier auch garnicht nötig) |
Re: Programm beendet sich nicht richtig
Zitat:
|
Re: Programm beendet sich nicht richtig
ich habe in der DLL auch ShareMem eingebunden kann dies den Fehler hervorrufen, denn wenn ich ShareMem lösche geht es wieder.
|
Re: Programm beendet sich nicht richtig
Zitat:
Allerdings brauchst du hier ShareMem definitiv nicht da du keine Strings als Parameter oder Funktionsresultat in der DLL hast. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:56 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