fixed project src path for output dir

git-svn-id: trunk@9120 -
This commit is contained in:
mattias 2006-04-13 18:19:39 +00:00
parent 8cb60f2e1f
commit de9497265f
2 changed files with 73 additions and 5 deletions

View File

@ -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);

View File

@ -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);