Autor Beitrag
Alstar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: Mo 24.10.05 18:03 
Hallo Leutz!

Ich habe ein MDI-Formular mit zugehörigen Kindern :wink:. Nun habe ich im Hauptformular ein Menü. Um die Menüaktionen mit dem aktiven MDI-Child zu verbinden, lasse ich das MDI-Child beim Aktivieren "seinen" Pointer (Pointer vom Formular) in eine Variable des Hauptformulars speichern. (Ich weiß, könnte man auch mit ActiveMDIForm machen)
Nun rufe ich per activeform^.Prozedur eine Prozedur des Childs auf ... Mit dem Ergebnis, dass er mir bei diesem Aufruf einen Fehler vom Typ Access Violation raushaut (In der Prozedur prüfe ich, ob eine String-Variable, die im private-Teil des Child-Formulares deklariert ist, leer ist if strSonstwas = '' then

Was zum Teufel hab ich übersehen??

Alstar
BattleFrog
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 53

WIN 2000
Delphi 7 Ent.
BeitragVerfasst: Mi 26.10.05 16:36 
Zeig mal den Codeteil der den Pointer speichert und den Codeteil der den Pointer benutzt
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Mi 26.10.05 20:09 
ich vermute es liegt an dem ^-zeichen.
grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
Alstar Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: Mi 26.10.05 20:11 
Also ich hab das ganze jetzt mit ActiveForm gelöst. Ich weiß auch nicht woran es lag, da ich den Fehler nicht nochmal auf einem anderen System mit Delphi 6 nachbilden konnte.

user profile iconMSCH hat folgendes geschrieben:
ich vermute es liegt an dem ^-zeichen.[...]

Wie meinst du das? Klar brauche ich das Dereferenzierungszeichen, da mir sonst schon der Compiler eine Fehlermeldung rausschmeißen würde

Alstar
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Mi 26.10.05 20:24 
beispiel:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
type
  TKindFenster=Class(TForm)
  // bla bla bla
    VariableX: [..];
  end;
  THauptfenster=Class(TForm)
  // bla bla bla
  KindFenster: TKindFenster;
  procedure MerkeKindFenster;
  procedure ZugriffAufKindFenster;
  end;

var Hauptfenster: THauptfenster;

procedure  THauptFenster.MerkeKindFenster;
begin
  Kindfenster:= TKindFenster.Create(..);
end;

procedure THauptFenster.ZugriffAufKindFenster;
begin
  // richtig
  Irgentwas:= Kindfenster.VariableX;
  // falsch
  Irgentwas:= Kindfenster^.Variable; // <<-- error
end;

so ungefähr.
grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
Alstar Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: Mi 26.10.05 21:13 
Ich hatte doch gesagt, dass ich das mit nem Pointer mache! ActiveForm: ^TKindFenster
Warum sollte ich eine Klasse dereferenzieren? (Klappt das überhaupt ohne Compiler-Error?)

Alstar