Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Seltsamer Fehler beim schließen (https://www.delphipraxis.net/181167-seltsamer-fehler-beim-schliessen.html)

Perlsau 22. Jul 2014 02:20

AW: Seltsamer Fehler beim schließen
 
Da wir ja weiterhin nur vermuten können: Ich tippe auf den Splash-Screen, der mit Nil als Parameter erzeugt wurde ...

Zitat:

Zitat von Satyr (Beitrag 1266267)
Es könnte trotzdem sein das ich hier irgendwo etwas falsch mache. Ich habe das für eine SplashScreen ein wenig umgebaut, die Anleitung fand ich damals per Google. Hier der Code:

Delphi-Quellcode:
program Conceptor;

uses
  madExcept,
  madLinkDisAsm,
  madListHardware,
  madListProcesses,
  madListModules,
  Forms,
  sysUtils,
  ...
{$R *.res}

begin
Application.Initialize;
Application.Title := 'Conepter';
SplashScreen := TSplashScreen.Create(nil);
SplashScreen.Show;
application.ProcessMessages;
Sleep(1000);
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(Tnotepad, notepad);
  Application.Run;
end.

Also bei mir sieht das mit dem Splash-Screen (Form-Info) ein wenig anders aus:
Delphi-Quellcode:
program ...;
{$R *.dres}

uses
  Forms,
  UnitInfo in 'UnitInfo.pas' {FormInfo},
  UnitMain in 'UnitMain.pas' {FormMain},
  UnitData in 'UnitData.pas' {DatMod: TDataModule},
  GlobalVars in 'GlobalVars.pas',
  DatBankEdit in 'DatBankEdit.pas',
  UnitPrint in 'UnitPrint.pas' {FormPrint},
  ...
{$R *.res}

begin
  ReportMemoryLeaksOnShutdown := True;
  Application.MainFormOnTaskbar := True;
  FormInfo := TFormInfo.Create(Application);
  FormInfo.Show;
  FormInfo.Update;
  Application.Initialize;
  Application.Title := 'PC-Heil Blutzucker-Verwaltung v0.0.1.171';
  Application.CreateForm(TFormMain, FormMain);
  Application.CreateForm(TDatMod, DatMod);
  Application.CreateForm(TFormPrint, FormPrint);
  ...
  Application.Run;
end.
Ich benutze FormInfo auch noch als Info-Form während des Programmablaufs.

Satyr 22. Jul 2014 11:51

AW: Seltsamer Fehler beim schließen
 
Ich habe die letzten 3 Stunden die Komponenten auf Form1 durchsucht (ausgebaut, getestet, eingebaut, nächste Komponente...), nichts gefunden :evil:.

Den SplashScreen habe ich wie gesagt nach einem kleinen Tut eingebaut das ich bei Google fand. Was ist genau der Unterschied ob ich es mit nil oder etwas anderem erzeuge?

himitsu 22. Jul 2014 12:08

AW: Seltsamer Fehler beim schließen
 
Wenn du es definitif selber freigibts, dann ist es egal.

Dieser Parameter ist der "Owner", also der Besitzer der Komponente.
Und der Owner kümmert sich um das Aufräumen.

Wenn du also mal nicht diese Form freigibst, dann würde schich Application darum kümmern, wenn man Diesen als Owner verwendet. Und zwar dann, wenn Application freigegeben wird (beim Entladen der Unit Form), dann würde spätestens diese Form mit freigegeben.

z.B. deiner Form1 wird, in dem Application.CreateForm, das Application als Owner übergeben, damit sich Application um dessen Freigabe (Free) kümmert.

Satyr 22. Jul 2014 12:20

AW: Seltsamer Fehler beim schließen
 
Verstehe. Ich habe jetzt noch mal nachgeguckt, ich verstecke die Splash Form nur (hide). Also habe ich im create nil durch Application getauscht. Leider ändert das nichts *sfz*.

Satyr 22. Jul 2014 13:05

AW: Seltsamer Fehler beim schließen
 
Interessant, ExitProcess(0) geht, Halt(0) nicht. Es knallt also dazwischen (war Euch sicher schon klar :) ). Gibt es noch eine andere Möglichkeit das finalisieren durchzusteppen, als wie gestern Abend? Zum Beispiel nur das was in Form1 passiert?

baumina 22. Jul 2014 13:07

AW: Seltsamer Fehler beim schließen
 
Warum hast du ein HALT in deinem Programm drin?

jaenicke 22. Jul 2014 13:11

AW: Seltsamer Fehler beim schließen
 
Zitat:

Zitat von Satyr (Beitrag 1266275)
Dann wird mein Fehler irgendwo in Form1 sein. Im Destroy steht nichts drin.

Das deutet eher darauf hin, dass du die Variable Form1 irgendwo veränderst oder selbst irgendwo freigibst.

Zitat:

Zitat von Satyr (Beitrag 1266325)
Interessant, ExitProcess(0) geht, Halt(0) nicht.

Halt bedeutet:
Mit voller Fahrt gegen den Baum fahren um anzuhalten.
Bist du sicher, dass du das möchtest? Dass es dabei auch knallen kann, dürfte klar sein.

Zitat:

Zitat von Satyr (Beitrag 1266325)
Gibt es noch eine andere Möglichkeit das finalisieren durchzusteppen, als wie gestern Abend? Zum Beispiel nur das was in Form1 passiert?

Debug-DCUs in den Projektoptionen aktivieren.

Satyr 22. Jul 2014 13:20

AW: Seltsamer Fehler beim schließen
 
Also wenn ich per grep search nach Form1 suche, kommt nichts wo ich das sonst beende oder freigebe.

Ich möchte Halt() nicht dauerhaft verwenden. Ich wollte nur mal testen was die Stelle mit dem Fehler nicht durchgeht, Halt() oder ExitProcess(). Ich habe (wieder Google) gelesen das Halt() trotzdem finalized und ExitProcess() nicht. Da bei Halt() der Fehler bleibt, ist mir so recht klar wo er ist. Nur wie ich weitersuche noch nicht so ganz. Was Debug-DCU's sind muss ich mir noch ergooglen *g*.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:07 Uhr.
Seite 4 von 4   « Erste     234   

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