LazUtils: Add simple functions SaveStringToFile and LoadStringFromFile. Rename SaveStringToFile in DialogProcs.

This commit is contained in:
Juha 2024-03-11 01:13:42 +02:00
parent 103d9f42e1
commit 4967237fb1
6 changed files with 42 additions and 10 deletions

View File

@ -105,6 +105,10 @@ function StringCase(const AString: String; const ACase: array of String;
function SamePChar(P1, P2: PChar): boolean;
function StrLScan(P: PChar; c: Char; MaxLen: Cardinal): PChar;
// To and from a file.
function SaveStringToFile(const aString, aFileName: String): Boolean;
function LoadStringFromFile(const aFileName: String): String;
// Like IsValidIdent() in FPC 3.1.
function LazIsValidIdent(const Ident: string; AllowDots: Boolean = False;
StrictDots: Boolean = False): Boolean;
@ -1400,6 +1404,34 @@ begin
end;
end;
function SaveStringToFile(const aString, aFileName: String): Boolean;
var
fs: TFileStream;
begin
Result:=False;
fs:=TFileStream.Create(aFileName, fmCreate);
try
fs.Write(aString[1], length(aString));
Result:=True;
finally
fs.Free;
end;
end;
function LoadStringFromFile(const aFileName: String): String;
var
fs: TFileStream;
begin
fs:=TFileStream.Create(aFileName, fmOpenRead);
try
SetLength(Result, fs.Size);
if Result<>'' then
fs.Read(Result[1],length(Result));
finally
fs.Free;
end;
end;
function LazIsValidIdent(const Ident: string; AllowDots: Boolean = False;
StrictDots: Boolean = False): Boolean;
// This is a copy of IsValidIdent from FPC 3.1.

View File

@ -2912,7 +2912,7 @@ begin
List:=TStringList.Create;
try
WriteNode(List,BrowseTreeView.Items.GetFirstNode);
Result:=SaveStringToFile(Filename,List.Text,[],
Result:=SaveLazStringToFile(Filename,List.Text,[],
'exporting identifiers as text');
finally
List.Free;

View File

@ -111,7 +111,7 @@ function ForceDirectoryInteractive(Directory: string;
ErrorButtons: TMsgDlgButtons = []): TModalResult;
function DeleteFileInteractive(const Filename: string;
ErrorButtons: TMsgDlgButtons = []): TModalResult;
function SaveStringToFile(const Filename, Content: string;
function SaveLazStringToFile(const Filename, Content: string;
ErrorButtons: TMsgDlgButtons; const Context: string = ''
): TModalResult;
function ConvertLFMToLRSFileInteractive(const LFMFilename,
@ -608,7 +608,7 @@ begin
until false;
end;
function SaveStringToFile(const Filename, Content: string;
function SaveLazStringToFile(const Filename, Content: string;
ErrorButtons: TMsgDlgButtons; const Context: string): TModalResult;
var
fs: TFileStream;

View File

@ -1163,7 +1163,7 @@ begin
tctSource:
Converter.Source:=CodeBuf.Source;
tctFile:
Result:=SaveStringToFile(Converter.Filename,CodeBuf.Source,[])=mrOk;
Result:=SaveLazStringToFile(Converter.Filename,CodeBuf.Source,[])=mrOk;
tctStrings:
CodeBuf.AssignTo(Converter.Strings,true);
tctCodeBuffer:

View File

@ -5348,8 +5348,8 @@ begin
and (not AnUnitInfo.IsVirtual) then begin
LRJFilename:=ChangeFileExt(AnUnitInfo.Filename,'.lrj');
DebugLn(['SaveUnitComponent save lrj: ',LRJFilename]);
Result:=SaveStringToFile(LRJFilename,Grubber.Grubbed.Text,
[mbIgnore,mbAbort],AnUnitInfo.Filename);
Result:=SaveLazStringToFile(LRJFilename,Grubber.Grubbed.Text,
[mbIgnore,mbAbort],AnUnitInfo.Filename);
if (Result<>mrOk) and (Result<>mrIgnore) then exit;
end;

View File

@ -2488,8 +2488,8 @@ begin
PkgList.Free;
end;
StaticPckIncludeFile:=ConfigDir+'staticpackages.inc';
Result:=SaveStringToFile(StaticPckIncludeFile,StaticPackagesInc,[],
lisPkgMangstaticPackagesConfigFile);
Result:=SaveLazStringToFile(StaticPckIncludeFile,StaticPackagesInc,[],
lisPkgMangstaticPackagesConfigFile);
end;
function TLazPackageGraph.IsCompiledInBasePackage(PackageName: string): boolean;
@ -5764,9 +5764,9 @@ begin
end;
// save source
Result:=SaveStringToFile(SrcFilename,Src,[],lisPkgMangpackageMainSourceFile);
Result:=SaveLazStringToFile(SrcFilename,Src,[],lisPkgMangpackageMainSourceFile);
if Result<>mrOk then begin
DebugLn('Error: (lazarus) [TLazPackageGraph.SavePackageMainSource] SaveStringToFile ',SrcFilename,' failed');
DebugLn('Error: (lazarus) [TLazPackageGraph.SavePackageMainSource] SaveLazStringToFile ',SrcFilename,' failed');
exit;
end;