Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - fehler bei zugriff auf andere unit


greendesire - Mo 23.03.09 20:12
Titel: fehler bei zugriff auf andere unit
ich will einfach nur eine prozedur aus der anderen unit ausführen, allerdings funktioniert das nicht.
ich bekomme immer den Fehler undefinierter bezeichner:NeuesSpiel1Click
wahrscheinlich ein anfängerfehler aber ich hab keine ahnung wie ich das problem lösen soll


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:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, unit1;

type
  TForm2 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;
  form1: TForm1;
  NeuesSpiel1Click: TForm1;

implementation


{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
 TForm1.NeuesSpiel1Click;
 close;
end;

end.


Narses - Mo 23.03.09 20:36

Moin!

Schonmal in die Suche geschaut? Suche in: Delphi-Forum, Delphi-Library ZUGRIFF UNIT :les: :think: ;)

cu
Narses


greendesire - Mo 23.03.09 20:48

ja habe ich.
habe dabei auch gefunden, dass ich oben die Unit in uses reinschreiben muss.
mehr leider nicht wirklich.


Narses - Mo 23.03.09 20:50

Moin!

user profile icongreendesire hat folgendes geschrieben Zum zitierten Posting springen:
ja habe ich.
:zustimm:

user profile icongreendesire hat folgendes geschrieben Zum zitierten Posting springen:
habe dabei auch gefunden, dass ich oben die Unit in uses reinschreiben muss.
mehr leider nicht wirklich.
Das ist doch schonmal was. Wie sieht dein Versuch in Codeform aus (beide Units)? :)

cu
Narses


greendesire - Mo 23.03.09 20:56

hab das oben eingefügt.
hab keine ahnung, was das problem ist, da ich neuesspiel1click bezeichnet habe und keine ahnung hab wieso der dann undefinierter bezeichner anzeigt

möchte den quelltext nicht kopieren da der viel zu lang ist und außerdem sonst von meinem halben info-kurs kopiert wird.

ich hab in unit1 praktisch eine prozedur neuesspiel1click
die möchte ich in der unit 2 aufrufen.


Yogu - Mo 23.03.09 20:58

Hallo,

das haben wir gleich. Erstens musst du das eingebundene Formular nicht neu definieren (unter var eintragen), das ist ja schon in der unit1 geschehen. Und auch sonst musst du nix definieren - indem du die andere Unit einbindest, hast du Zugriff auf (fast) alle Symbole dieser Unit.

TForm1 ist eine Klasse. Sie selbst enthält nur ein paar Methoden, mehr nicht. Sie bezeichnet kein spezielles Formular. Form1 ist eine Instanz der Klasse TForm1. Sie weist auf das eigentliche Formular und kann es bedienen. Was ist also passender? Willst du auf das Formular selbst oder eine Funktionensammlung derer zugreifen? :think:

Grüße,
Yogu


Narses - Mo 23.03.09 20:59

Moin!

user profile icongreendesire hat folgendes geschrieben Zum zitierten Posting springen:

Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm2.Button1Click(Sender: TObject);
begin
 TForm1.NeuesSpiel1Click; // lass mal das "T" weg
 close;
end;
Weiterhin gilt natürlich user profile iconYogus Hinweis: nicht nochmal im var-Abschnitt deklarieren. :idea:

cu
Narses


greendesire - Mo 23.03.09 21:04

ja ich habs aus dem var-Abschnitt gelöscht
und das t von TForm hab ich auch weggenommen.
Jetzt zeigt er mir jedoch an nicht genügend wirkliche Paramter und verwendete Unit kann nicht compiliert werden


Narses - Mo 23.03.09 21:10

Moin!

user profile icongreendesire hat folgendes geschrieben Zum zitierten Posting springen:
Jetzt zeigt er mir jedoch an nicht genügend wirkliche Paramter und verwendete Unit kann nicht compiliert werden
Dann schau dir mal genau die Methodendeklaration von NeuesSpiel1Click an, da steht doch noch was dahinter? (Sender: TObject) nämlich, der "Absender" sozusagen. Du musst also beim Aufruf noch einen Parameter übergeben, das kannst du hier z.B. mit "Self" tun (NIL ginge auch). :idea:

cu
Narses


greendesire - Mo 23.03.09 21:18

ok danke.
das hat funktioniert.
jetzt hab ich leider dennächsten fehler :(
muss jetzt erstmal gucken, dass ich den behoben bekomme


Yogu - Mo 23.03.09 21:38

user profile icongreendesire hat folgendes geschrieben Zum zitierten Posting springen:
jetzt hab ich leider dennächsten fehler :(

Was hast du denn gedacht, dass du jetzt fertig bist, nur weil du einen Fehler behoben hast? Dann wäre Programmieren doch langweilig :zwinker: