69 lines
1.8 KiB
ObjectPascal
69 lines
1.8 KiB
ObjectPascal
unit synex_syncharmngr;
|
|
{$mode delphi}
|
|
{$codepage UTF8}
|
|
interface
|
|
uses Classes, SysUtils, synex_charset, SynEdit;
|
|
type
|
|
TSynEditCharsetManager = class (TComponent)
|
|
private
|
|
FCharset: TTextCharset;
|
|
FSynEdit: TSynEdit;
|
|
public
|
|
constructor Create (AOwner: TComponent);
|
|
destructor Destroy;
|
|
procedure LoadFromStream (Stream: TStream);
|
|
procedure LoadFromFile (const FileName: String);
|
|
procedure SaveToStream(Stream: TStream);
|
|
procedure SaveToFile(const FileName: String);
|
|
published
|
|
property Charset: TTextCharset read FCharset;
|
|
property SynEdit: TSynEdit read FSynEdit write FSynEdit;
|
|
end;
|
|
implementation
|
|
{TCharsetStrings}
|
|
constructor TSynEditCharsetManager.Create (AOwner: TComponent);
|
|
begin
|
|
inherited Create(AOwner);
|
|
FCharset:= tcUTF8;
|
|
FSynEdit:= Nil;
|
|
end;
|
|
destructor TSynEditCharsetManager.Destroy;
|
|
begin
|
|
FSynEdit:= Nil;
|
|
inherited Destroy;
|
|
end;
|
|
procedure TSynEditCharsetManager.LoadFromStream (Stream: TStream);
|
|
var SL: TStringList;
|
|
begin
|
|
SL:= TStringList.Create;
|
|
SL.LoadFromStream(Stream);
|
|
FCharset:= GetTextCharset(SL.Text);
|
|
SL.Text:= ConvertToUtf8(SL.Text, FCharset);
|
|
FSynEdit.Lines.Assign(SL);
|
|
FreeAndNil(SL);
|
|
end;
|
|
procedure TSynEditCharsetManager.LoadFromFile (const FileName: String);
|
|
var FS: TFileStream;
|
|
begin
|
|
FS:= TFileStream.Create(FileName, fmOpenRead + fmShareDenyNone);
|
|
LoadFromStream(FS);
|
|
FreeAndNil(FS);
|
|
end;
|
|
procedure TSynEditCharsetManager.SaveToStream(Stream: TStream);
|
|
var SL: TStringList;
|
|
begin
|
|
SL:= TStringList.Create;
|
|
SL.Assign(FSynEdit.Lines);
|
|
SL.Text:= ConvertFromUtf8(SL.Text, FCharset);
|
|
SL.SaveToStream(Stream);
|
|
FreeAndNil(SL);
|
|
end;
|
|
procedure TSynEditCharsetManager.SaveToFile(const FileName: String);
|
|
var FS: TFileStream;
|
|
begin
|
|
FS:= TFileStream.Create(FileName, fmOpenWrite + fmShareDenyWrite);
|
|
SaveToStream(FS);
|
|
FreeAndNil(FS);
|
|
end;
|
|
end.
|