LCL: use TFileStreamUtf8 for LoadFromFile/SaveToFile for Grids, TTextStrings, TWin32MemoStrings, TWinCEMemoStrings, TQtMemoStrings, TGtk2MemoStrings, TGtk3MemoStrings,

thus eliminating the need for Utf8ToSys() conversions.

git-svn-id: trunk@46777 -
This commit is contained in:
bart 2014-11-07 14:52:30 +00:00
parent b66981ff3e
commit 001b440270
10 changed files with 169 additions and 11 deletions

View File

@ -35,7 +35,7 @@ uses
Types, Classes, SysUtils, Math, Maps, LCLStrConsts, LCLProc, LCLType, LCLIntf,
FileUtil, FPCanvas, Controls, GraphType, Graphics, Forms, DynamicArray,
LMessages, StdCtrls, LResources, MaskEdit, Buttons, Clipbrd, Themes,
Laz2_XMLCfg; // <-- replaces XMLConf (part of FPC libs)
LazUtf8Classes, Laz2_XMLCfg; // <-- replaces XMLConf (part of FPC libs)
const
//GRIDFILEVERSION = 1; // Original
@ -10824,9 +10824,9 @@ end;
procedure TCustomStringGrid.LoadFromCSVFile(AFilename: string;
ADelimiter: Char=','; WithHeader: boolean=true);
var
TheStream: TFileStream;
TheStream: TFileStreamUtf8;
begin
TheStream:=TFileStream.Create(AFileName,fmOpenRead or fmShareDenyWrite);
TheStream:=TFileStreamUtf8.Create(AFileName,fmOpenRead or fmShareDenyWrite);
try
LoadFromCSVStream(TheStream, ADelimiter, WithHeader);
finally
@ -10909,9 +10909,9 @@ end;
procedure TCustomStringGrid.SaveToCSVFile(AFileName: string; ADelimiter: Char;
WithHeader: boolean=true; VisibleColumnsOnly: boolean=false);
var
TheStream: TFileStream;
TheStream: TFileStreamUtf8;
begin
TheStream:=TFileStream.Create(AFileName,fmCreate);
TheStream:=TFileStreamUtf8.Create(AFileName,fmCreate);
try
SaveToCSVStream(TheStream, ADelimiter, WithHeader);
finally

View File

@ -30,6 +30,8 @@ type
procedure Delete(Index : integer); override;
procedure Insert(Index : integer; const S: string); override;
procedure SetTextStr(const Value: string); override;
procedure LoadFromFile(const FileName: string); override;
procedure SaveToFile(const FileName: string); override;
//procedure Sort; virtual;
procedure QueueCursorMove(APosition: Integer);
procedure QueueSelectLength(ALength: Integer);
@ -243,6 +245,30 @@ begin
end;
end;
procedure TGtk2MemoStrings.LoadFromFile(const FileName: string);
var
TheStream: TFileStreamUTF8;
begin
TheStream:=TFileStreamUtf8.Create(FileName,fmOpenRead or fmShareDenyWrite);
try
LoadFromStream(TheStream);
finally
TheStream.Free;
end;
end;
procedure TGtk2MemoStrings.SaveToFile(const FileName: string);
var
TheStream: TFileStreamUTF8;
begin
TheStream:=TFileStreamUtf8.Create(FileName,fmCreate);
try
SaveToStream(TheStream);
finally
TheStream.Free;
end;
end;
procedure TGtk2MemoStrings.QueueCursorMove(APosition: Integer);
begin
// needed because there is a callback that updates the GtkBuffer

View File

@ -25,7 +25,7 @@ uses
glib2, gdk2, gtk2,
Classes, SysUtils, Math,
// LCL
Controls, Graphics, StdCtrls, LMessages, LCLType, LCLProc,
Controls, Graphics, StdCtrls, LMessages, LCLType, LCLProc, LazUtf8Classes,
// Widgetset
WSControls, WSProc, WSStdCtrls, Gtk2Int, Gtk2Def,
Gtk2CellRenderer, Gtk2Globals, Gtk2Proc, InterfaceBase,

View File

@ -21,7 +21,7 @@ unit gtk3private;
interface
uses Classes, SysUtils, Controls, LazGtk3, LazGObject2, LazGLib2;
uses Classes, SysUtils, Controls, LazGtk3, LazGObject2, LazGLib2, LazUtf8Classes;
type
@ -133,6 +133,8 @@ type
property ChangeStamp: Integer read FChangeStamp;
end;
{ TGtk3MemoStrings }
TGtk3MemoStrings = class(TStrings)
private
FGtkText : PGtkTextView;
@ -158,6 +160,8 @@ type
procedure Delete(Index : integer); override;
procedure Insert(Index : integer; const S: string); override;
procedure SetTextStr(const Value: string); override;
procedure LoadFromFile(const FileName: string); override;
procedure SaveToFile(const FileName: string); override;
//procedure Sort; virtual;
procedure QueueCursorMove(APosition: Integer);
procedure QueueSelectLength(ALength: Integer);
@ -908,6 +912,30 @@ begin
end;
end;
procedure TGtk3MemoStrings.LoadFromFile(const FileName: string);
var
TheStream: TFileStreamUTF8;
begin
TheStream:=TFileStreamUtf8.Create(FileName,fmOpenRead or fmShareDenyWrite);
try
LoadFromStream(TheStream);
finally
TheStream.Free;
end;
end;
procedure TGtk3MemoStrings.SaveToFile(const FileName: string);
var
TheStream: TFileStreamUTF8;
begin
TheStream:=TFileStreamUtf8.Create(FileName,fmCreate);
try
SaveToStream(TheStream);
finally
TheStream.Free;
end;
end;
procedure TGtk3MemoStrings.QueueCursorMove(APosition: Integer);
begin
// needed because there is a callback that updates the GtkBuffer

View File

@ -33,7 +33,7 @@ uses
// Free Pascal
Classes, SysUtils,
// LCL
Forms, Controls, LCLType, LCLProc, ExtCtrls, StdCtrls,
Forms, Controls, LCLType, LCLProc, ExtCtrls, StdCtrls, LazUtf8Classes,
//Widgetset
QtWidgets, qtproc;
@ -115,6 +115,8 @@ type
procedure Clear; override;
procedure Delete(Index : integer); override;
procedure Insert(Index : integer; const S: string); override;
procedure LoadFromFile(const FileName: string); override;
procedure SaveToFile(const FileName: string); override;
public
property Owner: TWinControl read FOwner;
property TextChanged: Boolean read FTextChanged write FTextChanged;
@ -463,6 +465,30 @@ begin
end;
end;
procedure TQtMemoStrings.LoadFromFile(const FileName: string);
var
TheStream: TFileStreamUTF8;
begin
TheStream:=TFileStreamUtf8.Create(FileName,fmOpenRead or fmShareDenyWrite);
try
LoadFromStream(TheStream);
finally
TheStream.Free;
end;
end;
procedure TQtMemoStrings.SaveToFile(const FileName: string);
var
TheStream: TFileStreamUTF8;
begin
TheStream:=TFileStreamUtf8.Create(FileName,fmCreate);
try
SaveToStream(TheStream);
finally
TheStream.Free;
end;
end;
{ TQtComboStrings }
procedure TQtComboStrings.Put(Index: Integer; const S: string);

View File

@ -26,6 +26,8 @@ type
procedure Delete(Index : integer); override;
procedure Insert(Index : integer; const S: string); override;
procedure SetTextStr(const Value: string); override;
procedure LoadFromFile(const FileName: string); override;
procedure SaveToFile(const FileName: string); override;
//procedure Sort; virtual;
public
//property Sorted: boolean read FSorted write SetSorted;
@ -268,4 +270,28 @@ begin
end;
end;
procedure TWin32MemoStrings.LoadFromFile(const FileName: string);
var
TheStream: TFileStreamUTF8;
begin
TheStream:=TFileStreamUtf8.Create(FileName,fmOpenRead or fmShareDenyWrite);
try
LoadFromStream(TheStream);
finally
TheStream.Free;
end;
end;
procedure TWin32MemoStrings.SaveToFile(const FileName: string);
var
TheStream: TFileStreamUTF8;
begin
TheStream:=TFileStreamUtf8.Create(FileName,fmCreate);
try
SaveToStream(TheStream);
finally
TheStream.Free;
end;
end;
{$ENDIF}

View File

@ -31,7 +31,7 @@ uses
Classes, SysUtils, CommCtrl,
StdCtrls, Controls, Graphics, Forms, Themes,
////////////////////////////////////////////////////
WSControls, WSStdCtrls, WSLCLClasses, WSProc, Windows, LCLType, LCLProc,
WSControls, WSStdCtrls, WSLCLClasses, WSProc, Windows, LCLType, LCLProc, LazUtf8Classes,
InterfaceBase, LMessages, LCLMessageGlue,
Win32Int, Win32Proc, Win32WSControls, Win32Extra, Win32Themes;

View File

@ -26,6 +26,8 @@ TWinCEMemoStrings = class(TStrings)
procedure Delete(Index : integer); override;
procedure Insert(Index : integer; const S: string); override;
procedure SetTextStr(const Value: string); override;
procedure LoadFromFile(const FileName: string); override;
procedure SaveToFile(const FileName: string); override;
//procedure Sort; virtual;
public
//property Sorted: boolean read FSorted write SetSorted;
@ -178,4 +180,28 @@ begin
end;
end;
procedure TWinCEMemoStrings.LoadFromFile(const FileName: string);
var
TheStream: TFileStreamUTF8;
begin
TheStream:=TFileStreamUtf8.Create(FileName,fmOpenRead or fmShareDenyWrite);
try
LoadFromStream(TheStream);
finally
TheStream.Free;
end;
end;
procedure TWinCEMemoStrings.SaveToFile(const FileName: string);
var
TheStream: TFileStreamUTF8;
begin
TheStream:=TFileStreamUtf8.Create(FileName,fmCreate);
try
SaveToStream(TheStream);
finally
TheStream.Free;
end;
end;
{$ENDIF}

View File

@ -28,7 +28,7 @@ uses
{$ifdef Win32}win32compat,{$endif}
// RTL, FCL, LCL
SysUtils, LCLType, Classes, StdCtrls, Controls, Graphics, Forms, WinCEProc,
InterfaceBase, LMessages, LCLMessageGlue, LCLProc,
InterfaceBase, LMessages, LCLMessageGlue, LCLProc, LazUtf8Classes,
// Widgetset
WSControls, WSStdCtrls, WSLCLClasses, WinCEInt, WinCEWSControls, WinCEExtra,
WSProc;

View File

@ -24,7 +24,7 @@ unit TextStrings;
interface
uses
Classes, SysUtils, LCLStrConsts;
Classes, SysUtils, LCLStrConsts, LazUtf8Classes;
type
{ TTextStrings }
@ -80,6 +80,8 @@ type
function Add(const S: string): Integer; override;
function AddObject(const S: string; AObject: TObject): Integer; override;
procedure AddStrings(TheStrings: TStrings); override;
procedure LoadFromFile(const FileName: string); override;
procedure SaveToFile(const FileName: string); override;
public
property Text: string read FText write SetTextStr;
property OnChange: TNotifyEvent read FOnChange write FOnChange;
@ -771,4 +773,28 @@ begin
end;
end;
procedure TTextStrings.LoadFromFile(const FileName: string);
var
TheStream: TFileStreamUTF8;
begin
TheStream:=TFileStreamUtf8.Create(FileName,fmOpenRead or fmShareDenyWrite);
try
LoadFromStream(TheStream);
finally
TheStream.Free;
end;
end;
procedure TTextStrings.SaveToFile(const FileName: string);
var
TheStream: TFileStreamUTF8;
begin
TheStream:=TFileStreamUtf8.Create(FileName,fmCreate);
try
SaveToStream(TheStream);
finally
TheStream.Free;
end;
end;
end.