AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Frage zu Übergabe eines Arrays aus einer Unit in eine andere
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu Übergabe eines Arrays aus einer Unit in eine andere

Ein Thema von BingoBongo · begonnen am 12. Okt 2005 · letzter Beitrag vom 14. Okt 2005
Antwort Antwort
BingoBongo

Registriert seit: 30. Sep 2005
19 Beiträge
 
#1

Frage zu Übergabe eines Arrays aus einer Unit in eine andere

  Alt 12. Okt 2005, 21:35
Meine Frage bezieht sich auf ein Problem, welches ich mir nicht erklären kann.
Ich habe ein kleines Programm geschrieben, bei dem in einer separaten Unit verschiedene Funktionen ausgelagert sind, damit das ganze etwas übersichtlicher wird. Diese Unit habe ich auch korrekt im Hauptprogramm eingebunden und teilweise die enthaltenen Funktionen schon integriert.
Eine dieser Funktionen gibt ein Array of String zurück als Ergebnis und wenn ich diese Funktion dann in dem Hauptprogramm aufrufen will, vermeldet mir der Compiler die vielsagende Fehlermeldung "Inkompatible Typen".
Ich habe für dieses Array einen Datentyp in der separierten Unit deklariert, der einem Array of String entspricht, und im Hauptprogramm soll das ausgegebene Array dann weiterverwendet werden, was aber eben nicht funktionieren will. Mir gehen leider die Ideen aus, woran das noch liegen kann. Hat da jemand für mich vielleicht einen Rat? Quelltext wird bei Bedarf noch nachgeliefert.

Bingo
  Mit Zitat antworten Zitat
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Frage zu Übergabe eines Arrays aus einer Unit in eine an

  Alt 12. Okt 2005, 21:40
hmm und du hast auch die Empfangsvariable mit dem gleichen Typ deklariert wie die Ergebnisvariable der funktion?

Hast du den typen vielleicht ausversehen 2 mal unterschiedlich definiert und benutzt den falschen?

Also Quelltext würde denk ich mal weiterhelfen!
Jan
  Mit Zitat antworten Zitat
Benutzerbild von Grishnak
Grishnak

Registriert seit: 15. Sep 2005
Ort: Neu-Ulm
111 Beiträge
 
RAD-Studio 2009 Arc
 
#3

Re: Frage zu Übergabe eines Arrays aus einer Unit in eine an

  Alt 12. Okt 2005, 21:44
Bedarf!

Ich vermute mal folgendes: Du hast in der Unit einen Typ definiert (z.B. "type TStringArray = array of string;") und die Funktion liefert genau diesen Typ zurück (z.B. "function Egal(...): TStringArray;"). Nun hast du aber in der Haupt-Unit ein String-Array deklariert (z.B. "var Namen: array of string;") und versuchst nun, in diesem das Ergebnis der obigen Funktion zu übertragen (z.B. "Namen:=Egal(...);"). So klappt das nicht! Aber wenn du "var Namen: TStringArray;" deklarierst, sollte es funktionieren!
Mach' etwas idiotensicher und irgendjemand erfindet einen besseren Idioten!
  Mit Zitat antworten Zitat
BingoBongo

Registriert seit: 30. Sep 2005
19 Beiträge
 
#4

Re: Frage zu Übergabe eines Arrays aus einer Unit in eine an

  Alt 13. Okt 2005, 08:28
jetzt funktionierts. *vorfreudeaufundabhüpf*
Es war tatsächlich die Typdeklaration. DAS kann man ja nun echt schlecht erraten, dass ich den gleichen Typnamen für die Variable in der Hauptunit angeben muß, wie der deklarierte in der eigentlichen Unit, wo er deklariert wurde.

Vielen Dank für die Hilfe.

Bingo
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#5

Re: Frage zu Übergabe eines Arrays aus einer Unit in eine an

  Alt 13. Okt 2005, 08:44
Du mußt NICHT den gleich TypNamen übergeben.

Es geht nicht, wenn du den Typ in jeder der Units deklarierst.
Also, wenn type TStringArray = array of string; in jeder der Units definiert wird, dann sind diese Typen dennoch nicht untereinander komptibel.
Unit1.TStringArray <> Unit2.TStringArray


Und wenn du einen neuen Typ vom alten ableitest, dann siend diese dennoch kompatiebel,
obwohl sie ja enien anderen Namen haben.
Delphi-Quellcode:
type TStringArray = array of string;

type TMeinArray = TStringArray;

TStringArray = TMeinArray

Im Endefekt mußt du einfach nur dafür sorgen, das immer der selbe Grundtyp verwendet wird.
Es muß halt immer auf die selbe Typendefinition in der selben Unit zurückzuführen sein, dann ist der Typ immer kompatibel, da es ja auch der selbe Typ ist
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#6

Re: Frage zu Übergabe eines Arrays aus einer Unit in eine an

  Alt 13. Okt 2005, 12:36
Falls es jemand noch nicht weiß: In der Delphi-Unit Types sind einige dynamische Arraytypen deklariert (zumindest in Delphi 2005, aber auch schon in Delphi 7, wenn ich mich recht erinnere). Um solche Probleme zu vermeiden, kann man die Types Unit in die uses-Klausel aufnehmen und diese Typen benutzen statt sich eigene zu definieren.
Die Typen sind alle nach dem selben Schema benannt: TXxxxDynArray. Ein dynamisches "array of string" ist dort also TStringDynArray.
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Frage zu Übergabe eines Arrays aus einer Unit in eine an

  Alt 13. Okt 2005, 12:46
Ist auch so in Delphi 7

Bye
Christian
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#8

Re: Frage zu Übergabe eines Arrays aus einer Unit in eine an

  Alt 14. Okt 2005, 08:39
@himitsu:
Ich glaube, er hatte nicht den Typen redefiniert, sondern das gemacht, was Grishnak beschrieben hatte. Zu dem Thema findet man in der OH was unter dem Stichwort (glaub ich): Typkompatibilität und Typidentität (oder so)
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz