![]() |
Uses Uses Help!
Hi @ all,
also ich habe ein Problem mit den Units und mit den Uses-Klauseln. Und zwar:
Delphi-Quellcode:
unit Unit1;
interface uses unit2; type Tx = class private MyHeight : Integer; public property Height : Integer read MyHeight write MyHeight; end; implementation code....
Delphi-Quellcode:
So oder so ungefähr....
unit unit2;
interface implementation uses unit2; var test : TX; procedure Init(); begin test.height := 10; ///<---- Das mag er irgendwie nicht !!! end; Aber der Compiler spucktmir da nur immer irgendwelche Speicherfehler aus... Warum?? Kann mir da jemand helfen?! thx Corelgott |
Re: Uses Uses Help!
1. Titel ändern! :warn:
2. Warum in Unit 2 noch "uses unit2; "? |
Re: Uses Uses Help!
Mein ich aber auch
bei Unit2 muss hin
Delphi-Quellcode:
[edit=thomasdrewermann]Semikolon ergänzt Mfg, thomasdrewermann[/edit]
uses unit1;
|
Re: Uses Uses Help!
Wen Tx kein Form ist, dann musst du schon so vorgehen:
Delphi-Quellcode:
var
test : TX; procedure Init(); begin test := TX.Create; ///<---- Test muss vorher initialisiert werden. test.height := 10; ///<---- Das mag er dann auch! end; |
Re: Uses Uses Help!
Ich vermute mal, das hat das Problem nicht gelöst. ;)
[Edit]Achso, es ist kein Form... Kann ich ja nicht wissen.[/Edit] |
Re: Uses Uses Help!
Gar nie!
Wenn in Unit 1 schon Unit 2 in der uses-Klauses angegeben ist darf unit 2 unter gar keinen Umständen auf Unit 1 verweisen. So ein direkter Kreuzbezug merkt der compiler zwar noch, aber wenn dann noch eine dritte unit einen Kreuzbezug herstellt, dann läuft der Compiler in eine endlosschleife! Lösung: "uses Unit2;" in Unit 1 ersatzlos streichen! in Unit2: "uses unit1;" einführen. UNd dann vorher freilich TX createn und erst dann benutzen. |
Re: Uses Uses Help!
Könnte es sich vielleicht um einen Kreuzverweis handeln?
Dann Probier mal folgendes:
Delphi-Quellcode:
unit Unit1;
interface uses unit2; type Tx = class private MyHeight : Integer; public property Height : Integer read MyHeight write MyHeight; end; implementation code....
Delphi-Quellcode:
Dass sollte das Problem beheben // hoffentlich
unit unit2;
interface uses unit1; implementation var test : TX; procedure Init(); begin test.height := 10; ///<---- Das mag er irgendwie nicht !!! end; |
Re: Uses Uses Help!
stimmt schon es kommt aber auch darauf an wo du die unit einbindest
ob im Interface-Abschnitt oder im Implementations-Abschnitt da reagiert der Compiler ja anders |
Re: Uses Uses Help!
Zitat:
Es muss mindestens eine der Kreuz-uses im implementation Bereich stehen, das war schon richtig. |
Re: Uses Uses Help!
Hi
also das Problem ist ein bisschen komplexer, als diesen etwas knappen Code den ich getippt habe... (War meine Dummheit) Also: natürlich heist das "unit" und nicht "uses"! 2. Ich Create auch die Variable bevor ich sie benutzt (hab ich vergessen zu posten) Aber immer, wenn ich den eine Variable / Property setze gibt's nen Speicherfehler... Das ganze ist ein bisschen doller verschachtelt: Mein Programm (App) Erzeugt ein Objekt (Obj1-> Steht in seiner eignen Unit) Obj1 erzeugt im Constructor ein weiteres Objekt (obj2 andere Klasse) So um beim einstellen von Obj2 das kommt das.... Das ganze soll nachher man ein Pong werden; wird aber doch recht komplex. Ich bin deswegen auch nicht sicher, ob irgendwer noch durch den Code durchsteigen würde, wenn ich ihn posten würde. (Hab selbst schon manchmal Probleme damit....) Werde mal sehen, dass ich da was zurecht schneide... thx erst mal so weit!!! Muss ich bei einer solchen verschachtelung von Objekten irgendetwas beachten? (Ich habe im Prog vom Thread bis hin zum Array alles drin... Aber der Fehler tritt schon beim setzen einer Integer variable auf....) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 Uhr. |
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-2025 by Thomas Breitkreuz