program tcnvstr3; { Type conversion program for char -> string } { possible types widechar -> widestring } { widechar -> shortstring } { widechar -> ansistring } { possible types char -> widestring } { char -> shortstring } { char -> ansistring } {$ifdef fpc} {$mode objfpc} {$ifndef ver1_0} {$define haswidestring} {$endif} {$else} {$ifndef ver70} {$define haswidestring} {$endif} {$endif} uses {$ifdef java}jdk15{$else}androidr14{$endif}; {$macro on} {$define write:=JLSystem.fout.print} {$define writeln:=JLSystem.fout.println} procedure fail; begin WriteLn('Failure!'); raise JLException.Create; end; var str_ansi : ansistring; str_short : shortstring; {$ifdef haswidestring} str_wide : widestring; wc : widechar; {$endif haswidestring} c: char; _result : boolean; Begin {********************** char/widechar -> shortstring *******************} Write('widechar/char -> shortstring...'); {* normal char *} _result := true; { empty string -> shortstring } str_short := ''; if str_short <> '' then _result := false; { constant char -> shortstring } str_short := 'c'; if str_short <> 'c' then _result := false; { normal char -> shortstring } str_short := ''; c:='c'; str_short:=c; if str_short <> 'c' then _result := false; {* wide char *} {$ifdef haswidestring} { constant char -> shortstring } str_short := shortstring(widechar('c')); if str_short <> 'c' then _result := false; {$endif} { wide char -> shortstring } { This should not compile - at least it does not compile under Delphi } { str_short := ''; wc:='c'; str_short:=wc; if str_short <> 'c' then _result := false;} if _result then WriteLn('Success!') else fail; {********************** char/widechar -> ansistring *******************} Write('widechar/char -> ansistring...'); {* normal char *} _result := true; { empty string -> ansistring } str_ansi := ''; if str_ansi <> '' then _result := false; { constant char -> ansistring } str_ansi := 'c'; if str_ansi <> 'c' then _result := false; { normal char -> ansistring } str_ansi := ''; c:='c'; str_ansi:=c; if str_ansi <> 'c' then _result := false; {* wide char *} {$ifdef haswidestring} { constant char -> ansistring } str_ansi := widechar('c'); if str_ansi <> 'c' then _result := false; { normal char -> ansistring } str_ansi := ''; wc:='c'; str_ansi:=wc; if str_ansi <> 'c' then _result := false; {$endif} if _result then WriteLn('Success!') else fail; {} {$ifdef haswidestring} {********************** char/widechar -> widestring *******************} Write('widechar/char -> widestring...'); {* normal char *} _result := true; { empty string -> widestring } str_wide := ''; if str_wide <> '' then _result := false; { constant char -> widestring } str_wide := 'c'; if str_wide <> 'c' then _result := false; { normal char -> widestring } str_wide := ''; c:='c'; str_wide:=c; if str_wide <> 'c' then _result := false; {* wide char *} { constant char -> widestring } str_wide := widechar('c'); if str_wide <> 'c' then _result := false; { normal char -> widestring } str_wide := ''; wc:='c'; str_wide:=wc; if str_wide <> 'c' then _result := false; if _result then WriteLn('Success!') else fail; {$endif haswidestring} end.