Delphi-PRAXiS

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)

paperboy 26. Okt 2009 17:51


.NET Anwendung stürzt ab
 
Hallo zusammen,

ich habe ein problem mit einer .net anwendung die ich delphi 2009 geschrieben habe...
diese läuft auf meinem computer ohne probleme..
wenn ich sie jedoch auf einem anderen rechner (egal ob xp/vista/win7) starten will stürz
es mit der windows fehlermeldung "Programm funktioniert nicht mehr" ab..
vorweg: ja auf all den von mir getesteten rechnern war ist die neuste version des .net frameworks installiert..
delphi jedoch auf keinem..

muss ich vllt noch irgendetwas einbinden? die exe ist 164kb groß...

lg paperboy

mkinzler 26. Okt 2009 17:54

Re: .NET Anwendung stürzt ab
 
Mit D2009 kann man komischerweise keine .Net-Anwendungen erzeugen :gruebel:

paperboy 26. Okt 2009 17:58

Re: .NET Anwendung stürzt ab
 
sorry meine natürlich das codegear rad studio 2009 :oops:

mkinzler 26. Okt 2009 18:01

Re: .NET Anwendung stürzt ab
 
Also in Delphi.Prism. Wie heisst die Fehlermeldung genau?

Apollonius 26. Okt 2009 18:05

Re: .NET Anwendung stürzt ab
 
Ich hatte diese Fehlermeldung kürzlich auch mal. Letzendlich lag es an einer unbehandelten TypeInitializationException, also an einer Exception in einem Klassenkonstruktor. Warum da keine vernünftige Fehlermeldung angezeigt wird, ist mir auch ein Rästsel.

haentschman 26. Okt 2009 18:09

Re: .NET Anwendung stürzt ab
 
Guten Abend,

ich hatte am Wochenende mit einer "professionellen" NET Anwendung ebenfalls Probleme mit Abstürzen. Der Support sagt, daß das wahrscheinlich ein Framework Problem sei. Wenn das NET Framework über das Windows Update aktualisiert wurde würden sich einige Probleme erklären.

:hi:

paperboy 26. Okt 2009 18:12

Re: .NET Anwendung stürzt ab
 
leider gibt es keine wirkilche feherlmeldung nur das "Projekt1.exe funktioniert nicht mehr.
Ein Problem hat die richtige Ausführung des Programms verhindert.
Schließen sie das Programm." und dann hab ich den Programm schließen button und das wars..
so sieht die meldung unter Win 7 aus... war auf xp und vista auch nicht anders...
kommt sofort beim start ohne das ich meine anwendung zu sehen bekomme...
wie gesagt framework ist grad frisch geupdated worden..

mkinzler 26. Okt 2009 18:16

Re: .NET Anwendung stürzt ab
 
Vielleicht fixt Microsoft das Problem zeitnah

DP-Maintenance 26. Okt 2009 18:17

DP-Maintenance
 
Dieses Thema wurde von "mkinzler" von "Sonstige Fragen zu Delphi" nach "Windows API / MS.NET Framework API" verschoben.
Eher ein Problem des .Net-Frameworks

Apollonius 26. Okt 2009 18:17

Re: .NET Anwendung stürzt ab
 
Ich denke immer noch, dass das kein Framework-Problem ist.
Du könntest einen Handler für das Ereignis AppDomain.UnhandledException schreiben und dort dann die Exception loggen. Somit hättest du ein paar nähere Informationen. Du musst aber aufpassen, dass du nicht vorher irgendwelche Klassenkonstruktoren auslöst.

paperboy 26. Okt 2009 18:26

Re: .NET Anwendung stürzt ab
 
aber auf meinem rechner rennt es ja... unter win 7... prinzipiell die gleiche konfiguration wie mein laptop nur das auf dem das codegear rad studio fehlt...
dachte es liegt vllt an fehlenden delphi komponenten... borland.vcl ist in der uses klausel und gibt wie ich grad gesehen hab eine warnung das sie
platformspezifisch ist... das hat damit doch aber eigentlich nichts zu tun oder?

@apollonius
ich bin noch recht unbeholfener hobby delphianer und hab keine ahnung wie ich sowas angehen muss...
das einzige was mir zu exceptions und deren abfangen geläufig ist try except...
und ich schätze diese aussage lässt dich jetzt die stirn runzeln und die minute verfluchen in der
du beschlossen hast mir zu helfen :mrgreen: aber könntest du vllt eine kleine erklärung dazu schreiben?

mkinzler 26. Okt 2009 18:27

Re: .NET Anwendung stürzt ab
 
Nochmal die Frage, bist du sicher, das du eine .Net Anwendung erstellt hast?

paperboy 26. Okt 2009 18:31

Re: .NET Anwendung stürzt ab
 
jau... da bin ich ganz sicher :)
ich arbeite nämlich mit der System.Security.Cryptography klassenbibliothek...

hab grad einfach nochmal ein leeres .net projekt compiliert und auf dem zweitrechner versucht und das läuft...
mir ist auch aufgefallen das das leere projekt knapp 500kb auf die waage bringt...
das scheint mir doch suspekt :) versuch mal den code nochmal in ein neues projekt einzufügen

Apollonius 26. Okt 2009 18:37

Re: .NET Anwendung stürzt ab
 
Okay, machen wir's noch simpler. In die allererste Methode, die vom Programm aufgerufen wird (ich weiß nicht genau, wie das in Prism aussieht...) schreibst du folgendes:
Delphi-Quellcode:
try
  //von Prism generierter Code... ich vermute mal u.A.
  Application.Run(new XYZForm);
except
  on E: Exception do
  begin
    MessageBox.Show(E.ToString());
    if E.InnerException <> nil then
      MessageBox.Show(E.InnerException.ToString());
  end;
end;
Und dann schaust du mal, was auf dem anderen Rechner dabei rauskommt.

paperboy 26. Okt 2009 18:39

Re: .NET Anwendung stürzt ab
 
ahhh... alles klar... das werd ich gleich mal versuchen...da einen exception handler einzubauen wär ich nie drauf gekommen :)

nein es bleibt leider bei dem windows fehler... also kommt er nicht mal bis zu dem handler...
hmm...

paperboy 26. Okt 2009 19:19

Re: .NET Anwendung stürzt ab
 
nungut... hilft ja wohl alles nix..
ein projekt nur mit form lässt sich starten... auch mit der gleichen uses einträgen...
da ich ja nicht mal bis zu dem exception handler komme muss es wohl ein etwas schwerwiegenderes problem sein...
danke erstmal soweit für eure hilfe... ich werd mal noch ein bissel rumprobieren..

aber falls noch einer ne idee hat immer her damit...

mkinzler 26. Okt 2009 19:21

Re: .NET Anwendung stürzt ab
 
Zeig mal etwas Code

Apollonius 26. Okt 2009 19:32

Re: .NET Anwendung stürzt ab
 
Hast du irgendwelche Klassenkonstruktoren? Baue try-except-Blöcke um alle. Packe alle Initialisierungen von Klassenvariablen in den Klassenkonstruktor.

paperboy 26. Okt 2009 19:48

Re: .NET Anwendung stürzt ab
 
Delphi-Quellcode:
procedure CalculateHash(ToHash: String; HashMethode: Integer);
var
datei : FileStream;
Hash : HashAlgorithm;
input, puffer : Array of Byte;
i : Integer;
begin
case Form1.PageControl1.TabIndex of
0:
begin
  datei := FileStream.Create(ToHash,FileMode.Open, FileAccess.Read,FileShare.None);
  SetLength(input, datei.Length);
  datei.Read(input,0, datei.Length);
  datei.Free;
end;
1:
begin
  i := 1;
  SetLength(input, Length(ToHash));
  while i <= length(ToHash) do
  begin
    input[i - 1] := Ord(ToHash[i]);
    inc(i)
  end;
end;
end;
case HashMethode of
0:
begin
  Hash := MD5CryptoServiceProvider.Create;
  puffer := HASH.ComputeHash(input);
end;
i := 0;
while i < length(puffer) do
begin
  HASHString := HASHString + puffer[i].ToString('x2');
  inc(i);
end;
Form1.Memo1.Text := HASHString.ToUpper;
der rest ist nur der funktionsaufruf und das auswählen einer datei über einen opendialog...
denke aber nicht das es am code liegt... der läuft ja...
wenn ich eine datei ohne alles bis auf das was delphi mir vorgibt, sprich das fenster, erstelle
dann läuft die exe... sie ist dann aber auch viel größer (1,4mb :shock:)... in dem moment
in dem ich einen button auf die form klatsche schrumpft die größe auf 16kb und die exe startet nur noch bei mir..
wenn dann all mein code geschrieben und die elemente auf dem fenster sind ist die exe 160kb groß und
ebenfalls nur auf dem rechner lauffähig auf dem sie kompiliert wurde... da frag ich mich doch was da verloren geht..

paperboy 26. Okt 2009 20:29

Re: .NET Anwendung stürzt ab
 
so... ich habs zum laufen gebracht...
ich hab mal verglichen was in dem project vorhanden war "Projekt -> Aus dem Projekt Entfernen"
und hab gesehen das die Borland.Delphi.dll, die Borland.Vcl.dll und die Borland,VclRtl.dll erst ins projekt kommen nachdem ich einen button auf das fenster lege... hab kurzerhand die drei assemblys entfernt obwohl ich mir davon nicht viel versprochen habe und die exe ist auf 1,8mb angestiegen und läuft jetzt auch auf meinem 2. system...
wäre natürlich toll zu wissen warum das so ist :)
und vor allem wie ich diese blöde exe die eigentich nicht viel macht wieder geschrumpft bekomme ohne das die funktionalität wieder abnimmt...

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 07:09 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