mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-13 15:39:33 +01:00
* prefer write({short,ansi,wide}string) over write(chararray) for
constant strings git-svn-id: trunk@9279 -
This commit is contained in:
parent
8f187bf6e2
commit
9f04aad33e
@ -132,7 +132,7 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function tinlinenode.handle_str : tnode;
|
function tinlinenode.handle_str : tnode;
|
||||||
var
|
var
|
||||||
lenpara,
|
lenpara,
|
||||||
fracpara,
|
fracpara,
|
||||||
@ -344,6 +344,23 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure maybe_convert_to_string(var n: tnode);
|
||||||
|
begin
|
||||||
|
{ stringconstnodes are arrays of char. It's much more }
|
||||||
|
{ efficient to write a constant string, so convert }
|
||||||
|
{ either to shortstring or ansistring depending on }
|
||||||
|
{ length }
|
||||||
|
if (n.nodetype=stringconstn) then
|
||||||
|
if is_chararray(n.resultdef) then
|
||||||
|
if (tstringconstnode(n).len<=255) then
|
||||||
|
inserttypeconv(n,cshortstringtype)
|
||||||
|
else
|
||||||
|
inserttypeconv(n,cansistringtype)
|
||||||
|
else if is_widechararray(n.resultdef) then
|
||||||
|
inserttypeconv(n,cwidestringtype);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
function Tinlinenode.handle_text_read_write(filepara,params:Ttertiarynode;var newstatement:Tnode):boolean;
|
function Tinlinenode.handle_text_read_write(filepara,params:Ttertiarynode;var newstatement:Tnode):boolean;
|
||||||
|
|
||||||
{Read(ln)/write(ln) for text files.}
|
{Read(ln)/write(ln) for text files.}
|
||||||
@ -390,6 +407,10 @@ implementation
|
|||||||
para.left:=p1;
|
para.left:=p1;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
if inlinenumber in [in_write_x,in_writeln_x] then
|
||||||
|
{ prefer strings to chararrays }
|
||||||
|
maybe_convert_to_string(para.left);
|
||||||
|
|
||||||
case para.left.resultdef.typ of
|
case para.left.resultdef.typ of
|
||||||
stringdef :
|
stringdef :
|
||||||
name:=procprefixes[do_read]+tstringdef(para.left.resultdef).stringtypname;
|
name:=procprefixes[do_read]+tstringdef(para.left.resultdef).stringtypname;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user