![]() |
AW: Mehrdimensionales dynamisches Array an Prozedur übergeben
Zitat:
Ich bekomme jetzt die Fehlermeldung: "F2047 Zirkuläre Unit-Referenz auf Unit1" was muss ich machen...? Daher vorab...
Delphi-Quellcode:
Unit Definitionen;
Interface type TArray2D = array[0..5] of array[0..2] of Double; // Oder TArray2D = Array[0..5,0..2] of Double;
Delphi-Quellcode:
Unit Unit1;
Interface Uses Definitionen...
Delphi-Quellcode:
Mavarik
Unit Unit2;
Interface Uses Definitionen... |
AW: Mehrdimensionales dynamisches Array an Prozedur übergeben
Das ist ja genau das, was ich als erste Möglichkeit vorgeschlagen hatte. Die nächste Frage ist aber: wieso müssen sich die Units gegenseitig einbinden?
|
AW: Mehrdimensionales dynamisches Array an Prozedur übergeben
Zitat:
Zitat:
Zitat:
|
AW: Mehrdimensionales dynamisches Array an Prozedur übergeben
Ich muss dazu sagen, dass ich das Programm nicht allein geschrieben habe, sondern ein bestehendes Programm erweitere. Da ich ein Anfänger auf dem Gebiet der (Delphi)-Programmierung bin habe ich mir einiges von meinem Vorgänger abgeschaut, unter anderem das gegenseitige Einbinden der Units.
Irgendwo habe ich mal gehört, dass globale Variablen (dementsprechend auch Typen?) wohl verpöhnt sind. Oder wäre das eine Lösungsmöglichkeit. Mit globalen Variablen/Typen kenne ich mich aber leider auch nicht aus. |
AW: Mehrdimensionales dynamisches Array an Prozedur übergeben
Nochmal ganz langsam: wenn die Typdeklaration der einzige Grund dafür ist, dann wie gesagt entweder in eine eigene Unit packen oder alternativ dort, wo damit gearbeitet wird (IMO also dort, wo die Klasse deklariert ist).
Delphi-Quellcode:
Typ und Klasse sind nun in allen Units verfügbar, die Work einbinden.
unit Work;
interface uses ...; type TMyType = ...; TMyClass = class ... procedure DoSomething(Foo: TMyType); end;
Delphi-Quellcode:
Ist aber in Use etwas deklariert, worauf Work zugreifen soll, müssen sie sich (zunächst) gegenseitig einbinden. Das ist kein gutes Design, daher sollte man sich überlegen, wie man das vermeiden kann.
unit Use;
interface uses ..., Work; |
AW: Mehrdimensionales dynamisches Array an Prozedur übergeben
Zitat:
![]() |
AW: Mehrdimensionales dynamisches Array an Prozedur übergeben
Zitat:
Aha, da lag der Fehlerteufel. Die Unit work war in der Unit Use im Implementation- und nicht im Interface-Bereich eingebunden. Hatte das irgendwo mal gelesen, dass man das eigentlich so machen sollte :gruebel: Vielen Dank! |
AW: Mehrdimensionales dynamisches Array an Prozedur übergeben
Zitat:
PS: Wie erreiche ich, dass der Thread nichtmehr als offene Frage angezeigt wird? |
AW: Mehrdimensionales dynamisches Array an Prozedur übergeben
Du kannst sie auch im implementation-Abschnitt einbinden, allerdings darf dann im interface-Abschnitt auf keinen Typen und keine Routine zugegriffen werden, der/die in der eingebundenen Unit steht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:41 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