Bonjour a tous!

Une petite question qui me turlupine, pour l'illustrer prenons un exemple bateau:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
void Exchange( AnsiString &s1, AnsiString &s2 )
{
  AnsiString tmp ;
  tmp = s1;
  s1  = s2;
  s2  = tmp;
}
Je veux maintenant échanger le contenu de 2 TEdits :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  Exchange( Edit1->Text, Edit2->Text ) ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
  AnsiString tmp1 = Edit1->Text ;
  AnsiString tmp2 = Edit2->Text ;
  Exchange( tmp1, tmp2 ) ;
  Edit1->Text = tmp1 ;
  Edit2->Text = tmp2 ;
}
Pourquoi est ce que la première version ne marche pas, et qu'en passant par des variables temporaires (2ème version) ça fonctionne??