AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Automatische Generierung der Formulare bei Serviceanwendung verhindern
Thema durchsuchen
Ansicht
Themen-Optionen

Automatische Generierung der Formulare bei Serviceanwendung verhindern

Ein Thema von t2000 · begonnen am 18. Apr 2019 · letzter Beitrag vom 19. Apr 2019
Antwort Antwort
Benutzerbild von t2000
t2000

Registriert seit: 16. Dez 2005
Ort: NRW
247 Beiträge
 
Delphi 12 Athens
 
#1

Automatische Generierung der Formulare bei Serviceanwendung verhindern

  Alt 18. Apr 2019, 17:22
Hallo zusammen,

ich habe eine Windows (64bit) Serviceanwendung. Darin enthalten ist ein abgeleitetes Datamodule.
Also es gibt TMeinDatenmodul = class(TDataModule) und davon abgeleitet TMeinErweitertesDatenmodul = class(TMeinDatenmodul)
In der Unit MeinDatenmodul gibt es die globale Variable MeinModul : TMeinDatenmodul;
In der Unilt MeinErweitertesDatenmodul gibt es KEINE globae Variable.

Jetzt macht Delphi (Rio 10.3.1) im Quelltext der Serviceanwendung die Generierung von
Application.CreateForm(TMeinDatenmodul, MeinModul);
Application.CreateForm(TMeinService, MeinService);

Unter den Projektoptionen bei Formulare steht nichts!

Ich möchte nun natürlich, dass im Projektquelltext folgendes steht:
Application.CreateForm(TMeinErweitertesDatenmodul, MeinModul);

Also das auf die Variable MeinModul ein erweitertes Modul erzeugt wird.
Wenn ich das so von Hand ändere, klappt auch alles einwandfrei und der Service läuft wie gewünscht.

Nachdem ich dann aber weiterprogrammiert habe, überschreibt Delphi immer wieder den Projekt-Quelltext mit dem ursprünglichen: Application.CreateForm(TMeinDatenmodul, MeinModul);

Meistens merke ich es nicht sofort und wundere mich das die Anwendung nicht richtig läuft.
In "normalen" Programmen, kann ich das alles über die manuelle Erzeugung der Formulare machen, aber beim Service geht das offensichtlich nicht.

Weiß jemand was hier zu tun ist?

LG Thomas
Thomas
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
711 Beiträge
 
Delphi 12 Athens
 
#2

AW: Automatische Generierung der Formulare bei Serviceanwendung verhindern

  Alt 19. Apr 2019, 10:07
Hallo zusammen,

ich habe eine Windows (64bit) Serviceanwendung. Darin enthalten ist ein abgeleitetes Datamodule.
Also es gibt TMeinDatenmodul = class(TDataModule) und davon abgeleitet TMeinErweitertesDatenmodul = class(TMeinDatenmodul)
In der Unit MeinDatenmodul gibt es die globale Variable MeinModul : TMeinDatenmodul;
In der Unilt MeinErweitertesDatenmodul gibt es KEINE globae Variable.

Jetzt macht Delphi (Rio 10.3.1) im Quelltext der Serviceanwendung die Generierung von
Application.CreateForm(TMeinDatenmodul, MeinModul);
Application.CreateForm(TMeinService, MeinService);

Unter den Projektoptionen bei Formulare steht nichts!
Das ist nicht normal. In einem Service wird normalerweise nur das Service-Objekt selbst per CreateForm erzeugt, alles andere muss man selbst im Kode erzeugen.
Hab's gerade mal ausprobiert (RIO 10.3.1), ein neues Serviceproject erzeugt, Platform auf Win64 gesetzt und gespeichert, ein TDatamodule dazugepackt und gespeichert, ein weiteres davon abgeleitet (per visual form inheritance) und gespeichert. Im DPR-File steht nur die CreateForm-Zeile für den Service selbst, keine für die beiden TDatamodules.

Lösch doch mal das DPROJ-File des Projektes (oder benenne es um), ebenso das DSK-File. Öffne das DPR-File in der IDE und setz die Projektoptionen neu. Danach funktioniert hoffentlich wieder alles wie es sollte.
Peter Below
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

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

AW: Automatische Generierung der Formulare bei Serviceanwendung verhindern

  Alt 19. Apr 2019, 10:26
Man kann die IDE daran hindern, automatisch die Formulare und Datenmodule zu erzeugen. Die zugehörige Option findet man in 10.3 unter Tools - Optionen - Benutzeroberfläche- Formular-Designer - Optionen für die Modulerzeugung - Autom. Formulare & Datenmodule.

Allerdings könnte es dein spezielles Problem vielleicht gar nicht lösen, da du eine vom Standard abweichende Anforderung hast (Typ und Variablenname passen nicht zusammen):
Code:
Ich möchte nun natürlich, dass im Projektquelltext folgendes steht:
Application.CreateForm(TMeinErweitertesDatenmodul, MeinModul);
Musst du halt mal probieren.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von t2000
t2000

Registriert seit: 16. Dez 2005
Ort: NRW
247 Beiträge
 
Delphi 12 Athens
 
#4

AW: Automatische Generierung der Formulare bei Serviceanwendung verhindern

  Alt 19. Apr 2019, 13:57
Ich habe mal die autom. Generierung ausgeschaltet. Werde mal abwarten.
Danke erstmal.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von t2000
t2000

Registriert seit: 16. Dez 2005
Ort: NRW
247 Beiträge
 
Delphi 12 Athens
 
#5

AW: Automatische Generierung der Formulare bei Serviceanwendung verhindern

  Alt 19. Apr 2019, 16:17
Es ist gerade wieder passiert. Nach einigen "Erzeugen" und auch zwischnzeitlichen Neustart von Delphi wurde im Service-Quelltext die Create-Routiune automatisch überschrieben.
Trotz der neuen Einstellung, dass keine automatische Erzeugung gemacht werden soll.

Ich denke, ich werde irgendein Kontrollcode einbauen müssen, damit mir das nicht versehentlich passiert. Am besten etwas, dass schon beim Compilieren meckert und nicht erst beim Start.
Thomas
(Wir suchen eine(n) Entwickler(in) mit Ambitionen später ggf. die Softwarefirma zu leiten)
Aktuell nicht mehr. Aber ab vielleicht 2024/2025 wird das wieder sehr interessant!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

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

AW: Automatische Generierung der Formulare bei Serviceanwendung verhindern

  Alt 19. Apr 2019, 16:57
Ich vermute, es liegt an dieser Abnormität bezüglich Typname und Variablenname. Wenn du das irgendwie bereinigt kriegst, sollte das Problem behoben sein. Du könntest z.B. den Aufruf Application.CreateForm(TMeinErweitertesDatenmodul, MeinModul); in die Klasse TMeinErweitertesDatenmodul verlagern und mit einer globalen oder Klassen-Methode im DPR-Code aufrufen.

Die IDE hat so ihre eigenen Vorstellungen vom Code in der DPR und man sollte möglichst nicht dagegen arbeiten.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 15:06 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