Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi "Inkompatible Typen" bei gleichen Typ-Items? (https://www.delphipraxis.net/154551-inkompatible-typen-bei-gleichen-typ-items.html)

Helmi 15. Sep 2010 11:21

Delphi-Version: 7

"Inkompatible Typen" bei gleichen Typ-Items?
 
Hallo,

ich versteh gerade nicht, wieso mir Delphi die Fehlermeldung:
Zitat:

[Fehler] MDatenUnit.pas(520): Inkompatible Typen: 'TSpeichertyp' und 'TMD_Typ'
um die Ohren haut.

Ich hab folgendes Konstrukt:

1. Unit:
Delphi-Quellcode:
unit CommonUnit;

interface

uses
  Classes, SysUtils, Contnrs, StrNatComp;

type
  TSpeichertyp = (MD_Allgemein, MD_Kanal, MD_Achse, MD_Antrieb, MD_Setting,
                  NC_Prog, R_Parameter, Defintionen, SI_Daten);
2. Unit:
Delphi-Quellcode:
unit MDatenUnit;

interface

uses
  Classes, SysUtils, StrUtils, MainUnit, CommonUnit;

type
  TMD_Typ = (MD_Achse, MD_Antrieb);

{ Aufrufe }
In der zweiten Unit hab ich zwei Functions. Eine verwendet TMD_Typ und die andere TSpeichertyp.

Beim Aufruf der Function die TSpeichertyp verwendet erhalte ich die o. g. Fehlermeldung, wenn
TMD_Typ im Type-Block vorhanden ist.

Wie man sieht sind die Items der Typen gleich (bis auf die Anzahl).

Wieso erhalte ich die o. g. Fehlermeldung? - Das sind doch zwei komplett getrennte Typen.
Oder merkt Delphi wenn die Items gleichen Namens sind?

DeddyH 15. Sep 2010 11:24

AW: "Inkompatible Typen" bei gleichen Typ-Items?
 
Zitat:

Zitat von Helmi (Beitrag 1049758)
Oder merkt Delphi wenn die Items gleichen Namens sind?

Das scheint so zu sein. Klappt es, wenn Du den Parameter qualifizierst (CommonUnit.MD_Achse)?

Helmi 15. Sep 2010 11:28

AW: "Inkompatible Typen" bei gleichen Typ-Items?
 
Zitat:

Zitat von DeddyH (Beitrag 1049760)
Zitat:

Zitat von Helmi (Beitrag 1049758)
Oder merkt Delphi wenn die Items gleichen Namens sind?

Das scheint so zu sein. Klappt es, wenn Du den Parameter qualifizierst (CommonUnit.MD_Achse)?

Ja, wenn ich es qualifiziere dann funktionierts. Also dann wird mir der Fehler nicht mehr gemeldet.

himitsu 15. Sep 2010 11:39

AW: "Inkompatible Typen" bei gleichen Typ-Items?
 
Wenn beide Units in der Zielunit eingebunden sind, dann wird ohne Namespace immer die letzte Implementation "automatisch" genommen.

In Deinem Fall würde es an dieser Stelle auch reichen, wenn du in USES die Unit CommonUnit hinter der MDatenUnit einbindest.

Aber am Besten ist es, wenn du öfters beide Units benötugst, wenn due diese doppelten Namen beseitigst.

Helmi 15. Sep 2010 11:44

AW: "Inkompatible Typen" bei gleichen Typ-Items?
 
Zitat:

Zitat von himitsu (Beitrag 1049765)
Wenn beide Units in der Zielunit eingebunden sind, dann wird ohne Namespace immer die letzte Implementation "automatisch" genommen.

In Deinem Fall würde es an dieser Stelle auch reichen, wenn du in USES die Unit CommonUnit hinter der MDatenUnit einbindest.

Hallo himitsu,

Das Ganze spielt sich in der Unit "MDatenUnit" ab. Und dort ist die Unit "CommonUnit" mit eingebunden.
So kann ich den Aufruf nicht ändern.

[Edit]
Ich hab mir jetzt so beholfen, dass ich bei den Items von TMD_Typ den Unterstrich weglasse

himitsu 15. Sep 2010 11:54

AW: "Inkompatible Typen" bei gleichen Typ-Items?
 
Aso, also wenn nichts von der CommonUnit im Interface benötigt würde,
dann könnte man diese Unit auch erst in der Implementation einbinden.

Helmi 15. Sep 2010 12:05

AW: "Inkompatible Typen" bei gleichen Typ-Items?
 
Zitat:

Zitat von himitsu (Beitrag 1049770)
Aso, also wenn nichts von der CommonUnit im Interface benötigt würde,
dann könnte man diese Unit auch erst in der Implementation einbinden.

Ich brauch die Unit "CommonUnit" leider schon im Interfaceteil


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:34 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