Conversione da D2007 a XE2, ho convertito questa funzioneCome impostare il valore predefinito per un parametro funzione di tipo TEncoding?
function Add_Line(FileStream : TFileStream; ALine : string) : boolean;
a
function Add_Line(FileStream : TFileStream; ALine : string; Enc: TEncoding = nil) : boolean;
var
AStr: ANSISTring;
begin
Result := True;
if Enc = nil then Enc := TEncoding.ANSI;
try
//Old FileStream.WriteBuffer(Pointer(ALine)^, Length(ALine));
if Enc = TEncoding.UTF8 then
AStr := UTF8Encode(ALine)
else
AStr := ANSIString(ALine);
FileStream.WriteBuffer(AStr[1], Length(ALine));
end;
except
Result := False;
end;
end;
Motivazione:
Cambia codice utilizzando Add_Line il meno possibile
Accetta la modifica automatica a Unic ode, solo all'ultimo momento scrivere file di testo a 8 bit (questo è usato in XML e CSV). In futuro potremmo ancora passare ai file UTF-16 se vogliamo.
avrei voluto per definire qualcosa come:
function Add_Line(FileStream : TFileStream; ALine : string; Enc: TEncoding = TEncoding.ANSI) : boolean;
ma il compilatore si lamenta ;-)
è qualcosa di simile possibile?
La restrizione dei parametri di default per essere valori costanti è uno dei motivi per cui preferisco sempre l'utilizzo di sovraccarichi. –
I sovraccarichi non mi sono mai passati per la mente ;-) –