Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Form Show führt zu Access Violation (https://www.delphipraxis.net/180383-form-show-fuehrt-zu-access-violation.html)

Paddy 16. Mai 2014 14:39

Form Show führt zu Access Violation
 
Hallo liebe Delphi-Gemeinde,

ich habe durch euer Forum schon öfters beim googlen sehr gute Hilfe gefunden. Heute ist es so weit, dass ich durch googlen einfach nicht mehr weiter komme, weshalb ich mich heute direkt an euch wende. :( :-D
Und zwar bin ich zur Zeit ein Programm am programmieren, welches Dateien, die ich eingebe, speichert und ggf. in ein Online-Formular lädt.
Nun habe ich ein recht doofes Problem: Versuche ich nun durch eine ButtonClick-Prozedur ein Formular anzuzeigen (FTeilnehmerListe.Show;) führt das zu einer Access Violation. Im Uses-Teil habe ich das aufzurufende Formular eingebunden sowie unter 'var' die ensprechende Variable vergeben (FTeilnehmerListe: TFTeilnehmerListe;). Leider bin ich hier mit meinem Latein am Ende, da ich echt nicht weiß wodurch das Ganze hervorgerufen werden könnte.

Im Voraus schon einmal vielen Dank für eure Hilfe!

LG
Paddy

DeddyH 16. Mai 2014 14:43

AW: Form Show führt zu Access Violation
 
Hallo und Willkommen in der DP :dp:,

greifst Du auf die globale Formvariable aus der Formularunit zu, oder ist das eine eigene Variable? Im letzten Fall musst Du das Formular erst einmal erzeugen, bevor Du es anzeigen kannst.

mkinzler 16. Mai 2014 14:44

AW: Form Show führt zu Access Violation
 
Existiert auch eine Instanz des Formulars?
Referenziert die Variable diese Instanz?

Paddy 16. Mai 2014 14:57

AW: Form Show führt zu Access Violation
 
Danke für das nette Willkommenheißen :-D & Danke für die schnellen Antworten!

@DeddyH:
Mir ist leider nicht ganz klar was du meinst :? - Ich habe für das Formular 'FTeilnehmerliste', welches ich aufrufen will, die Variable 'FTeilnehmerListe: TFTeilnehmerListe;' unter var in meinem aktuellen Formular erstellt.

@mkinzler:
Inwiefern Instanz des Formulars? Durch die Projektdatei müsste das Formular ja erstellt werden (Application.CreateForm(TFTeilnehmerListe, FTeilnehmerListe);), also dem nach eine Instanz vorhanden sein(?).

DeddyH 16. Mai 2014 15:01

AW: Form Show führt zu Access Violation
 
D.h. aber doch, dass Du 2 verschiedene Variablen hast. Und nur die automatisch von Delphi erstellte zeigt auf die Instanz des Formulars, Deine eigene zeigt ins Leere. 2 Möglichkeiten: Du greifst auf die globale Variable aus der entsprechenden Formularunit zu, oder Du erstellst eine eigene Instanz der Formularklasse.
Delphi-Quellcode:
procedure TForm1.ZeigeForm2;
var
  Frm: TForm2;
begin
  Frm := TForm2.Create(nil);
  try
    Frm.ShowModal;
  finally
    Frm.Free;
  end;
end;

mkinzler 16. Mai 2014 15:02

AW: Form Show führt zu Access Violation
 
Zitat:

Ich habe für das Formular 'FTeilnehmerliste', welches ich aufrufen will, die Variable 'FTeilnehmerListe: TFTeilnehmerListe;' unter var in meinem aktuellen Formular erstellt.
Und diese verweist ins Nirvana.
Entweder du must die Variable auf eine gültige Instanz referenzieren oder lässt die lokale Variable weg.

DeddyH 16. Mai 2014 15:03

AW: Form Show führt zu Access Violation
 
[OT] Schon wieder schneller :tongue: :lol: [/OT]

Paddy 16. Mai 2014 15:13

AW: Form Show führt zu Access Violation
 
Hallo!

Vielen Dank für eure Hilfe! Habe es nun geschafft - Aber dennoch habe ich noch eine Frage: Wie meint ihr das mit dem globale Variable verwenden? Wie kann ich diese verwenden bzw. welche ist das?

DeddyH 16. Mai 2014 15:16

AW: Form Show führt zu Access Violation
 
Wir meinen diese hier (Beispielunit):
Delphi-Quellcode:
unit MeineDaten;

interface

uses ...;

type
  TDeinForm = class(TForm)
    ...
  end;

var
  DeinForm: TDeinForm; //<-- diese hier

implementation

Paddy 16. Mai 2014 15:23

AW: Form Show führt zu Access Violation
 
Arrrrrrr ich könnte mich gerade schwar ärgern! :evil:
Habe jetzt das Problem verstanden - stand die ganze Zeit irgendwie auf dem Schlauch!
Durch die Redefinierung der Variable hat er diese angenommen, aber - wie ihr sagtet - nirgendwo hin gezeigt!

Vielen Dank für eure Mühe!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:00 Uhr.
Seite 1 von 2  1 2      

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