Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Array's übergeben
madigeMade - Do 27.03.03 20:47
Titel: Array's übergeben
Hi @ all!
Hab ein saublödes Problem. Ich nutze in meinem Programm ein dreidimensionales Array. Da ich es öfters verändern will, aber immer wieder gleich hab ich mir eine Unit zurechtgeschrieben. Jetzt hab ich das Problem, wie übergebe ich dieses Array vom Formular in die Unit??
Thx de Made
Christian S. - Do 27.03.03 20:54
Ein Array kannst Du (fast) so benutzen, wie eine "normale" Variable. Du kannsst es auch als Parameter an Funktionen bzw. Prozeduren übergeben. Jedoch kannst Du dann in diesem Funktionen / Prozeduren
nicht die Funktion SetLength aufrufen!
<edit>
Du kannst das Problem so umgehen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| type my_type = Array of Integer;
var array1 : Array of Integer; array2 : my_type;
implementation
procedure laenge_setzen1 (test : Array of Integer); begin SetLength(test,10); //<-- geht nicht end;
procedure laenge_setzen2 (test : my_type); begin SetLength(test,10); //<-- geht, da mit Typ gearbeitet end; |
</edit>
madigeMade - Do 27.03.03 21:28
Thx Peter!
Hab aber immernoch ein Problem, vielleicht kannst du mir weiterhelfen.
Hier ist mein Code im Formular
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| type feld = array[1..5,1..5,1..5] of integer;
implementation {$R *.dfm}
procedure schreiben ( test : feld); begin a( test ); end; |
und hier der von meiner unit
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| interface type feld = array[1..5,1..5,1..5] of integer; procedure a(test : feld); implementation procedure a(test : feld); begin test[1,1,1]:=1; end; end. |
Sieht für mich richtig aus, die Fehlermeldung lautet aber [Error] Unit1.pas(29): Incompatible types: 'Unit1.feld' and 'Unit2.feld'
Wieso?
Thx de Made
Christian S. - Do 27.03.03 21:33
Wahrscheinlich mag er es nicht, dass Du zwei Typen mit dem gleichen Namen deklariert hast. Ich würde mal aus einer der beiden Units die Typdefinition rausnehmen. Das sollte gehen.
madigeMade - Do 27.03.03 22:18
Also Typdefinition rausgenommen, aber wie soll ich den Procedureparameter deklarieren?
procedure a(test: ??? ) in der unit, da ja kein type mehr da is
Thx de Made
Christian S. - Do 27.03.03 22:36
Aber über die USES-Klausel sollte die Typdefiniton doch auch für die andere Unit gelten!
Wenn ich also in Unit1 meine Form1 deklariere und dort mein Hauptprogramm habe und in Unit2 meine Procedure und die Typdefinition, dann schreibe ich Unit2 in die USES-Klausel von Unit1 und kann Procedure und Typdefinition verwenden. In Unit1 brauche ich keins von beidem mehr. Nur die Unit2 in der USES-Klausel!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!