Mehrdeutigkeit zwischen ... und .... Problem
-
Hallo
Habe das Problem, sobald ich eine Indy Komponente auf die Form setze, bekomme ich diverse Mehrdeutigkeits Probleme !
z.B. IdHTTP[BCC32 Fehler] NLH8_.cpp(785): E2015 Mehrdeutigkeit zwischen '_fastcall Idglobalprotocols::RightStr(const System::AnsiString,int) at c:\programme\codegear\rad studio\5.0\include\Indy10\Idglobalprotocols.hpp:214' und '_fastcall Strutils::RightStr(const System::AnsiString,const int) at c:\programme\codegear\rad studio\5.0\include\vcl\strutils.hpp:75'
wie ist es möglich dieser Mehrdeutigkeit zu entgehen ?
Da das Programm schon etwas größer ist und ich nun diese Komponente benötigen würde.
Die Indy Componente(n) sind auf einer anderen Form. Da ich aber von der Form1 diese andere Form aufrufen möchte, muß ich ja diese Form in Form1 'includen' und dann kommen diese Mehrdeutigkeiten.
ich weis, daß ich mit namenspace z.B. Strutils::RightStr(....) es beheben kann, da es aber sehr viel Arbeit wäre nun alles wieder zu ändern, wollte ich wissen, ob es da vielleicht eine Möglichkeit gibt, dieses nun bei der Indy Komponente zu machen, da ich ja dort jetzt erst beginne und somit nicht alles 'alten' Einträge ändern muß.(BCB2007 und Indy10)
Danke
Nachtrag:
es waren doch nicht so viele Einträge die ich ändern mußte als ich dachte.
Wäre aber trotzdem interressant zu wissen, ob es da eine bequehmere Lösung gibt.
-
OldMan00 schrieb:
Wäre aber trotzdem interressant zu wissen, ob es da eine bequehmere Lösung gibt.
Evtl. könntest du aus der Indy-Headerdatei das
using namespace Idglobalprotocols;
entferen.
-
Danke, wäre mal einen Versuch wert.
Ich glaube aber, daß es dann noch weitere Probleme gibt, da ja beim einsetzten der Komponente nicht nur eine Headerdatei automatisch eingefügt wird, sondern 3 oder 4, die wiederum ihren eigenen Namenspace verwenden und dann ihrerseits Konflikte verursachen.
-
audacia schrieb:
OldMan00 schrieb:
Wäre aber trotzdem interressant zu wissen, ob es da eine bequehmere Lösung gibt.
Evtl. könntest du aus der Indy-Headerdatei das
using namespace Idglobalprotocols;
entferen.
Das ist nicht dein Ernst, oder? Also ich meine, dass im Header tatsächlich eine using namespace Anweisung steht?!
Gruß,
Doc
-
OldMan00 schrieb:
Danke, wäre mal einen Versuch wert.
Ich glaube aber, daß es dann noch weitere Probleme gibt, da ja beim einsetzten der Komponente nicht nur eine Headerdatei automatisch eingefügt wird, sondern 3 oder 4, die wiederum ihren eigenen Namenspace verwenden und dann ihrerseits Konflikte verursachen.Die vom DCC emittierten Unit-Header referenzieren alle Namespaces explizit, so daß es zumindest aus dieser Hinsicht unproblematisch sein sollte, die namespace-Anweisung zu entfernen.
DocShoe schrieb:
Das ist nicht dein Ernst, oder? Also ich meine, dass im Header tatsächlich eine using namespace Anweisung steht?!
Doch.
Delphi unterstützt Namespaces nicht seit Anbeginn. In Delphi sind Namespaces daher
- identisch mit dem Unit-Namen
- bei der Verwendung stets optional.
Zwecks Abwärtskompatibilität trägt der DCC dementsprechend auch diese Deklaration in die generierten Unit-Header ein. Stell dir mal vor, wie viel Code plötzlich nicht mehr liefe, würde man die explizite Verwendung des Namespaces erzwingen.