AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein TForm.Name bekommt fortlaufende Nr angehängt
Thema durchsuchen
Ansicht
Themen-Optionen

TForm.Name bekommt fortlaufende Nr angehängt

Ein Thema von norwegen60 · begonnen am 11. Jun 2020 · letzter Beitrag vom 12. Jun 2020
Antwort Antwort
Seite 1 von 2  1 2      
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#1

TForm.Name bekommt fortlaufende Nr angehängt

  Alt 11. Jun 2020, 17:56
Hallo zusammen,

ich habe mit einem Formulat das Phänomen, dass dieses bei jedem Aufruf zu seinem Namen eine Nr. angehängt bekommt. Ich erzeuge und öffne das Fenster ganz normal über
Delphi-Quellcode:
   Form1 := TForm1.Create(nil):
  try
    Form1.Showmodal;
  finally
    Form1.Free;
    Form1:=nil;
  end;
Wenn ich mir Form1.Name anzeigen lasse, heißt es mit dem ersten Aufruf Form1, mit dem zweiten Aufruf Form1_1, Form1_2, ...

Das stelle ich bei keinem anderen Formular fest. Ich speichere beim Schließen die Position unter Form.Name und das nutzt natürlich wenig, wenn das Form beim nächsten Aufruf einen anderen Namen hat.

Weiß jemand woher das kommt?

Problem tritt mit Delphi XE auf

Danke
Gerd
  Mit Zitat antworten Zitat
mmw

Registriert seit: 10. Sep 2019
Ort: OWL
322 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TForm.Name bekommt fortlaufende Nr angehängt

  Alt 11. Jun 2020, 18:59
hallo,
das liegt daran, das Tform1 automatisch erzeugt wird. Project/Optionen/Anwendung/Formulare

so funkioniert es

Delphi-Quellcode:
var
  frm: TForm1;
begin

  try
    frm := Tform1.Create(nil);
    frm.ShowModal;

  finally
    frm.Free;
  end;
end;

Geändert von mmw (11. Jun 2020 um 19:06 Uhr)
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#3

AW: TForm.Name bekommt fortlaufende Nr angehängt

  Alt 11. Jun 2020, 19:28
Dann vergib doch dem Formular einen Namen. Das sollte dann doch reichen.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#4

AW: TForm.Name bekommt fortlaufende Nr angehängt

  Alt 11. Jun 2020, 19:28
Nein, automatisch wird es sicher nicht erzeugt. Aber trotzdem: Mit der lokalen Variablen habe ich ein Workaround das funktioniert.

Verstehen tu ich es trotzdem nicht, denn ich verwende in der Regel immer die bei TForm automatisch erstellte globale Variable Form1 und habe das noch nie festgestellt. Sonst würde die Wieder-Positionierung öfters nicht funktionieren.

Dadurch dass ich Form.ShowModal aufrufe und danach Free und = NIL setze, sollte es auch nicht als Folge Instanz gedeutet werden.

Danke
Gerd

Geändert von norwegen60 (11. Jun 2020 um 19:43 Uhr)
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.017 Beiträge
 
Delphi 2009 Professional
 
#5

AW: TForm.Name bekommt fortlaufende Nr angehängt

  Alt 11. Jun 2020, 21:07
Hast du Application.CreateForm() aus dem Projekt-Quelltext entfernt? Das kann man auf bei dem von mmw geposteten Menüpfad einstellen, funktioniert bei komplexeren Projekten mit Startparametern aber eher schlecht als recht.

hallo,
das liegt daran, das Tform1 automatisch erzeugt wird. Project/Optionen/Anwendung/Formulare

so funkioniert es

Delphi-Quellcode:
var
  frm: TForm1;
begin

  try
    frm := Tform1.Create(nil);
    frm.ShowModal;

  finally
    frm.Free;
  end;
end;
Keinen Code posten, wo der Compiler meckert.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TForm.Name bekommt fortlaufende Nr angehängt

  Alt 11. Jun 2020, 21:13
Ja klar, der ist ja auch syntaktisch total falsch.

Variable im Finally nicht initiailisiert, ist noch das gerinngste Problem.
Das Create gehört vor das TRY, denn wenn es da knallt, dann darf auf keinen Fall das Free ausgeführt werden, weil (A) die Variable nicht initialisiert ist und (B) das Objekt bereits im Create freigegeben wurde, da der Zeiger des Result der Variable ganricht zugewiesen werden konnte, weil es knallte.

Formularnamen sind global eindeutig,
und wenn sowas bereits existiert, dann wird nunmal der Name so geändert, dass es passt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#7

AW: TForm.Name bekommt fortlaufende Nr angehängt

  Alt 11. Jun 2020, 21:40
Formularnamen sind global eindeutig,
und wenn sowas bereits existiert, dann wird nunmal der Name so geändert, dass es passt.
Wieso wird der Name aber nicht "freigegeben"? Wie gesagt, beim ersten Create ist der Name noch "Form1". Wenn ich dann Form1 schließe und gleich wieder Öffne ist er Form1_1 usw.

Ich habe auch probiert
Delphi-Quellcode:
  if not assigned(Form1) then
    Form1 := TForm1.Create(nil);
  try
    Form1.Showmodal;
  finally
    Form1.Free;
    Form1:=nil;
  end;
Damit bin ich sicher, dass Form correct genillt wurde und damit sollte ja auch der Name frei sein
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TForm.Name bekommt fortlaufende Nr angehängt

  Alt 11. Jun 2020, 22:17
Dann machst du wohl was falsch?

* entweder der Name steht so in der DFM
* oder es gibt bereits ein globales Objekt mit diesem Namen (z.B. TForm, TDataModule oder TService)

siehe TReader.ReadRootComponent->FindUniqueName in System.Classes
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#9

AW: TForm.Name bekommt fortlaufende Nr angehängt

  Alt 11. Jun 2020, 23:01
Ja, und ich habe den Fehler auch gefunden. Im OnClose des Formulars stand
Form1 := nil
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TForm.Name bekommt fortlaufende Nr angehängt

  Alt 12. Jun 2020, 09:40
In dem Fall kann ich nur das sagen, das ich hier immer sage:
Schmeiß diese globale Variable weg.

Auch bau automatisch erzeigten Formularen kann man diese Variable entfernen und in die DPR verschieben.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:11 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