AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi C++ überl AnsiString operator des Variant; CB6 vs RadStudio2007
Thema durchsuchen
Ansicht
Themen-Optionen

überl AnsiString operator des Variant; CB6 vs RadStudio2007

Ein Thema von matmok · begonnen am 16. Mai 2008 · letzter Beitrag vom 16. Mai 2008
 
matmok

Registriert seit: 9. Feb 2006
Ort: Köln
22 Beiträge
 
Delphi 2007 Enterprise
 
#1

überl AnsiString operator des Variant; CB6 vs RadStudio2007

  Alt 16. Mai 2008, 10:56
Hallo,

ich stelle im Moment meine Projekte von CBuilder6 auf RadStudio2007 um. Dabei ist mir folgendes aufgefallen:

"text = AnsiString(MyVariant)" war im CB6 ok aber im RADStudio2007 wird ein Ambiguity Fehler angezeigt. Also schreibe ich stattdessen "text = MyVariant.operator AnsiString()", das ist ok. Aber "text = (AnsiString)MyVariant" geht nicht, obwohl das doch das gleiche sein sollte, oder? Da habe ich wohl ein kleines Verständnisproblem.

Ein Beispiel macht es deutlich:

Delphi-Quellcode:
Variant       v;
AnsiString    MeinText;

MeinText = v.operator AnsiString(); // vom Variant überladener Operator "AnsiString": ok!
MeinText = (AnsiString)v; // vom Variant überladener Operator "AnsiString"
                                    // - FEHLER:
// [C++ Fehler] Flash_System.cpp(2017): E2015 Ambiguity between '_fastcall System::AnsiString::AnsiString(const System::AnsiString &) at D:\Borland\RAD5\Include\Vcl\dstring.h:70' and '_fastcall System::AnsiString::AnsiString(const wchar_t *) at D:\Borland\RAD5\Include\Vcl\dstring.h:72'
                                    // - sollte das nicht das gleiche sein wie .operator AnsiString() ?
                                    //
MeinText = (AnsiString&)v; // kein Fehler, aber was soll das?
MeinText = AnsiString(v); // Konstruktoraufruf vom AnsiString mit Übergabe Variant:
                                    // - Fehler:
// [C++ Fehler] Flash_System.cpp(2017): E2015 Ambiguity between '_fastcall System::AnsiString::AnsiString(const System::AnsiString &) at D:\Borland\RAD5\Include\Vcl\dstring.h:70' and '_fastcall System::AnsiString::AnsiString(const wchar_t *) at D:\Borland\RAD5\Include\Vcl\dstring.h:72'

                                    // - War Im CB6 ok.
- Warum ist (AnsiString)MyVariant nicht das gleiche wie MyVariant.operator AnsiString() ?
- Wie kann ich eine Eindeutigkeit schaffen bei der Verwendung von AnsiString(MyVariant)?
- Warum ist "text = (AnsiString)MyVariant" ein Konstruktoraufruf vom AnsiString (also das gleiche wie "text = AnsiString(MyVariant)") und nicht ein Aufruf des überladenen operators des Variant?

ist doch komisch, oder?
(CB6 und RADStudio2007 auf WinXP)

mfg,
Matmok
  Mit Zitat antworten Zitat
 


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 14:59 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