AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?
Thema durchsuchen
Ansicht
Themen-Optionen

Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?

Ein Thema von günni0 · begonnen am 19. Apr 2018 · letzter Beitrag vom 24. Apr 2018
Antwort Antwort
Seite 1 von 3  1 23      
günni0
(Gast)

n/a Beiträge
 
#1

Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?

  Alt 19. Apr 2018, 19:06
Delphi-Version: 10.2 Tokyo
Ich habe eine Funktion, welcher ich eine TForm-Variable übergebe. Es existiert nicht zwangsweise bereits eine Instanz dieses Formulars.

Damit mein Code schön sauber bleibt, packe ich alles in Prozeduren. Eine davon speichert die Fenstergröße und -position. Einziger Parameter ist die Form-Instanzenvariable, die aber wie gesagt auch nil sein kann.

Bin ich jetzt gezwungen ein if Assigned(formxyz) then da drum zu packen oder geht das auch direkt im Funktionsaufruf irgendwie?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?

  Alt 19. Apr 2018, 19:14
Hallo,
die richtige Position der NIL-Auswertung ist in der Prozedur selbst.
Heiko
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#3

AW: Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?

  Alt 19. Apr 2018, 19:14
Dann bleibt ja nichts anderes übrig als ein if vor die Funktion zu setzen in diesem Falle. Denn der Parameter ist die Instanz selbst.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?

  Alt 19. Apr 2018, 22:18
Zeig doch mal deinen bestehenden Code.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.338 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?

  Alt 20. Apr 2018, 06:10
Dann bleibt ja nichts anderes übrig als ein if vor die Funktion zu setzen in diesem Falle. Denn der Parameter ist die Instanz selbst.
Nein.
Du kannst auch in der Funktion selbst prüfen, ob der übergebene Wert assigned ist. Kurzes Beispiel:
Delphi-Quellcode:
function MeineFunktion(aForm : TForm) : Boolean;
begin
  Result := Assigned(aForm);
  if Result then
  begin
    // Position der Form setzen
  end;
end;
Peter
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.176 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?

  Alt 20. Apr 2018, 07:07
So ist das zwar defensiv programmiert, aber schlechter Stil. Für einen Form, den es gar nicht gibt, die Position speichern zu wollen, ist nicht sauber. Ich würde das Problem an der Stelle lösen, wo es auftritt: beim Aufruf bzw noch vorher in der Logik, die auswählt, für welchen Form die Position gespeichert werden soll.
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#7

AW: Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?

  Alt 20. Apr 2018, 07:21
Dann bleibt ja nichts anderes übrig als ein if vor die Funktion zu setzen in diesem Falle. Denn der Parameter ist die Instanz selbst.
Nein.
Du kannst auch in der Funktion selbst prüfen, ob der übergebene Wert assigned ist. Kurzes Beispiel:
Delphi-Quellcode:
function MeineFunktion(aForm : TForm) : Boolean;
begin
  Result := Assigned(aForm);
  if Result then
  begin
    // Position der Form setzen
  end;
end;
Spätestens beim Aufruf von MeineFunktion() kracht es dann.
Delphi-Quellcode:
procedure MeineFunktion(const aForm : TForm);
begin
  Mach etwas mit aForm
end;

// Kein Problem
if Assigned(aForm ) then
 MeineFunktion(aForm);

// Problem (egal ob man Assigned in MeineFunktion hat oder nicht)
MeineFunktion(aForm);

Geändert von günni0 (20. Apr 2018 um 07:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?

  Alt 20. Apr 2018, 07:49
Spätestens beim Aufruf von MeineFunktion() kracht es dann.
Das bezweifel ich mal. Mit dem assign wird ja kontrolliert, ob aForm NIL ist.

Es könnte aber sein, daß aForm nicht NIL ist sondern einen undefinierten Zustand hat. Das solltest du mit dem Debugger mal kontrollieren.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#9

AW: Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?

  Alt 20. Apr 2018, 07:51
Zitat:
Es könnte aber sein, daß aForm nicht NIL ist sondern einen undefinierten Zustand hat.
Das Formular wird bei Programmstart nicht erzeugt.

Zitat:
Das solltest du mit dem Debugger mal kontrollieren.
Starter
  Mit Zitat antworten Zitat
SProske

Registriert seit: 16. Feb 2015
Ort: Halle/S.
116 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#10

AW: Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?

  Alt 20. Apr 2018, 08:08
Auch in der Starter gibt es den Debugger, nur die Hover-Anzeige funktioniert halt nicht - aber über die überwachten Ausdrücke kommst du ja trotzdem dran.
Sebastian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 18:55 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