Appel

ksar el boukhari Messages postés 5 Date d'inscription jeudi 19 mai 2005 Statut Membre Dernière intervention 11 août 2012 - 5 mai 2007 à 02:27
jelume Messages postés 120 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 15 novembre 2007 - 5 mai 2007 à 10:09
j un problem d'erreur de compilation en delphi7
c  [Erreur] Form1_.pas(194): Appel surchargé ambigu à 'mStr'
mon programme :

function mStr(d: LongInt): AnsiString; overload;
 function mStr(d: Double): AnsiString; overload;
 function mStr(b: Boolean): AnsiString; overload;
 function mStr(s: AnsiString): AnsiString; overload;


implementation


 //=========================================================
function mStr(d: LongInt): AnsiString;
begin
 Result := IntToStr(d);
 if (d>=0) then Result := ' ' + Result;
end;
function mStr(d: Double): AnsiString;
begin
 Result := FloatToStr(d);
 if (d>=0) then Result := ' ' + Result;
end;
function mStr(b: Boolean): AnsiString; overload ;
begin
 if (b) then Result := ' True'
 else Result := ' False';
end;
function mStr(s: AnsiString): AnsiString; overload;
begin
 Result := s;
end;

mai en appel par exemple:
 Label3.Caption := 'N° :'+ mStr(string);
le compilateur fai des erreurs de compilation 
 [Erreur] Form1_.pas(194): Appel surchargé ambigu à 'mStr'

2 réponses

jelume Messages postés 120 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 15 novembre 2007 1
5 mai 2007 à 09:49
Bonjour

Aucun problème sur D6 ! le code testé est:

var
  S1: ShortString;
  S2: AnsiString;
  S3: String;
  S4: WideString;
begin
  S1 := 'toto';
  ShowMessage(mStr(S1));
  S2 := 'toto';
  ShowMessage(mStr(S2));
  S3 := 'toto';
  ShowMessage(mStr(S3));
  S4 := 'toto';
  ShowMessage(mStr(S4));

J'imagine que dans l'exemple que tu donnes, string indique juste une variable de type string et que tu n'as pas utilisé un type comme paramètre.

J-L
0
jelume Messages postés 120 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 15 novembre 2007 1
5 mai 2007 à 10:09
à savoir aussi que :

function mStr(b: Boolean): AnsiString; overload ;
begin
 if (b) then Result := ' True'
 else Result := ' False';
end;

se remplacera par

function mStr(b: Boolean): AnsiString; overload ;
begin
 Result := BoolToStr(b, True);
end;

et histoire de pinailler un peu, pour éviter une affectation inutile:

 if d > 0 then
   Result := FloatToStr(d)
 else
   Result := ' ' + FloatToStr(d);
0
Rejoignez-nous