lasarus_compotents/SynEditEx/data/synex_syncharmngr.pas

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.