AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi An Prozedur übergebene Parameter gehen verloren.
Thema durchsuchen
Ansicht
Themen-Optionen

An Prozedur übergebene Parameter gehen verloren.

Ein Thema von FriendOfDelphi · begonnen am 20. Dez 2010 · letzter Beitrag vom 21. Dez 2010
Antwort Antwort
Seite 1 von 2  1 2      
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#1

An Prozedur übergebene Parameter gehen verloren.

  Alt 20. Dez 2010, 14:25
Delphi-Version: 5
Hallo Allerseits!

Folgendes Problem:
Ich rufe folgende Prozedur auf:
Daten:=TDaten.Create(MainForm, MainForm, Test); //TDaten.Create(Aowner:TComponent; AParent:TWinControl; Irgendwas: EigenerDatentyp); Bevor das Create ausgeführt wird, sind noch alle Daten vorhanden (alle Infos über das Hauptfenster).
Soweit, so gut. Mit "F7" in die Routine springen.
In der Routine angekommen, ist nur noch der Parameter "Irgendwas" mit Daten gefüllt. "Aowner" und "AParent" sind nil.
Was ist da los?
Was mache ich falsch?
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: An Prozedur übergebene Parameter gehen verloren.

  Alt 20. Dez 2010, 14:28
Mir persönlich ist das zu wenig Quelltext, um da etwas erkennen zu können.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
stho

Registriert seit: 16. Sep 2009
Ort: 127.0.0.1
288 Beiträge
 
Delphi 2007 Professional
 
#3

AW: An Prozedur übergebene Parameter gehen verloren.

  Alt 20. Dez 2010, 14:29
Schreib dir doch eine Procedure die ankommende Parameter in ein Logfile schreibt
Damit kannst du immer sehen welche Daten ankommen.
Achja, als Vergleichswert musst du natürlich auch Protokollieren was du der Procedur an Parametern übergibst.
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#4

AW: An Prozedur übergebene Parameter gehen verloren.

  Alt 20. Dez 2010, 15:29
Mir persönlich ist das zu wenig Quelltext, um da etwas erkennen zu können.
Ich verwende eine Prozedur, die eine Info benötigt, von wem sie aufgerufen wurde. Daher gebe ich dieser die Informationen über AOwner: TComponent; AParent: TWinControl; mit, bzw. reiche die durch. AOwner scheint auch Informationen zu enthalten; AParent scheint aber nil zu sein.
Im MainForm wird ein Konstruktor einer Klasse aufgerufen. Diesem Konstruktor gebe ich die Infos AOwner: TComponent; AParent: TWinControl; des Hauptformulars mit.
Innerhalb des Konstruktors der aufgerufenen Klasse in der 2. Unit wird wiederum der eigentlich Konstruktor der Klasse aufgerufen der die Info über AOwner: TComponent; AParent: TWinControl; benötigt. Ich reiche diese also nur durch. In der 3. Unit meldet der Compiler dann an der Stelle Parent := AParent; die Fehlermeldung: "Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000."

In der Haupt-Unit:
Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
begin

//mach was

  Daten:=TDaten.Create(MainForm, MainForm, DBTest);

//mach was

end;
In der 2. Unit:
Delphi-Quellcode:
constructor TDaten.Create(Aowner:TComponent; AParent:TWinControl; Datenbank: TdBase);
begin

//mach was

  Test1:=TSoftSPS.Create(Aowner, AParent, "irgendein Integer-Wert");

//mach was

end;
In der 3. Unit:
Delphi-Quellcode:
constructor TSoftSPS.Create(AOwner: TComponent; AParent: TWinControl; VarGroesse: Integer);
begin
  Parent := AParent; //hier tritt der Fehler auf!!!

//mach was

end;
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: An Prozedur übergebene Parameter gehen verloren.

  Alt 20. Dez 2010, 15:32
Zitat:
Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
begin

//mach was

  Daten:=TDaten.Create(MainForm, MainForm, DBTest);

//mach was

end;
Im OnCreate erscheint mir das noch ein wenig früh, da das MainForm zu dieser Zeit evtl. noch gar nicht vollständig initialisiert ist. Und wieso greifst Du auf die globale Variable zurück statt auf Self? Zumindest Letzteres würde ich zunächst versuchen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#6

AW: An Prozedur übergebene Parameter gehen verloren.

  Alt 20. Dez 2010, 16:13
Zitat:
Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
begin

//mach was

  Daten:=TDaten.Create(MainForm, MainForm, DBTest);

//mach was

end;
Im OnCreate erscheint mir das noch ein wenig früh, da das MainForm zu dieser Zeit evtl. noch gar nicht vollständig initialisiert ist. Und wieso greifst Du auf die globale Variable zurück statt auf Self? Zumindest Letzteres würde ich zunächst versuchen.
Der frühe Zeitpunkt wird wahrscheinlich das Problem sein. Ich habe das Create mal ganz ans Ende gestellt. Bringt aber nichts.
Ein "OnFormularFertiggestellt" gibt es ja nicht, oder? Zumindest habe ich nichts im Objektinspektor gefunden.
Mein erster Versuch war mit Daten:=TDaten.Create(self, self, DBTest); . Da dies aber so nicht funktionierte, hatte ich das geändert und nicht wieder zurück geändert.
Herzlichen Gruß
FriendOfDelphi

Geändert von FriendOfDelphi (20. Dez 2010 um 16:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: An Prozedur übergebene Parameter gehen verloren.

  Alt 20. Dez 2010, 16:16
Du könntest mal versuchshalber Loaded überschreiben, da müsste es IMO funktionieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#8

AW: An Prozedur übergebene Parameter gehen verloren.

  Alt 20. Dez 2010, 16:22
Du könntest mal versuchshalber Loaded überschreiben, da müsste es IMO funktionieren.
Das kenne ich noch nicht.
Hast Du ein Beispiel für mich?
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: An Prozedur übergebene Parameter gehen verloren.

  Alt 20. Dez 2010, 16:25
Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  protected
    procedure Loaded; override;
  public
    { Public-Deklarationen }
  end;

...

procedure TForm1.Loaded;
begin
  inherited;
  ShowMessage('Geladen: ' + self.Name);
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Lemmy
Online

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: An Prozedur übergebene Parameter gehen verloren.

  Alt 20. Dez 2010, 17:26
Hi,

schon mal AfterConstruction versucht?

Grüße
  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 09:21 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