mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-04 09:24:09 +02:00
146 lines
3.0 KiB
ObjectPascal
146 lines
3.0 KiB
ObjectPascal
{
|
|
**********************************************************************
|
|
This file is part of LazUtils.
|
|
|
|
See the file COPYING.modifiedLGPL.txt, included in this distribution,
|
|
for details about the license.
|
|
**********************************************************************
|
|
}
|
|
unit LazUTF8Classes;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, LazUTF8;
|
|
|
|
type
|
|
|
|
{ TFileStreamUTF8 }
|
|
|
|
TFileStreamUTF8 = TFileStream;
|
|
|
|
{ TStringListUTF8 }
|
|
|
|
TStringListUTF8 = class(TStringList)
|
|
protected
|
|
function DoCompareText(const s1,s2 : string) : PtrInt; override;
|
|
public
|
|
procedure LoadFromFile(const FileName: string); override;
|
|
procedure SaveToFile(const FileName: string); override;
|
|
end deprecated 'Use TStringList instead';
|
|
|
|
{ TMemoryStreamUTF8 }
|
|
|
|
TMemoryStreamUTF8 = class(TMemoryStream)
|
|
public
|
|
procedure LoadFromFile(const FileName: string);
|
|
procedure SaveToFile(const FileName: string);
|
|
end deprecated 'Use TMemoryStream instead';
|
|
|
|
procedure LoadStringsFromFileUTF8(List: TStrings; const FileName: string);
|
|
deprecated 'Just use TStrings.LoadFromFile';
|
|
procedure SaveStringsToFileUTF8(List: TStrings; const FileName: string);
|
|
deprecated 'Just use TStrings.SaveToFile';
|
|
|
|
|
|
implementation
|
|
|
|
procedure LoadStringsFromFileUTF8(List: TStrings; const FileName: string);
|
|
var
|
|
uList: TStringListUTF8;
|
|
begin
|
|
if List is TStringListUTF8 then
|
|
begin
|
|
List.LoadFromFile(FileName);
|
|
exit;
|
|
end;
|
|
uList:=TStringListUTF8.Create;
|
|
try
|
|
uList.LoadFromFile(FileName);
|
|
List.Assign(uList);
|
|
finally
|
|
uList.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure SaveStringsToFileUTF8(List: TStrings; const FileName: string);
|
|
var
|
|
uList: TStringListUTF8;
|
|
begin
|
|
if List is TStringListUTF8 then
|
|
begin
|
|
List.SaveToFile(FileName);
|
|
exit;
|
|
end;
|
|
uList:=TStringListUTF8.Create;
|
|
try
|
|
uList.Assign(List);
|
|
uList.SaveToFile(FileName);
|
|
finally
|
|
uList.Free;
|
|
end;
|
|
end;
|
|
|
|
{ TMemoryStreamUTF8 }
|
|
|
|
procedure TMemoryStreamUTF8.LoadFromFile(const FileName: string);
|
|
var
|
|
S: TFileStreamUTF8;
|
|
begin
|
|
S:=TFileStreamUTF8.Create (FileName,fmOpenRead or fmShareDenyWrite);
|
|
Try
|
|
LoadFromStream(S);
|
|
finally
|
|
S.free;
|
|
end;
|
|
end;
|
|
|
|
procedure TMemoryStreamUTF8.SaveToFile(const FileName: string);
|
|
var
|
|
S: TFileStreamUTF8;
|
|
begin
|
|
S:=TFileStreamUTF8.Create (FileName,fmCreate);
|
|
Try
|
|
SaveToStream(S);
|
|
finally
|
|
S.free;
|
|
end;
|
|
end;
|
|
|
|
function TStringListUTF8.DoCompareText(const s1, s2: string): PtrInt;
|
|
begin
|
|
if CaseSensitive then
|
|
Result:= UTF8CompareStr(s1,s2)
|
|
else
|
|
Result:= UTF8CompareText(s1,s2);
|
|
end;
|
|
|
|
procedure TStringListUTF8.LoadFromFile(const FileName: string);
|
|
var
|
|
TheStream: TFileStreamUTF8;
|
|
begin
|
|
TheStream:= TFileStreamUTF8.Create(FileName, fmOpenRead or fmShareDenyWrite);
|
|
try
|
|
LoadFromStream(TheStream);
|
|
finally
|
|
TheStream.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TStringListUTF8.SaveToFile(const FileName: string);
|
|
var
|
|
TheStream: TFileStreamUTF8;
|
|
begin
|
|
TheStream:=TFileStreamUTF8.Create(FileName,fmCreate);
|
|
try
|
|
SaveToStream(TheStream);
|
|
finally
|
|
TheStream.Free;
|
|
end;
|
|
end;
|
|
|
|
end.
|
|
|