mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-12 10:20:49 +01:00
fixed project src path for output dir
git-svn-id: trunk@9120 -
This commit is contained in:
parent
8cb60f2e1f
commit
de9497265f
@ -62,7 +62,8 @@ type
|
|||||||
procedure SetFilename(const AValue: string);
|
procedure SetFilename(const AValue: string);
|
||||||
public
|
public
|
||||||
MyComponent: TMyComponent;
|
MyComponent: TMyComponent;
|
||||||
procedure StreamComponents;
|
procedure WriteComponents;
|
||||||
|
procedure ReadComponents;
|
||||||
property Filename: string read FFilename write SetFilename;
|
property Filename: string read FFilename write SetFilename;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -71,8 +72,13 @@ var
|
|||||||
|
|
||||||
function CreateXMLWriter(ADoc: TDOMDocument; const Path: string;
|
function CreateXMLWriter(ADoc: TDOMDocument; const Path: string;
|
||||||
Append: Boolean; var DestroyDriver: boolean): TWriter;
|
Append: Boolean; var DestroyDriver: boolean): TWriter;
|
||||||
|
function CreateXMLReader(ADoc: TDOMDocument; const Path: string;
|
||||||
|
var DestroyDriver: boolean): TReader;
|
||||||
|
|
||||||
procedure WriteComponentToXMLConfig(XMLConfig: TXMLConfig; const Path: string;
|
procedure WriteComponentToXMLConfig(XMLConfig: TXMLConfig; const Path: string;
|
||||||
AComponent: TComponent);
|
AComponent: TComponent);
|
||||||
|
procedure ReadComponentFromXMLConfig(XMLConfig: TXMLConfig; const Path: string;
|
||||||
|
var AComponent: TComponent);
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
@ -86,6 +92,28 @@ begin
|
|||||||
Result:=TWriter.Create(Driver);
|
Result:=TWriter.Create(Driver);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function CreateXMLReader(ADoc: TDOMDocument; const Path: string;
|
||||||
|
var DestroyDriver: boolean): TReader;
|
||||||
|
var
|
||||||
|
p: Pointer;
|
||||||
|
Driver: TAbstractObjectReader;
|
||||||
|
DummyStream: TMemoryStream;
|
||||||
|
begin
|
||||||
|
DummyStream:=TMemoryStream.Create;
|
||||||
|
try
|
||||||
|
Result:=TReader.Create(DummyStream,256);
|
||||||
|
DestroyDriver:=false;
|
||||||
|
// hack to set a write protected variable.
|
||||||
|
// DestroyDriver:=true; TReader will free it
|
||||||
|
Driver:=TXMLObjectReader.Create(ADoc,Path);
|
||||||
|
p:=@Result.Driver;
|
||||||
|
Result.Driver.Free;
|
||||||
|
TAbstractObjectReader(p^):=Driver;
|
||||||
|
finally
|
||||||
|
DummyStream:=nil;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure WriteComponentToXMLConfig(XMLConfig: TXMLConfig; const Path: string;
|
procedure WriteComponentToXMLConfig(XMLConfig: TXMLConfig; const Path: string;
|
||||||
AComponent: TComponent);
|
AComponent: TComponent);
|
||||||
var
|
var
|
||||||
@ -106,6 +134,24 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure ReadComponentFromXMLConfig(XMLConfig: TXMLConfig; const Path: string;
|
||||||
|
var AComponent: TComponent);
|
||||||
|
var
|
||||||
|
DestroyDriver: Boolean;
|
||||||
|
Reader: TReader;
|
||||||
|
begin
|
||||||
|
Reader:=nil;
|
||||||
|
DestroyDriver:=false;
|
||||||
|
try
|
||||||
|
Reader:=CreateXMLReader(XMLConfig.Document,Path,DestroyDriver);
|
||||||
|
AComponent:=Reader.ReadRootComponent(AComponent);
|
||||||
|
finally
|
||||||
|
if DestroyDriver then
|
||||||
|
Reader.Driver.Free;
|
||||||
|
Reader.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TStreamAsXMLForm }
|
{ TStreamAsXMLForm }
|
||||||
|
|
||||||
procedure TStreamAsXMLForm.FormCreate(Sender: TObject);
|
procedure TStreamAsXMLForm.FormCreate(Sender: TObject);
|
||||||
@ -123,7 +169,7 @@ begin
|
|||||||
Name:='MySubComponent';
|
Name:='MySubComponent';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
StreamComponents;
|
WriteComponents;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TStreamAsXMLForm.SetFilename(const AValue: string);
|
procedure TStreamAsXMLForm.SetFilename(const AValue: string);
|
||||||
@ -132,12 +178,12 @@ begin
|
|||||||
FFilename:=AValue;
|
FFilename:=AValue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TStreamAsXMLForm.StreamComponents;
|
procedure TStreamAsXMLForm.WriteComponents;
|
||||||
var
|
var
|
||||||
XMLConfig: TXMLConfig;
|
XMLConfig: TXMLConfig;
|
||||||
sl: TStringList;
|
sl: TStringList;
|
||||||
begin
|
begin
|
||||||
DebugLn('TStreamAsXMLForm.StreamComponents ',Filename);
|
DebugLn('TStreamAsXMLForm.WriteComponents ',Filename);
|
||||||
XMLConfig:=TXMLConfig.Create(Filename);
|
XMLConfig:=TXMLConfig.Create(Filename);
|
||||||
try
|
try
|
||||||
WriteComponentToXMLConfig(XMLConfig,'Component',Self);
|
WriteComponentToXMLConfig(XMLConfig,'Component',Self);
|
||||||
@ -148,6 +194,28 @@ begin
|
|||||||
XMLConfig.Free;
|
XMLConfig.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
sl:=TStringList.Create;
|
||||||
|
sl.LoadFromFile(Filename);
|
||||||
|
DebugLn('TStreamAsXMLForm.WriteComponents ',sl.Text);
|
||||||
|
sl.Free;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TStreamAsXMLForm.ReadComponents;
|
||||||
|
var
|
||||||
|
XMLConfig: TXMLConfig;
|
||||||
|
sl: TStringList;
|
||||||
|
NewComponent: TComponent;
|
||||||
|
begin
|
||||||
|
DebugLn('TStreamAsXMLForm.ReadComponents ',Filename);
|
||||||
|
XMLConfig:=TXMLConfig.Create(Filename);
|
||||||
|
try
|
||||||
|
NewComponent:=nil;
|
||||||
|
ReadComponentFromXMLConfig(XMLConfig,'Component',NewComponent);
|
||||||
|
XMLConfig.Flush;
|
||||||
|
finally
|
||||||
|
XMLConfig.Free;
|
||||||
|
end;
|
||||||
|
|
||||||
sl:=TStringList.Create;
|
sl:=TStringList.Create;
|
||||||
sl.LoadFromFile(Filename);
|
sl.LoadFromFile(Filename);
|
||||||
DebugLn('TStreamAsXMLForm.StreamComponents ',sl.Text);
|
DebugLn('TStreamAsXMLForm.StreamComponents ',sl.Text);
|
||||||
|
|||||||
@ -3917,7 +3917,7 @@ begin
|
|||||||
fLastOutputDirSrcPathIDAsString:=Project.IDAsString;
|
fLastOutputDirSrcPathIDAsString:=Project.IDAsString;
|
||||||
FOutputSrcPath:=TDefineTemplate.Create('CompiledSrcPath',
|
FOutputSrcPath:=TDefineTemplate.Create('CompiledSrcPath',
|
||||||
lisPkgDefsCompiledSrcPathAddition, CompiledSrcPathMacroName,
|
lisPkgDefsCompiledSrcPathAddition, CompiledSrcPathMacroName,
|
||||||
'$PkgSrcPath('+fLastOutputDirSrcPathIDAsString+');'
|
'$ProjectSrcPath('+fLastOutputDirSrcPathIDAsString+');'
|
||||||
+'$('+CompiledSrcPathMacroName+')',
|
+'$('+CompiledSrcPathMacroName+')',
|
||||||
da_Define);
|
da_Define);
|
||||||
FOutputSrcPath.SetDefineOwner(Project,false);
|
FOutputSrcPath.SetDefineOwner(Project,false);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user