git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.jcl@20 c37d764d-f447-7644-a108-883140d013fb
147 lines
3.9 KiB
ObjectPascal
147 lines
3.9 KiB
ObjectPascal
unit TextConverterMain;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
|
|
Dialogs, StdCtrls,
|
|
JclStreams;
|
|
|
|
type
|
|
TForm1 = class(TForm)
|
|
ButtonAnsiToAnsi: TButton;
|
|
ButtonAnsiToUTF8: TButton;
|
|
ButtonAnsiToUTF16: TButton;
|
|
ButtonUTF8ToAnsi: TButton;
|
|
ButtonUTF8ToUTF8: TButton;
|
|
ButtonUTF8ToUTF16: TButton;
|
|
ButtonUTF16ToAnsi: TButton;
|
|
ButtonUTF16ToUTF8: TButton;
|
|
ButtonUTF16ToUTF16: TButton;
|
|
OpenDialogTxt: TOpenDialog;
|
|
SaveDialogTxt: TSaveDialog;
|
|
ButtonAutoToAnsi: TButton;
|
|
ButtonAutoToUTF8: TButton;
|
|
ButtonAutoToUTF16: TButton;
|
|
procedure ButtonAnsiToUTF8Click(Sender: TObject);
|
|
procedure ButtonAnsiToUTF16Click(Sender: TObject);
|
|
procedure ButtonUTF8ToAnsiClick(Sender: TObject);
|
|
procedure ButtonUTF8ToUTF16Click(Sender: TObject);
|
|
procedure ButtonUTF16ToAnsiClick(Sender: TObject);
|
|
procedure ButtonUTF16ToUTF8Click(Sender: TObject);
|
|
procedure ButtonAutoToAnsiClick(Sender: TObject);
|
|
procedure ButtonAutoToUTF8Click(Sender: TObject);
|
|
procedure ButtonAutoToUTF16Click(Sender: TObject);
|
|
private
|
|
public
|
|
procedure ConvertFile(ReaderClass, WriterClass: TJclStringStreamClass);
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
uses
|
|
JclStrings, JclFileUtils;
|
|
|
|
{$R *.dfm}
|
|
|
|
procedure TForm1.ButtonAnsiToUTF8Click(Sender: TObject);
|
|
begin
|
|
ConvertFile(TJclAnsiStream, TJclUTF8Stream);
|
|
end;
|
|
|
|
procedure TForm1.ButtonAutoToAnsiClick(Sender: TObject);
|
|
begin
|
|
ConvertFile(TJclAutoStream, TJclAnsiStream);
|
|
end;
|
|
|
|
procedure TForm1.ButtonAutoToUTF16Click(Sender: TObject);
|
|
begin
|
|
ConvertFile(TJclAutoStream, TJclUTF16Stream);
|
|
end;
|
|
|
|
procedure TForm1.ButtonAutoToUTF8Click(Sender: TObject);
|
|
begin
|
|
ConvertFile(TJclAutoStream, TJclUTF8Stream);
|
|
end;
|
|
|
|
procedure TForm1.ButtonAnsiToUTF16Click(Sender: TObject);
|
|
begin
|
|
ConvertFile(TJclAnsiStream, TJclUTF16Stream);
|
|
end;
|
|
|
|
procedure TForm1.ButtonUTF8ToAnsiClick(Sender: TObject);
|
|
begin
|
|
ConvertFile(TJclUTF8Stream, TJclAnsiStream);
|
|
end;
|
|
|
|
procedure TForm1.ButtonUTF8ToUTF16Click(Sender: TObject);
|
|
begin
|
|
ConvertFile(TJclUTF8Stream, TJclUTF16Stream);
|
|
end;
|
|
|
|
procedure TForm1.ButtonUTF16ToAnsiClick(Sender: TObject);
|
|
begin
|
|
ConvertFile(TJclUTF16Stream, TJclAnsiStream);
|
|
end;
|
|
|
|
procedure TForm1.ButtonUTF16ToUTF8Click(Sender: TObject);
|
|
begin
|
|
ConvertFile(TJclUTF16Stream, TJclUTF8Stream);
|
|
end;
|
|
|
|
procedure TForm1.ConvertFile(ReaderClass,
|
|
WriterClass: TJclStringStreamClass);
|
|
procedure ConvertFiles(const SourceFileName, DestFileName: TFileName);
|
|
var
|
|
SourceStream, DestStream: TStream;
|
|
Reader, Writer: TJclStringStream;
|
|
begin
|
|
SourceStream := TFileStream.Create(SourceFileName, fmOpenRead or fmShareDenyWrite);
|
|
try
|
|
DestStream := TFileStream.Create(DestFileName, fmCreate or fmShareExclusive);
|
|
try
|
|
Reader := ReaderClass.Create(SourceStream, False);
|
|
try
|
|
Writer := WriterClass.Create(DestStream, False);
|
|
try
|
|
Reader.SkipBOM;
|
|
Writer.WriteBOM;
|
|
JclStreams.WideStringStreamCopy(Reader, Writer);
|
|
Writer.Flush;
|
|
finally
|
|
Writer.Free;
|
|
end;
|
|
finally
|
|
Reader.Free;
|
|
end;
|
|
finally
|
|
DestStream.Free;
|
|
end;
|
|
finally
|
|
SourceStream.Free;
|
|
end;
|
|
end;
|
|
var
|
|
SourceFileName, DestFileName, TmpFileName: TFileName;
|
|
begin
|
|
if OpenDialogTxt.Execute and SaveDialogTxt.Execute then
|
|
begin
|
|
SourceFileName := OpenDialogTxt.FileName;
|
|
DestFileName := SaveDialogTxt.FileName;
|
|
if StrSame(SourceFileName, DestFileName) then
|
|
begin
|
|
// in place conversion
|
|
TmpFileName := FileGetTempName('');
|
|
ConvertFiles(SourceFileName, TmpFileName);
|
|
FileMove(TmpFileName, DestFileName, True);
|
|
end
|
|
else
|
|
ConvertFiles(SourceFileName, DestFileName);
|
|
end;
|
|
end;
|
|
|
|
end.
|