![]() |
.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 |
Re: .NET Anwendung stürzt ab
Mit D2009 kann man komischerweise keine .Net-Anwendungen erzeugen :gruebel:
|
Re: .NET Anwendung stürzt ab
sorry meine natürlich das codegear rad studio 2009 :oops:
|
Re: .NET Anwendung stürzt ab
Also in Delphi.Prism. Wie heisst die Fehlermeldung genau?
|
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.
|
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: |
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.. |
Re: .NET Anwendung stürzt ab
Vielleicht fixt Microsoft das Problem zeitnah
|
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 |
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. |
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? |
Re: .NET Anwendung stürzt ab
Nochmal die Frage, bist du sicher, das du eine .Net Anwendung erstellt hast?
|
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 |
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:
Und dann schaust du mal, was auf dem anderen Rechner dabei rauskommt.
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; |
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... |
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... |
Re: .NET Anwendung stürzt ab
Zeig mal etwas Code
|
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.
|
Re: .NET Anwendung stürzt ab
Delphi-Quellcode:
der rest ist nur der funktionsaufruf und das auswählen einer datei über einen opendialog...
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; 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.. |
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... |
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:
Edit: Okay da hätte ich wohl vorher die Seite aktualisieren sollen.
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; Ich lasse es trotzdem drin, vllt. hilft es ja dem nächsten, der über sowas stolpert... |
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 17:38 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