AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Unerklärliche Autoterminierung

Ein Thema von Nils_13 · begonnen am 17. Apr 2007 · letzter Beitrag vom 30. Apr 2007
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Unerklärliche Autoterminierung

  Alt 19. Apr 2007, 16:06
Ich hab letztens mal was in der Richtung gehabt, bei der Analyse stellte sich dann heraus dass im *.dpr alles von Application.Initialize bis hinters Application.Run in einem globalen Try..Except-Block eingefasst war. Beim Starten des Programms fand die Application einen Registrywert nicht, lieferte den Fehler per Raise() nach oben durch und das Programm beendete sich noch in der TMainForm.OnFormCreate direkt wieder. Der Callstack sah sehr interessant aus Gefunden übrigens mit MadExcept - wunderbares Tool
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#12

Re: Unerklärliche Autoterminierung

  Alt 19. Apr 2007, 16:21
Ich hoffe es geht, denn ich bin mal wieder unter Linux und konnte es deshalb nicht testen:
1. Die angehängte Datei runterladen.
2. Ein neues Projekt erstellen.
3. Eine Listbox mit dem Namen lbList erstellen.
4. Den Code aus der uTest.pas einfach einbauen (selbsterklärend; ich habe LoadFiles eingesetzt, damit die Unterschiede zwischen dem Programm und dem Beispiel nicht zu groß werden).
5. Über "Öffnen mit" eine M3U öffnen.
Der Code vom richtigen Programm wäre zu groß gewesen, deshalb dieses kleine Beispiel.
Ich kann mommentan nicht zu Windows wechseln, ansonsten hätte ich kurz Windows gestartet und es dort schnell erstellt.

@OldGrumpy: Was heißt try..execpt ? (ich weiß was das ist, aber kann damit in Bezug auf das Problem nichts anfangen)
Angehängte Dateien
Dateityp: pas utest_123.pas (2,0 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Unerklärliche Autoterminierung

  Alt 19. Apr 2007, 19:50
Ganz einfach... die Exception die geworfen wurde weil das Programm dann versuchte, einen nicht existenten Registrykey zu lesen sorgte dafür dass das Programm direkt aus der TMainForm.CreateForm() in den Except-Block im *.dpr sprang. Der war leer und der Programmablauf danach zuende - Cleanup und tschüss.

Zur Verdeutlichung hier der entsprechende Schnipsel aus dem *.dpr:

[delphi]
begin
try
Application.Initialize;
Application.Title := 'MeinProgramm';
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TForm1, Form1);
[...]
Application.Run;
except
end;
end.

Im CreateForm trat nun eine Exception auf, die löste (auf Umwegen) den Handler oben aus und das Programm war zuende noch bevor es überhaupt richtig gestartet war.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#14

Re: Unerklärliche Autoterminierung

  Alt 19. Apr 2007, 20:24
Also könnte der Fehler in der Registry liegen ?
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#15

Re: Unerklärliche Autoterminierung

  Alt 19. Apr 2007, 20:41
Ich glaub jetzt brauch ich nen Bier...
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#16

Re: Unerklärliche Autoterminierung

  Alt 19. Apr 2007, 21:39
Solche Posts helfen immer weiter Du sagtest doch, dass so ein Absturz passieren kann, wenn der Registryeintrag nicht existiert. Falls es kein Except gibt, springt er gleich zu Destroy. Bloß habe ich keine Exception. Und zum xten für alle Mal: es passiert NUR AUS DEM EXPLORER RAUS UND NICHT AUS DER IDE!
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#17

Re: Unerklärliche Autoterminierung

  Alt 19. Apr 2007, 21:51
Ja also bitte, Du ziehst immer so unlogische Schlüsse. Ist ja wohl klar, dass das eigentliche Problem der Try..Except-Block ist und nicht der Registryzugriff. Aber da Du kein wirkliches Interesse an der Problemlösung hast ("Ich habe KEINE EXCEPTIONS", "Programm zu gross" und ähnliches blabla), bitte, nicht mein Bier. Wenn Du es nicht hier anhängen willst, kann ich Dir gerne nen entsprechenden FTP-Account geben. Ich schaus mir gerne mal an, aber entweder lieferst Du dafür den kompletten Projektcode oder zumindest ne ausführbare Version. Um mir auch noch nen evtl. ähnlich funktionierendes Programm zu bauen, bei dem gar nicht sicher ist ob der Fehler überhaupt auftritt, ist mir meine Zeit echt zu schade. Sorry wenn das hart klingt, aber naja, ich investier hier meine knappe Freizeit (wie etliche andere auch) und da kann man ja wohl mal etwas Vorarbeit erwarten.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#18

Re: Unerklärliche Autoterminierung

  Alt 30. Apr 2007, 21:35
Hi,

nach langer Wartezeit, möchte ich zur meiner Lösung kommen (der Releasepunkt hat sich bereits um über 1,5 Jahre verschoben und verschiebt sich gerade schon wieder bei der letzten Sache). OldGrumpy ist zur Zeit verhindert und macht deshalb verständlicher Weise nichts. Ich habe für die Lösung zwei Sachen zu bieten:
1.:
OldGrumpy äußerte, dass es an dem Try..Except liegen müsste, deshalb hier der Code von dem "Try..Except":
Delphi-Quellcode:
var s : String;
begin
  Application.Initialize;
  Application.Title := 'Dark Player II';
  s := ExtractFilePath(Application.ExeName) + 'skins\';
  if DirectoryExists(s) then
  begin
    with TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'settings.ini') do
    begin
      if DirectoryExists(ExtractFilePath(Application.ExeName) + 'skins\') then
      begin
        s := s + ReadString('Settings', 'Skin', 'blue.dpsf');
      end;
      Free;
    end;
    if FileExists(s) then
    begin
      Application.CreateForm(TfrmMain, frmMain);
      Application.CreateForm(TfrmSkinSector, frmSkinSector);
      Application.CreateForm(TfrmMsgBox, frmMsgBox);
      Application.CreateForm(TfrmVideo, frmVideo);
      Application.CreateForm(TfrmODd, frmODd);
      Application.CreateForm(TfrmOp, frmOp);
      Application.CreateForm(TfrmFavs, frmFavs);
      Application.CreateForm(TfrmTags, frmTags);
      Application.CreateForm(TfrmSetting, frmSetting);
      Application.CreateForm(TfrmLicense, frmLicense);
    end else
    begin
      Application.CreateForm(TfrmMsgBox, frmMsgBox);
      MsgBox('Skinfile not found!');
    end;
  end else
  begin
    Application.CreateForm(TfrmMsgBox, frmMsgBox);
    MsgBox('Skindirectory not found!');
    Exit;
  end;
  Application.Run;
end.
2.:
Ich kann, falls dies nicht genügen sollte, einen Nachbau anfertigen, der eine - abgesehen von den Formen - gleiche Programmdatei (dpr) hat und auch im allgemeinen ein Nachbau ist, abgesehen davon, dass natürlich ein Großteil, aus folgenden Gründen, fehlen würde:
1. Ich habe sehr viel Zeit in dieses Projekt gesetzt und ich möchte es einfach nicht online stellen, da ich nicht will, dass jeder Zugriff auf meine Arbeit hat. Bei ein/zwei/drei Personen ist das ok, aber eine Community ist zu viel.
2. Es ist immer an die eingebundenen Komponenten zu denken. Es hält sich im Vergleich zur Projektgröße zwar relativ in Grenzen, allerdings habe ich teilweise kleine Modifizierungen eingebaut, damit es besser funktioniert. Dies führte übrigens schon bei einem anderen zu Problemen, als er die modifizierten Komponenten installieren wollte (lag scheinbar an den neuen Versionen, kA warum. Das ist auch nicht das Thema).

PS: Wenn jemand auf Anhieb weiß, dass ihm der Code oben nicht reicht, dann bitte sofort antworten und ich erstelle und stelle schnellstmöglichst die kleine Projektversion rein.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 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