AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Initialisierung falsch !

Ein Thema von TERWI · begonnen am 20. Aug 2022 · letzter Beitrag vom 25. Aug 2022
Antwort Antwort
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Initialisierung falsch !

  Alt 21. Aug 2022, 15:58
Hätte ich das gewusst, was visible da im Detail alles macht, hätte es diesen Fred gar nicht gegeben.
Ich war bisher der Meinung, das beeinflusst nur die Anzeige selbst.
... nun bin ich ja wieder etwas schlauer.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#2

AW: Initialisierung falsch !

  Alt 21. Aug 2022, 16:01
Zitat:
Ich war bisher der Meinung, das beeinflusst nur die Anzeige selbst.
Tja die IDE ist schon sehr suspekt.
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Initialisierung falsch !

  Alt 21. Aug 2022, 16:13
Tja, denke mal da hat sich jemand was dabei gedacht und es hat einen tieferen SInn, warum OnActivate (und was auch immer noch) "umgeleitet" wird.
Man kann das jetzt so oder so sehen ... wichtig ist, es zu wissen !
Dann sucht man nicht tagelang rum und versteht die Welt nicht mehr.

Und ehrlich gesagt: Hätte ich hier den Debugger benutzt, hätte mir die Anzeige wie in jaenicke's Bild auch keinen CM weitergebracht.
Wäre mir die "andere" Reihenfolge nicht im LOG aufgefallen, hätte ich wahrscheinlich in letzter Not die IDE neu installiert ....

Uwe's Antwort macht's dann noch etwas klarer.
Zitat:
Niemand hat behauptet dass Programmieren einfach sei.
GENAU !
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Initialisierung falsch !

  Alt 21. Aug 2022, 16:18
Nachtrag:
In der OH steht auch nur das drin, wie ich meinte es zu wissen
Zitat:
Bestimmt, ob die Komponente auf dem Bildschirm angezeigt wird.

Mit der Eigenschaft Visible können Sie die Sichtbarkeit des Steuerelements zur Laufzeit steuern. Wenn Visible True ist, wird das Steuerelement angezeigt. Hat die Eigenschaft den Wert False, ist es nicht zu sehen.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.857 Beiträge
 
Delphi 12 Athens
 
#5

AW: Initialisierung falsch !

  Alt 21. Aug 2022, 18:32
Da steht doch deutlich "Wenn Visible True ist, wird das Steuerelement angezeigt.". Und genau das ist doch auch der Fall: Sobald das Programm ausgeführt wird, ist das Fenster sichtbar, genauso wie es bei jeder Komponente auf einem Formular auch der Fall ist, wenn Visible auf True steht.

Formulare werden zur Laufzeit im Grunde genauso geladen wie jede andere Komponente.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#6

AW: Initialisierung falsch !

  Alt 22. Aug 2022, 00:52
Bei der Mainform (die erste Form über Application.CreateForm) wird sie nach dem Laden immer auf Visible=True (Show) gesetzt.

Andere Forms werden sichtbar, wenn der Entwickler es danach sagt, also Show oder ShowModal (wenn die auch mit Visible=False designed wurden).
Und vor ShowModal muß die Form sowieso immer Visible=False sein.


Mit Visible=False hat man nach dem Erstellen (Create) auch noch genug Zeit um irgendwas einzustellen, vor dem Anzeigen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (22. Aug 2022 um 01:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Initialisierung falsch !

  Alt 24. Aug 2022, 20:28
... es wird immer verrückter.
Das Proggie funzt zwar i.d.R., aber mit ist aufgefallen, das so einige LOG-Zeilen fehlen. Dachte erst der Logger spinnt ... nein tut er nicht.
Die im neu aufgebauten Projekt zuletzt in der IDE hinzugefügte Form ZatVLC weigert sich beharrlich, LOGs anzuzeigen ... bis auf 2 (s.u.)
Damit nicht wieder diese Fragen wie "... und was ist mit Code ?" kommen, hier nun diverses.
Die Projektdatei:
Delphi-Quellcode:
program ZATTOO;

uses
  Vcl.Forms,
  LOGGER5 in 'LOGGER5.pas{LOGGER},
  uHTTP in 'uHTTP.pas',
  ZAT_MAIN in 'ZAT_MAIN.pas{ZATMain},
  ZAT_LIB in 'ZAT_LIB.pas{ZatLIB},
  ZAT_CHL in 'ZAT_CHL.pas{ZatChl},
  ZAT_CHLSEL in 'ZAT_CHLSEL.pas{chl_BOX},
  ZAT_EPG in 'ZAT_EPG.pas{ZatEpg},
  ZAT_INFO in 'ZAT_INFO.pas{ZatINFO},
  ZAT_VLC in 'ZAT_VLC.pas{ZatVLC};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TZATMain, ZATMain);
  Application.CreateForm(TZatLIB, ZatLIB);
  Application.CreateForm(TZatChl, ZatChl);
  Application.CreateForm(Tchl_BOX, chl_BOX);
  Application.CreateForm(TZatEpg, ZatEpg);
  Application.CreateForm(TZatINFO, ZatINFO);
  Application.CreateForm(TZatVLC, ZatVLC);
  Application.Run;
end.
Die Initialisierung - Auruf über OnShow der MainForm:
Delphi-Quellcode:
procedure TZatMAIN.FormInit(Sender: TObject);
begin
  Log('INIT', '... INIT MODULES ...');
  if FIsInit then exit; //
  ZatLIB._Init(Dispatcher);
  ZatCHL._Init(Dispatcher);
  chl_BOX._Init(Videopanel, ChangeChannel);
  ZatEPG._Init(Dispatcher, VideoPanel);
  ZatINFO._Init(Videopanel);
  ZatVLC._Init(Dispatcher,
               VideoPanel,
               'ZATTOO', // name for graph
               TRUE); // DO LOG
  FIsInit := true; // State neccessary for RESIZE !!!
end;
Die neue Zat_VLC.pas (DFM dazu ist eine blanke Form mit nix drin):
Delphi-Quellcode:
unit ZAT_VLC;

interface

uses
  Winapi.Windows, Winapi.Messages,
  System.SysUtils, System.Variants, System.Classes,
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls,
  LOGGER5;

type
  TResponse = procedure(Typ, Mode, Result : integer) of object;

  TZatVLC = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    FResponse : TResponse;
    FVideoPanel : TPanel;
    FName : string;
    FDoLog : boolean;
    procedure LOG(S1, S2 : string);
  public
    function _Init(Response : TResponse;
                    Panel : TPanel;
                    Name : string;
                    DoLog : boolean = true) : integer;
  end;

var
  ZatVLC: TZatVLC;

implementation

{$R *.dfm}

procedure TZatVLC.FormCreate(Sender: TObject);
begin
  Log('CREATE', '... begin');
  FResponse := NIL;
  FVideoPanel := NIL;
  FName := '';
  FDoLog := false;
  Log('CREATE', '... end');
end;

procedure TZatVLC.FormDestroy(Sender: TObject);
begin
  Log('DESTROY', '... begin');
  // das hier nur damit was passiert ....
  FResponse := NIL;
  FVideoPanel := NIL;
  FName := '';
  FDoLog := false;
  Log('DESTROY', '... end');
end;

function TZatVLC._Init(Response : TResponse;
                       Panel : TPanel;
                       Name : string; // for naming graho and ROT
                       DoLog : boolean = true) : integer;
begin
  Log('DoInit', ' ...begin');
  result := -1;
  FResponse := Response;
  FVideoPanel := Panel;
  FName := Name;
  FDoLog := DoLog;
  Log('DoInit', ' ...end');
end;

procedure TZatVLC.LOG(S1, S2 : string);
begin
  if (Assigned(LOGGER) AND FDoLog) then LOGGER.LOG('VLC', S1, S2);
end;

end.
... und nun die LOG-Datei dazu:
Delphi-Quellcode:
[20:14:40:543] [LOG - CREATE]: ... OK !
[20:14:40:606] [MAIN - CREATE]: ... begin
[20:14:40:612] [MAIN - CREATE]: ... end
[20:14:40:612] [ZATLIB - CREATE]: ... begin
[20:14:40:628] [ZATLIB - CREATE]: ... end
[20:14:40:644] [CHL - Create]: ...begin
[20:14:40:644] [CHL - Create]: ...end
[20:14:40:644] [CHLBOX - Create]: ...begin
[20:14:40:644] [CHLBOX - Create]: ...end
[20:14:40:644] [EPG - Create]: ...begin
[20:14:40:644] [EPG - Create]: ...end
[20:14:40:659] [INFO - Create]: ...begin
[20:14:40:659] [INFO - Create]: ...end
[20:14:40:675] [MAIN - INIT]: ... INIT MODULES ...
[20:14:40:675] [ZATLIB - DoInit]: ...begin
[20:14:40:675] [ZATLIB - DoInit]: ...end
[20:14:40:675] [CHL - DoInit]: ...begin
[20:14:40:675] [CHL - DoInit]: ...end
[20:14:40:675] [CHLBOX - DoInit]: ...begin
[20:14:40:691] [CHLBOX - DoInit]: ...end
[20:14:40:691] [EPG - DoInit]: ...begin
[20:14:40:691] [EPG - DoInit]: ... end
[20:14:40:691] [INFO - DoInit]: ...begin
[20:14:40:691] [INFO - DoInit]: ...end
..... wo ist das "[VLC - DoInit]: ...begin" geblieben `?
[20:14:40:691] [VLC - DoInit]: ...end
[20:14:42:765] [MAIN - CLOSE]: ... start
[20:14:42:765] [MAIN - CLOSE]: ... end
[20:14:42:765] [VLC - DESTROY]: ... begin
..... wo ist das "[VLC - DESTROY]: ... end" geblieben `?
[20:14:42:765] [INFO - Destroy]: ...begin
[20:14:42:765] [INFO - Destroy]: ...end
[20:14:42:765] [EPG - DESTROY]: ...begin
[20:14:42:765] [EPG - DESTROY]: ...end
[20:14:42:765] [CHLBOX - Destroy]: ...begin
[20:14:42:765] [CHLBOX - Destroy]: ...end
[20:14:42:765] [CHL - Destroy]: ...begin
[20:14:42:765] [CHL - Destroy]: ...end
[20:14:42:765] [ZATLIB - DESTROY]: ... begin
[20:14:42:765] [ZATLIB - DESTROY]: ... end
[20:14:42:781] [MAIN - DESTROY]: ... start
[20:14:42:781] [MAIN - DESTROY]: ... end
Bemerkungen zu siehe nachgetragen in der LOG-Datei.
Der Logger loggt sauber bis zum Ende durch.
Alle Formen sind prinzipiell wie die ZAT_VLC aufgebaut.
Initialisiert auch so wie gedacht und umgekehrt beim beenden.
Bei jeder weiteren Form das gleiche/ähnliche Spielchen.
Sehe ich da was nicht ?

Es sind nur die benötigten Dateien im Verzeichnis.
Von den Projektdaten bis auf die DPR alles gelöscht.
Auch alle DCU's.
Quasi ein nacktes Projekt.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.603 Beiträge
 
Delphi 12 Athens
 
#8

AW: Initialisierung falsch !

  Alt 21. Aug 2022, 16:07
Hätte ich das gewusst, was visible da im Detail alles macht, hätte es diesen Fred gar nicht gegeben.
Ich war bisher der Meinung, das beeinflusst nur die Anzeige selbst.
Es beeinflusst ja auch nur die Anzeige - genauer, ob das Form beim Create angezeigt wird oder nicht. Indirekt beeinflusst es damit halt auch den Zeitpunkt der Anzeige. Das hat aber nichts mit der IDE zu tun (geschieht ja eh alles zur Runtime), sondern mit dem DFM-Streaming. Was das FormCreate betrifft spielt das OldCreateOrder dann ja auch noch eine Rolle bezüglich der Aufruf-Reihenfolge. Niemand hat behauptet dass Programmieren einfach sei.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#9

AW: Initialisierung falsch !

  Alt 21. Aug 2022, 16:10
Zitat:
Das hat aber nichts mit der IDE zu tun (geschieht ja eh alles zur Runtime)
Sicher ?

Fakt ist doch das es innerhalb der IDE definiert Eingestellt werden muß.
Inwiefern hat es dann mit der IDE nichts zu tun.

Wegen dieser Zwiespältigkeit arbeite ich lieber ohne soweit dies möglich ist.
Ok! Bin raus Thema scheint ja erledigt zu sein.
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:36 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 by Thomas Breitkreuz