Autor Beitrag
THF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110

Vista
Delphi 2005 professional
BeitragVerfasst: Mo 21.03.05 17:08 
Hallo,

ich möchte in einem Nebenformular in der Unit2 in einem Edit-Feld etwas eintragen zum Beispiel 'Hallo' dies soll dann nach Bestätigung auf den OK-Button in ein Label im Hauptformular Unit1 eingetragen werden.

Ich bekomme dabei immer Fehlermeldungen weil man vom Nebenformular nicht auf das Hauptformular zugreifen kann.

Gruß

THF

Moderiert von user profile iconChristian S.: Überflüssige Zeilenumbrüche entfernt


Zuletzt bearbeitet von THF am Do 24.03.05 08:08, insgesamt 1-mal bearbeitet
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Mo 21.03.05 17:26 
Ist die Unit1 per uses-Anweisung in Unit2 eingebunden?
THF Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110

Vista
Delphi 2005 professional
BeitragVerfasst: Mo 21.03.05 20:48 
Hallo,

nein umgekehrt Unit2 ist bei uses in Unit1 eingebunden.

Gruß

THF
abakama
Hält's aus hier
Beiträge: 10

Win ME
D4
BeitragVerfasst: Mo 21.03.05 20:51 
Du musst die Unit 1 auch in der Unit 2 einbinden.
THF Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110

Vista
Delphi 2005 professional
BeitragVerfasst: Mo 21.03.05 22:41 
Hallo,

also das funktioniert nicht,
wenn ich Unit1 in Unit2 einbinde und dann noch
unit2 in Unit1 einbinde.
Ich glaube das funktioniert nicht!

Oder ? ?

Gruß

THF
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mo 21.03.05 23:45 
glaube nicht, probiere es einfach.

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
THF Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110

Vista
Delphi 2005 professional
BeitragVerfasst: Di 22.03.05 09:13 
Hallo,

ich habs ausprobiert, funktioniert nicht!

Überkreuzender Bezug zweier Units.

Gruß

THF
Holgerwa
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 325

WIN XP Pro, Vista Business
Delphi 7 Pro, BDS 2006 Pro
BeitragVerfasst: Di 22.03.05 10:36 
Hallo,

setz mal das "Uses Unit1" nicht in den Interface-Teil von Unit2, sondern direkt nach "Implementation", dann funktionierts.

Holger
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Di 22.03.05 10:47 
Hi :)!

Bitte ändere deinen Titel deines Beitrags so, dass er den Richtlinien entspricht. Dazu einfach den EDIT-Button rechts oben verwenden.

Richtlinien hat folgendes geschrieben:
1.2 Beiträge
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist. [..]


Danke :)
AXMD
magic87
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45


Delphi 7, PHP
BeitragVerfasst: Fr 17.08.07 09:47 
Der Beitrag wird jetzt erstmal wieder ein bisschen nach oben gepusht!=)

Ich wollte nämlich gerne wissen, warum es einen "Überkreuzenden Bezug" gibt, wenn man die Units gegenseitig im Inteface einbindet und wenn man die eine Unit im Interface und die andere im Implementation-Teil einbindet dann klappt es!

Hat dafür jemand eine logische und verständliche Erklärung?

Gruß
Bluemagicon
arj
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 378

Win XP/Vista, Debian, (K)Ubuntu
Delphi 5 Prof, Delphi 7 Prof, C# (#Develop, VS 2005), Java (Eclipse), C++, QT, PHP, Python
BeitragVerfasst: Fr 17.08.07 11:11 
Kurzes Beispiel:

ausblenden volle Höhe 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:
unit Unit1;

interface

function Unit1Test(x : Integer) : string// * a *

implementation

uses Unit2;

function Unit1Test(x : Integer) : string// * b *
begin
  if x = 0 then
    Result := 'Unit1Test'
  else
    Result := Unit2Test(x); // * c *
end;

//////////////////////////////////////
unit Unit2;

interface

function Unit2Test(x : Integer) : string;

implementation

uses Unit1;

function Unit2Test(x : Integer) : string;
begin
  if x = 0 then
    Result := Unit1Test(x);
  else
    Result := 'Unit2Test';
end;


Der Compiler prüft beim Compilieren, ob die Typen zueinander passen, also ob du eine Funktion, die einen Integer erwartet,
auch mit einem Integer aufrufst. Dafür muss er allerdings nur die Signatur kennen. Diese wird bei * a * definiert.
Die Implementation, also der eigentliche Code der Funktion (* b *) muss keiner Typenprüfung nach außen hin standhalten. Da muss
nur intern alles stimmen. Also müssen vor dem jeweiligen Benutzen der anderen Funktionen die Signaturen bekannt sein, damit der
Compiler bei * c * prüfen kann, ob du die Funktion korrekt aufrufst.
Dass erreicht man damit, indem man die Units gegenseitig im Implementation-Teil einbindet, da hier dann einfach nur die Signaturen geschrieben werden müssen.

Ich hoffe es ist klarer geworden ;)