Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Prism .NET Anwendung stürzt ab (https://www.delphipraxis.net/142341-net-anwendung-stuerzt-ab.html)

Elvis 26. Okt 2009 20:40

Re: .NET Anwendung stürzt ab
 
Du benutzt da "datei.Free". Deshalb muss ich wohl annehmen, dass du entweder kein Oxygene nutzt, oder ShineOn benutzt.
ShineOn ist eine Library, die Delphi-Krams in .Net zu emulieren versucht.

Eine rein theorethische Möglickeit für eine TypeloadEx wäre das Free.
Aber nur um 5 Ecken und 7 Kanten...
In der Datei TObject.pas würdest du das hier finden und wenn alle Odds und der Rest des Universums gegen dich verschworen wären, wäre es vllt möglich, dass der class ctor von DisposableHelper<FileStream> mit einer SecurityException stirbt.
Delphi-Quellcode:
105   procedure TObjectExtender.Free(o: Object);
106   begin
107     o.Destroy;
108   end;
109   
110   type
111     DisposableHelper<T> nested in TObjectExtender
112       = private static class
113     public
114       constructor;
115       property DisposeCall : Action<T>; readonly;
116       procedure DisposeReferenceType(o: T);
117       procedure DisposeValueType(o: T);
118     end;
119    
120   procedure TObjectExtender.Destroy<T>(o: T);
121   begin
122     // dispose, if necessary. noop, otherwise.
123     DisposableHelper<T>.DisposeCall(o);
124   end;
125   
126   procedure TObjectExtender.Free<T>(o: T);
127   begin
128     Destroy<T>(o);
129   end;
130    
131   constructor TObjectExtender.DisposableHelper<T>;
132   begin
133     var typeRef := typeOf(T);
134     var call : Action<T>;
135     // dispose, if necessary. noop, otherwise.
136     if not typeRef.IsSealed
137     or typeOf(IDisposable).IsAssignableFrom(typeRef) then
138       call := @DisposeReferenceType
139     else
140       call := @DisposeValueType;
141    
142     DisposeCall := call;
143   end;
144   
145   procedure TObjectExtender.DisposableHelper<T>.DisposeReferenceType(o: T);
146   begin
147     TObjectExtender.Destroy(Object(o));
148   end;
149   
150   procedure TObjectExtender.DisposableHelper<T>.DisposeValueType(o: T);
151   begin
152     // noop
153   end;
Edit: Okay da hätte ich wohl vorher die Seite aktualisieren sollen.
Ich lasse es trotzdem drin, vllt. hilft es ja dem nächsten, der über sowas stolpert...

paperboy 26. Okt 2009 21:11

Re: .NET Anwendung stürzt ab
 
so danke nochmal an alle für eure mühen... hab mal auf die schnelle die testversion des neuen prism 2010 heruntergeladen mein projekt
portiert und alles läuft jetzt ohne probleme... nun ist die exe auch nur 450kb groß und läuft ohne zu murren auf xp vista und win7 auch wenn kein delphi
present ist (wobei ich nicht weis ob es vorher mit delphi geklappt hätte)...

also nochmal danke und einen schönen abend noch :hi:

lg paperboy


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:15 Uhr.
Seite 3 von 3     123   

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