remove x2utils dependency
This commit is contained in:
parent
4b677e782a
commit
5893767c38
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -1,6 +1,3 @@
|
|||||||
[submodule "vendor/x2utils"]
|
|
||||||
path = vendor/x2utils
|
|
||||||
url = https://github.com/MvRens/x2utils.git
|
|
||||||
[submodule "vendor/x2log"]
|
[submodule "vendor/x2log"]
|
||||||
path = vendor/x2log
|
path = vendor/x2log
|
||||||
url = https://github.com/MvRens/x2log.git
|
url = https://github.com/MvRens/x2log.git
|
||||||
|
@ -14,7 +14,7 @@ uses
|
|||||||
XMLDOM,
|
XMLDOM,
|
||||||
XMLIntf,
|
XMLIntf,
|
||||||
DataBindingHintsXML,
|
DataBindingHintsXML,
|
||||||
XMLDataBindingGenerator, JvExMask, JvToolEdit
|
XMLDataBindingGenerator
|
||||||
{
|
{
|
||||||
cxButtonEdit,
|
cxButtonEdit,
|
||||||
cxContainer,
|
cxContainer,
|
||||||
|
@ -1813,7 +1813,6 @@ begin
|
|||||||
begin
|
begin
|
||||||
path := IncludeTrailingPathDelimiter(Result);
|
path := IncludeTrailingPathDelimiter(Result);
|
||||||
fileName := ASchemaName.Replace('-', '_');
|
fileName := ASchemaName.Replace('-', '_');
|
||||||
fileName := fileName.Replace('./', '');
|
|
||||||
fileName := fileName + '.pas';
|
fileName := fileName + '.pas';
|
||||||
|
|
||||||
if Assigned(FOnGetFileName) then
|
if Assigned(FOnGetFileName) then
|
||||||
|
248
Units/X2UtNamedFormat.pas
Normal file
248
Units/X2UtNamedFormat.pas
Normal file
@ -0,0 +1,248 @@
|
|||||||
|
{
|
||||||
|
:: X2UtNamedFormat implements Format-style functionality using named
|
||||||
|
:: instead of indexed parameters.
|
||||||
|
::
|
||||||
|
:: Last changed: $Date$
|
||||||
|
:: Revision: $Rev$
|
||||||
|
:: Author: $Author$
|
||||||
|
}
|
||||||
|
unit X2UtNamedFormat;
|
||||||
|
|
||||||
|
interface
|
||||||
|
uses
|
||||||
|
Classes,
|
||||||
|
SysUtils;
|
||||||
|
|
||||||
|
|
||||||
|
type
|
||||||
|
TNamedFormatStringList = class(TStringList)
|
||||||
|
public
|
||||||
|
procedure AddLn();
|
||||||
|
|
||||||
|
function Format(AParams: array of const): String;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
AFormat uses the same format strings as SysUtils.Format, where each
|
||||||
|
format specifier may use a named instead of a numeric index, surrounded by
|
||||||
|
<>, eg:
|
||||||
|
|
||||||
|
%<Value1>:s %<Value2>:.2d
|
||||||
|
|
||||||
|
|
||||||
|
AParams contains alternating the parameter name and it's value.
|
||||||
|
|
||||||
|
Note: NamedFormat works by mapping names to indices and passing the result
|
||||||
|
to SysUtils.Format. Unnamed or existing indexed specifiers will therefore
|
||||||
|
be affected by named specifiers! It is strongly recommended to name all
|
||||||
|
specifiers.
|
||||||
|
}
|
||||||
|
function NamedFormat(const AFormat: String; AParams: array of const; AFormatSettings: TFormatSettings): String; overload;
|
||||||
|
function NamedFormat(const AFormat: String; AParams: array of const): String; overload;
|
||||||
|
|
||||||
|
|
||||||
|
implementation
|
||||||
|
uses
|
||||||
|
Windows;
|
||||||
|
|
||||||
|
type
|
||||||
|
TProtectedMemoryStream = class(TMemoryStream);
|
||||||
|
|
||||||
|
|
||||||
|
const
|
||||||
|
SpecifierChar = '%';
|
||||||
|
SpecifierNameStart = '<';
|
||||||
|
SpecifierNameEnd = '>';
|
||||||
|
ValidNameChars = ['A'..'Z', 'a'..'z', '0'..'9', '_'];
|
||||||
|
|
||||||
|
|
||||||
|
procedure StreamWriteChar(const AStream: TStream; const AValue: Char);
|
||||||
|
begin
|
||||||
|
AStream.WriteBuffer(AValue, SizeOf(Char));
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure StreamWriteString(const AStream: TStream; const AValue: String);
|
||||||
|
begin
|
||||||
|
AStream.WriteBuffer(PChar(AValue)^, Length(AValue) * SizeOf(Char));
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function FindNameEnd(const APosition: PChar; const AEnd: PChar): PChar;
|
||||||
|
var
|
||||||
|
position: PChar;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Result := nil;
|
||||||
|
position := APosition;
|
||||||
|
|
||||||
|
while position < AEnd do
|
||||||
|
begin
|
||||||
|
if position^ = SpecifierNameEnd then
|
||||||
|
begin
|
||||||
|
Result := position;
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if not CharInSet(position^, ValidNameChars) then
|
||||||
|
break;
|
||||||
|
|
||||||
|
Inc(position);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function NamedFormat(const AFormat: String; AParams: array of const): String; overload;
|
||||||
|
var
|
||||||
|
formatSettings: TFormatSettings;
|
||||||
|
|
||||||
|
begin
|
||||||
|
formatSettings := TFormatSettings.Create;
|
||||||
|
Result := NamedFormat(AFormat, AParams, formatSettings);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function NamedFormat(const AFormat: string; AParams: array of const; AFormatSettings: TFormatSettings): String;
|
||||||
|
var
|
||||||
|
currentPos: PChar;
|
||||||
|
formatEnd: PChar;
|
||||||
|
formatStream: TMemoryStream;
|
||||||
|
formatString: String;
|
||||||
|
name: String;
|
||||||
|
nameEnd: PChar;
|
||||||
|
nameStart: PChar;
|
||||||
|
param: TVarRec;
|
||||||
|
paramIndex: Integer;
|
||||||
|
paramNames: TStringList;
|
||||||
|
paramValues: array of TVarRec;
|
||||||
|
specifierIndex: Integer;
|
||||||
|
errorMsg: String;
|
||||||
|
|
||||||
|
begin
|
||||||
|
if Length(AParams) mod 2 = 1 then
|
||||||
|
raise Exception.Create('AParams must contains a multiple of 2 number of items');
|
||||||
|
|
||||||
|
currentPos := PChar(AFormat);
|
||||||
|
SetLength(paramValues, 0);
|
||||||
|
|
||||||
|
formatEnd := currentPos;
|
||||||
|
Inc(formatEnd, Length(AFormat));
|
||||||
|
|
||||||
|
paramNames := TStringList.Create();
|
||||||
|
try
|
||||||
|
paramNames.CaseSensitive := False;
|
||||||
|
|
||||||
|
formatStream := TMemoryStream.Create();
|
||||||
|
try
|
||||||
|
{ Most likely scenario; the names are longer than the replacement
|
||||||
|
indexes. }
|
||||||
|
TProtectedMemoryStream(formatStream).Capacity := Length(AFormat) * SizeOf(Char);
|
||||||
|
|
||||||
|
while currentPos < formatEnd do
|
||||||
|
begin
|
||||||
|
{ Search for % }
|
||||||
|
if currentPos^ = SpecifierChar then
|
||||||
|
begin
|
||||||
|
StreamWriteChar(formatStream, currentPos^);
|
||||||
|
Inc(currentPos);
|
||||||
|
|
||||||
|
{ Check if this is indeed a named specifier }
|
||||||
|
if (currentPos < formatEnd) and (currentPos^ = SpecifierNameStart) then
|
||||||
|
begin
|
||||||
|
Inc(currentPos);
|
||||||
|
|
||||||
|
nameStart := currentPos;
|
||||||
|
nameEnd := FindNameEnd(currentPos, formatEnd);
|
||||||
|
|
||||||
|
if Assigned(nameEnd) then
|
||||||
|
begin
|
||||||
|
SetString(name, nameStart, nameEnd - nameStart);
|
||||||
|
|
||||||
|
specifierIndex := paramNames.IndexOf(name);
|
||||||
|
if specifierIndex = -1 then
|
||||||
|
specifierIndex := paramNames.Add(name);
|
||||||
|
|
||||||
|
StreamWriteString(formatStream, IntToStr(specifierIndex));
|
||||||
|
|
||||||
|
currentPos := nameEnd;
|
||||||
|
end;
|
||||||
|
end else
|
||||||
|
StreamWriteChar(formatStream, currentPos^);
|
||||||
|
end else
|
||||||
|
StreamWriteChar(formatStream, currentPos^);
|
||||||
|
|
||||||
|
Inc(currentPos);
|
||||||
|
end;
|
||||||
|
|
||||||
|
SetString(formatString, PChar(formatStream.Memory), formatStream.Size div SizeOf(Char));
|
||||||
|
finally
|
||||||
|
FreeAndNil(formatStream);
|
||||||
|
end;
|
||||||
|
|
||||||
|
SetLength(paramValues, paramNames.Count);
|
||||||
|
paramIndex := 0;
|
||||||
|
|
||||||
|
while paramIndex < High(AParams) do
|
||||||
|
begin
|
||||||
|
param := AParams[paramIndex];
|
||||||
|
|
||||||
|
case param.VType of
|
||||||
|
vtChar: name := string(param.VChar);
|
||||||
|
vtString: name := string(param.VString^);
|
||||||
|
vtPChar: name := string(param.VPChar);
|
||||||
|
vtAnsiString: name := string(PChar(param.VAnsiString));
|
||||||
|
vtWideChar: name := string(param.VWideChar);
|
||||||
|
vtWideString: name := string(WideString(param.VWideString));
|
||||||
|
vtUnicodeString: name := string(UnicodeString(param.VUnicodeString));
|
||||||
|
else
|
||||||
|
raise Exception.CreateFmt('Parameter name at index %d is not a string value',
|
||||||
|
[paramIndex div 2]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
Inc(paramIndex);
|
||||||
|
|
||||||
|
specifierIndex := paramNames.IndexOf(name);
|
||||||
|
if specifierIndex > -1 then
|
||||||
|
paramValues[specifierIndex] := AParams[paramIndex];
|
||||||
|
|
||||||
|
Inc(paramIndex);
|
||||||
|
end;
|
||||||
|
|
||||||
|
try
|
||||||
|
|
||||||
|
Result := Format(formatString, paramValues, AFormatSettings);
|
||||||
|
except
|
||||||
|
on E:EConvertError do
|
||||||
|
begin
|
||||||
|
errorMsg := E.Message;
|
||||||
|
|
||||||
|
{ Translate specifiers in error messages back to names }
|
||||||
|
for paramIndex := 0 to Pred(paramNames.Count) do
|
||||||
|
errorMsg := StringReplace(errorMsg, SpecifierChar + IntToStr(paramIndex) + ':',
|
||||||
|
SpecifierChar + SpecifierNameStart +
|
||||||
|
paramNames[paramIndex] + SpecifierNameEnd + ':',
|
||||||
|
[rfReplaceAll]);
|
||||||
|
|
||||||
|
raise EConvertError.Create(errorMsg);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
FreeAndNil(paramNames);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{ TNamedFormatStringList }
|
||||||
|
procedure TNamedFormatStringList.AddLn;
|
||||||
|
begin
|
||||||
|
Add('');
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function TNamedFormatStringList.Format(AParams: array of const): String;
|
||||||
|
begin
|
||||||
|
Result := NamedFormat(Text, AParams);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
145
Units/X2UtTempFile.pas
Normal file
145
Units/X2UtTempFile.pas
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
{: Provides temporary file functions.
|
||||||
|
|
||||||
|
Last changed: $Date$
|
||||||
|
Revision: $Rev$
|
||||||
|
Author: $Author$
|
||||||
|
}
|
||||||
|
unit X2UtTempFile;
|
||||||
|
|
||||||
|
interface
|
||||||
|
function GetAppDataPath(): String;
|
||||||
|
|
||||||
|
function GetTempFile(const APrefix: String): String; overload;
|
||||||
|
function GetTempFile(const APath, AFileName, AExtension: String): String; overload;
|
||||||
|
function GetTempFile(const APath, AFileName: String): String; overload;
|
||||||
|
function GetTempAppDataFile(const ASubPath, AFileName, AExtension: String): String; overload;
|
||||||
|
function GetTempAppDataFile(const ASubPath, AFileName: String): String; overload;
|
||||||
|
|
||||||
|
function IsValidFileChar(const AChar: Char): Boolean;
|
||||||
|
function CheckValidFileName(var AFileName: String; const AReplacement: Char = #0): Boolean;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
uses
|
||||||
|
ShlObj,
|
||||||
|
SysUtils,
|
||||||
|
Windows;
|
||||||
|
|
||||||
|
function GetAppDataPath(): String;
|
||||||
|
var
|
||||||
|
path: array[0..MAX_PATH] of Char;
|
||||||
|
|
||||||
|
begin
|
||||||
|
FillChar(path, SizeOf(path), #0);
|
||||||
|
if not SHGetSpecialFolderPath(0, @path, CSIDL_APPDATA, True) then
|
||||||
|
begin
|
||||||
|
FillChar(path, SizeOf(path), #0);
|
||||||
|
GetTempPath(SizeOf(path), @path);
|
||||||
|
end;
|
||||||
|
|
||||||
|
Result := path;
|
||||||
|
if Length(Result) > 0 then
|
||||||
|
Result := IncludeTrailingPathDelimiter(Result);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function GetTempFile(const APrefix: String): String; overload;
|
||||||
|
var
|
||||||
|
tempPath: array[0..MAX_PATH] of Char;
|
||||||
|
tempFile: array[0..MAX_PATH] of Char;
|
||||||
|
|
||||||
|
begin
|
||||||
|
FillChar(tempPath, SizeOf(tempPath), #0);
|
||||||
|
FillChar(tempFile, SizeOf(tempFile), #0);
|
||||||
|
|
||||||
|
Windows.GetTempPath(SizeOf(tempPath), @tempPath);
|
||||||
|
Windows.GetTempFileName(@tempPath, PChar(APrefix), 0, @tempFile);
|
||||||
|
|
||||||
|
Result := String(tempFile);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function GetTempFile(const APath, AFileName, AExtension: String): String; overload;
|
||||||
|
var
|
||||||
|
iCounter: Integer;
|
||||||
|
sBase: String;
|
||||||
|
sExtension: String;
|
||||||
|
|
||||||
|
begin
|
||||||
|
iCounter := 0;
|
||||||
|
sBase := IncludeTrailingPathDelimiter(APath);
|
||||||
|
|
||||||
|
if not ForceDirectories(sBase) then
|
||||||
|
begin
|
||||||
|
Result := '';
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
sExtension := AExtension;
|
||||||
|
if (Length(sExtension) > 0) and (AnsiPos('.', sExtension) = 0) then
|
||||||
|
sExtension := '.' + sExtension;
|
||||||
|
|
||||||
|
sBase := sBase + AFileName;
|
||||||
|
Result := sBase + sExtension;
|
||||||
|
|
||||||
|
while FileExists(Result) do
|
||||||
|
begin
|
||||||
|
Inc(iCounter);
|
||||||
|
Result := Format('%s(%d)%s', [sBase, iCounter, sExtension]);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function GetTempFile(const APath, AFileName: String): String; overload;
|
||||||
|
var
|
||||||
|
sExt: String;
|
||||||
|
|
||||||
|
begin
|
||||||
|
sExt := ExtractFileExt(AFileName);
|
||||||
|
Result := GetTempFile(APath, Copy(AFileName, 1, Length(AFileName) - Length(sExt)),
|
||||||
|
sExt);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function GetTempAppDataFile(const ASubPath, AFileName, AExtension: String): String; overload;
|
||||||
|
begin
|
||||||
|
Result := GetTempFile(GetAppDataPath + ASubPath, AFileName, AExtension);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function GetTempAppDataFile(const ASubPath, AFileName: String): String; overload;
|
||||||
|
var
|
||||||
|
sExt: String;
|
||||||
|
|
||||||
|
begin
|
||||||
|
sExt := ExtractFileExt(AFileName);
|
||||||
|
Result := GetTempAppDataFile(ASubPath, Copy(AFileName, 1,
|
||||||
|
Length(AFileName) - Length(sExt)),
|
||||||
|
sExt);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function IsValidFileChar(const AChar: Char): Boolean;
|
||||||
|
begin
|
||||||
|
Result := not CharInSet(AChar, ['\', '/', ':', '*', '?', '"', '<', '>', '|']);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function CheckValidFileName(var AFileName: String; const AReplacement: Char): Boolean;
|
||||||
|
var
|
||||||
|
iPos: Integer;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Result := True;
|
||||||
|
|
||||||
|
for iPos := Length(AFileName) downto 1 do
|
||||||
|
if not IsValidFileChar(AFileName[iPos]) then
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
if AReplacement = #0 then
|
||||||
|
Delete(AFileName, iPos, 1)
|
||||||
|
else
|
||||||
|
AFileName[iPos] := AReplacement;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
@ -489,6 +489,7 @@ function TXMLDataBindingGenerator.LoadSchema(const AStream: TStream; const ASche
|
|||||||
begin
|
begin
|
||||||
location := ADocRefs[refIndex].SchemaLocation;
|
location := ADocRefs[refIndex].SchemaLocation;
|
||||||
schemaName := ChangeFileExt(ExtractFileName(location), '');
|
schemaName := ChangeFileExt(ExtractFileName(location), '');
|
||||||
|
schemaName := schemaName.Replace('./', ''); // fix explizit current dir
|
||||||
refSchema := FindSchema(schemaName);
|
refSchema := FindSchema(schemaName);
|
||||||
|
|
||||||
if not Assigned(refSchema) then
|
if not Assigned(refSchema) then
|
||||||
|
1331
Units/XMLDataBindingUtils.pas
Normal file
1331
Units/XMLDataBindingUtils.pas
Normal file
File diff suppressed because it is too large
Load Diff
@ -11,7 +11,10 @@ uses
|
|||||||
DelphiXMLDataBindingResources in 'Units\DelphiXMLDataBindingResources.pas',
|
DelphiXMLDataBindingResources in 'Units\DelphiXMLDataBindingResources.pas',
|
||||||
DataBindingSettingsXML in 'Units\DataBindingSettingsXML.pas',
|
DataBindingSettingsXML in 'Units\DataBindingSettingsXML.pas',
|
||||||
DataBindingHintsXML in 'Units\DataBindingHintsXML.pas',
|
DataBindingHintsXML in 'Units\DataBindingHintsXML.pas',
|
||||||
MSXML2_TLB in 'Units\MSXML2_TLB.pas';
|
MSXML2_TLB in 'Units\MSXML2_TLB.pas',
|
||||||
|
XMLDataBindingUtils in 'Units\XMLDataBindingUtils.pas',
|
||||||
|
X2UtNamedFormat in 'Units\X2UtNamedFormat.pas',
|
||||||
|
X2UtTempFile in 'Units\X2UtTempFile.pas';
|
||||||
|
|
||||||
{$R *.res}
|
{$R *.res}
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@
|
|||||||
<VerInfo_Locale>1043</VerInfo_Locale>
|
<VerInfo_Locale>1043</VerInfo_Locale>
|
||||||
<Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
|
<Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
|
||||||
<SanitizedProjectName>X2XMLDataBinding</SanitizedProjectName>
|
<SanitizedProjectName>X2XMLDataBinding</SanitizedProjectName>
|
||||||
<DCC_UnitSearchPath>vendor\x2utils;vendor\x2log;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
|
<DCC_UnitSearchPath>vendor\x2utils_;vendor\x2log;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||||
<DCC_Namespace>Data.Win;Datasnap.Win;Web.Win;Soap.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
<DCC_Namespace>Data.Win;Datasnap.Win;Web.Win;Soap.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||||
@ -142,6 +142,429 @@
|
|||||||
<Platform value="Win32">True</Platform>
|
<Platform value="Win32">True</Platform>
|
||||||
<Platform value="Win64">True</Platform>
|
<Platform value="Win64">True</Platform>
|
||||||
</Platforms>
|
</Platforms>
|
||||||
|
<Deployment Version="3">
|
||||||
|
<DeployFile LocalName="bin\X2XMLDataBinding.exe" Configuration="Build" Class="ProjectOutput">
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<RemoteName>X2XMLDataBinding.exe</RemoteName>
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployClass Name="AdditionalDebugSymbols">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidClassesDexFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>classes</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidGDBServer">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidLibnativeArmeabiFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\armeabi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidLibnativeMipsFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\mips</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidServiceOutput">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidSplashImageDef">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidSplashStyles">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_DefaultAppIcon">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_LauncherIcon144">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_LauncherIcon36">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-ldpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_LauncherIcon48">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-mdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_LauncherIcon72">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-hdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_LauncherIcon96">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_SplashImage426">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-small</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_SplashImage470">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-normal</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_SplashImage640">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-large</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_SplashImage960">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xlarge</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DebugSymbols">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DependencyFramework">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.framework</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DependencyModule">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
<Extensions>.dll;.bpl</Extensions>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Required="true" Name="DependencyPackage">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
<Extensions>.bpl</Extensions>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="File">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\Resources\StartUp\</RemoteDir>
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="iPad_Launch1024">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="iPad_Launch1536">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="iPad_Launch2048">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="iPad_Launch768">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="iPhone_Launch320">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="iPhone_Launch640">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="iPhone_Launch640x1136">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectAndroidManifest">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectiOSDeviceDebug">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectiOSDeviceResourceRules">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectiOSEntitlements">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<RemoteDir>..\</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<RemoteDir>..\</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectiOSInfoPList">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectiOSResource">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectOSXEntitlements">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>..\</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectOSXInfoPList">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectOSXResource">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\Resources</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Required="true" Name="ProjectOutput">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Linux64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectUWPManifest">
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="UWP_DelphiLogo150">
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<RemoteDir>Assets</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win64">
|
||||||
|
<RemoteDir>Assets</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="UWP_DelphiLogo44">
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<RemoteDir>Assets</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win64">
|
||||||
|
<RemoteDir>Assets</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
|
||||||
|
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
|
||||||
|
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
|
||||||
|
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
||||||
|
</Deployment>
|
||||||
</BorlandProject>
|
</BorlandProject>
|
||||||
<ProjectFileVersion>12</ProjectFileVersion>
|
<ProjectFileVersion>12</ProjectFileVersion>
|
||||||
</ProjectExtensions>
|
</ProjectExtensions>
|
||||||
@ -160,6 +583,9 @@
|
|||||||
<DCCReference Include="Units\DataBindingSettingsXML.pas"/>
|
<DCCReference Include="Units\DataBindingSettingsXML.pas"/>
|
||||||
<DCCReference Include="Units\DataBindingHintsXML.pas"/>
|
<DCCReference Include="Units\DataBindingHintsXML.pas"/>
|
||||||
<DCCReference Include="Units\MSXML2_TLB.pas"/>
|
<DCCReference Include="Units\MSXML2_TLB.pas"/>
|
||||||
|
<DCCReference Include="Units\XMLDataBindingUtils.pas"/>
|
||||||
|
<DCCReference Include="Units\X2UtNamedFormat.pas"/>
|
||||||
|
<DCCReference Include="Units\X2UtTempFile.pas"/>
|
||||||
<BuildConfiguration Include="Build">
|
<BuildConfiguration Include="Build">
|
||||||
<Key>Cfg_2</Key>
|
<Key>Cfg_2</Key>
|
||||||
<CfgParent>Base</CfgParent>
|
<CfgParent>Base</CfgParent>
|
||||||
@ -170,4 +596,5 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')" Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj"/>
|
<Import Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')" Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj"/>
|
||||||
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
||||||
|
<Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/>
|
||||||
</Project>
|
</Project>
|
||||||
|
1
vendor/x2utils
vendored
1
vendor/x2utils
vendored
@ -1 +0,0 @@
|
|||||||
Subproject commit 1e7a0873558140b506c01af5c50c73cfe940466e
|
|
Loading…
Reference in New Issue
Block a user