Bonjour

je migre un grosse application (322 sources 700.000 lignes sans les Packages) de C++Builder 6 vers 2010. Après avoir corrigé diverses erreurs de comptabilité qui bloquait la compilation j'exécute le code et comme un bogue survient je pose un trap dans le code sur un instruction innocente :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
AnsiString s = Edit1->Text
ou Edit1 est un TEdit

Je m'aperçois que s est vide tandis que Edit1->Text ne l'est pas. Je consulte (en debug) Edit1->Text et j'obtiens le message

E2451 Symbole '_fastcall Controls::TControl::GetText()' non défini
Étonné je crée un nouveau projet dans lequel je fais la manipe suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
AnsiString s=Edit1->Text;
Button1->Caption=s;
Je constate cette fois que Edit1->Text est bien lisible mais chose étrange, bien que la valeur de Edit1->Text soit transférée dans Button1->Caption, "s" est vide ! J'essaie s.Length() et là j'obtiens

E2451 Symbole '_fastcall System::AnsiStringBase::Length()' non défini
J'en déduis que mon projet a été converti avec des options qui agissent sur les types de chaines mais je n'ai pas trouvé d'explication claire dans la doc en ligne.