Die Funktion unten ist ein Ersatz für sprintf, wenn auch wesentlich langsamer, da der code nicht wirklich geschickt, bzw. schnell geschrieben ist.
Aber Sorry für eine Optimierung des Codes bin ich jetzt wirklich zu faul ;-)
Aufruf geht so:
str_format(string,"Mein Name ist %s und ich liebe %s und du bist %f Jahre alt",vector("Horst","Fußball",12));
string = Mein Name ist Horst und ich liebe Fußball und du bist 12 Jahre alt.
Code:
string GEdit_HelpStr1[512];
string GEdit_HelpStr2[512];
string GEdit_HelpStr3[512];
function Str_Format(GEdit_Str,&GEdit_ar)
{
var GEdit_a; var GEdit_c;
str_cpy(GEdit_HelpStr1,GEdit_Str);
str_cpy(GEdit_HelpStr2,"");
temp = str_stri(GEdit_HelpStr1,"%");
if(temp <= 0) { str_cpy(GEdit_HelpStr2,GEdit_Str); }
while(temp > 0)
{
str_cpy(GEdit_HelpStr3,GEdit_HelpStr1);
str_trunc(GEdit_HelpStr3,str_len(GEdit_HelpStr3)-temp-1);
str_cat(GEdit_HelpStr2,GEdit_HelpStr3);
str_clip(GEdit_HelpStr3,temp - 1);
str_clip(GEdit_HelpStr1,temp - 1);
GEdit_a = 0;
if(str_cmpi(GEdit_HelpStr3,"%s")) { str_trunc(GEdit_HelpStr2,2); str_cat(GEdit_HelpStr2,GEdit_ar[GEdit_c]); GEdit_a = 1; GEdit_c += 1;}
if(str_cmpi(GEdit_HelpStr3,"%f")) { str_trunc(GEdit_HelpStr2,2); str_for_num(GEdit_HelpStr4,GEdit_ar[GEdit_c]); str_cat(GEdit_HelpStr2,GEdit_HelpStr4); GEdit_a = 1; GEdit_c += 1;}
if(str_cmpi(GEdit_HelpStr3,"%k")) { str_trunc(GEdit_HelpStr2,2); str_for_asc(GEdit_HelpStr4,34); str_cat(GEdit_HelpStr2,GEdit_HelpStr4); GEdit_a = 1; }
if(str_cmpi(GEdit_HelpStr3,"%'")) { str_trunc(GEdit_HelpStr2,2); str_for_asc(GEdit_HelpStr4,34); str_cat(GEdit_HelpStr2,GEdit_HelpStr4); GEdit_a = 1; }
if(GEdit_a == 0) { str_clip(GEdit_HelpStr1,1); } else { str_clip(GEdit_HelpStr1,2); }
temp = str_stri(GEdit_HelpStr1,"%");
if(temp <= 0) { str_cat(GEdit_HelpStr2,GEdit_HelpStr1); }
}
str_cpy(GEdit_Str,GEdit_HelpStr2);
}
%s = Ersetzte string
%f = Ersetzte durch Zahl
$k = ersetzte durch "
mfg
Timo
Kannst natürlich auch noch eigene schreiben.