Conversion Variant / AnsiString
Bonjour,
lors d'un passage Builder 6 vers Builder 2010, je me suis retrouvé avec une erreur de compilation dans un code de DLL que j'ai du mal à interpréter :
Code:
1 2 3 4 5 6 7 8 9
|
Vérification des dépendances de projet...
Compilation de DLL_PEthernet.cbproj (configuration Débogage)
[BCC32 Avertissement] unit2.cpp(20): W8057 Le paramètre 'Sender' n'est jamais utilisé
[BCC32 Erreur] Unit1.cpp(93): E2015 Ambiguïté entre '_fastcall System::AnsiStringT<0>::AnsiStringT(const System::AnsiStringT<0> &) at c:\program files\embarcadero\rad studio\7.0\include\vcl\dstring.h:359' et '_fastcall System::AnsiStringT<0>::AnsiStringT(const wchar_t *,int) at c:\program files\embarcadero\rad studio\7.0\include\vcl\dstring.h:393'
[BCC32 Erreur] Unit1.cpp(93): E2031 Impossible de transtyper de 'Variant' en 'AnsiString'
Echec
Temps écoulé : 00:00:00.1 |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
Variant _stdcall Send(Variant texte)
{
AnsiString txt;
txt = (AnsiString) texte; // erreur en borland builder 2010, pas en borland builder 6
char buftx[12];
sprintf(buftx,txt.c_str());
TcpClient1->SendBuf(buftx,12,0);
// RX
char bufrx[50]="\000000000000000000000000000000000000000000000000";
TcpClient1->ReceiveBuf(bufrx,50,0);
txt = bufrx;
return ( (Variant) txt);
} |
Est-ce que quelqu'un a une idée sur comment corriger cette erreur svp ?
De manière générale je galère depuis que je suis passé au 2010 sur les fonctions qui utilisent du texte, depuis la simple Application->MessageBox qui n'accepte plus du texte sans le L devant, jusqu'aux conversions entre UnicodeString AnsiString WideString bref, ça commence sérieusement à me gaver de passer du temps pour des trucs sans intérêts comme ça.
Question : Qu'utilisez-vous comme chaines de caractère et pour quelles raisons ?
plutot des string, des CString, des UnicodeString, des WideString, des AnsiString, autre ?