mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-13 10:59:18 +02:00
* synchronized with trunk
git-svn-id: branches/wasm@46721 -
This commit is contained in:
commit
c7d3484393
@ -338,12 +338,19 @@ unit cpupara;
|
|||||||
paralen := paradef.size
|
paralen := paradef.size
|
||||||
else
|
else
|
||||||
paralen := tcgsize2size[def_cgsize(paradef)];
|
paralen := tcgsize2size[def_cgsize(paradef)];
|
||||||
paracgsize:=def_cgsize(paradef);
|
if (paradef.typ in [objectdef,arraydef,recorddef,setdef,stringdef]) and
|
||||||
{ for things like formaldef }
|
not is_special_array(paradef) and
|
||||||
if (paracgsize=OS_NO) then
|
(hp.varspez in [vs_value,vs_const]) then
|
||||||
|
paracgsize:=int_cgsize(paralen)
|
||||||
|
else
|
||||||
begin
|
begin
|
||||||
paracgsize:=OS_ADDR;
|
paracgsize:=def_cgsize(paradef);
|
||||||
paralen := tcgsize2size[OS_ADDR];
|
if (paracgsize=OS_NO) then
|
||||||
|
begin
|
||||||
|
paracgsize:=OS_ADDR;
|
||||||
|
paralen := tcgsize2size[OS_ADDR];
|
||||||
|
paradef:=voidpointertype;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -146,7 +146,6 @@ begin
|
|||||||
T:=P.Targets.AddExampleProgram('base64decodingtestcase.pas');
|
T:=P.Targets.AddExampleProgram('base64decodingtestcase.pas');
|
||||||
T:=P.Targets.AddExampleProgram('cachetest.pp');
|
T:=P.Targets.AddExampleProgram('cachetest.pp');
|
||||||
T:=P.Targets.AddExampleProgram('cfgtest.pp');
|
T:=P.Targets.AddExampleProgram('cfgtest.pp');
|
||||||
T:=P.Targets.AddExampleProgram('dbugsrv.pp');
|
|
||||||
T:=P.Targets.AddExampleProgram('debugtest.pp');
|
T:=P.Targets.AddExampleProgram('debugtest.pp');
|
||||||
T:=P.Targets.AddExampleProgram('doecho.pp');
|
T:=P.Targets.AddExampleProgram('doecho.pp');
|
||||||
T:=P.Targets.AddExampleProgram('dparser.pp');
|
T:=P.Targets.AddExampleProgram('dparser.pp');
|
||||||
|
@ -69,6 +69,7 @@ begin
|
|||||||
P.ExamplePath.Add('examples');
|
P.ExamplePath.Add('examples');
|
||||||
T:=P.Targets.AddExampleProgram('ipcclient.pp');
|
T:=P.Targets.AddExampleProgram('ipcclient.pp');
|
||||||
T:=P.Targets.AddExampleProgram('ipcserver.pp');
|
T:=P.Targets.AddExampleProgram('ipcserver.pp');
|
||||||
|
T:=P.Targets.AddExampleProgram('dbugsrv.pp');
|
||||||
|
|
||||||
{$ifndef ALLPACKAGES}
|
{$ifndef ALLPACKAGES}
|
||||||
Run;
|
Run;
|
||||||
|
@ -5331,15 +5331,41 @@ begin
|
|||||||
Changed;
|
Changed;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TryVarByteArrayToStream(var AValue : Variant; Stream : TMemoryStream) : boolean;
|
||||||
|
var
|
||||||
|
p : Pointer;
|
||||||
|
c : Integer;
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
if not VarIsArray(AValue) then
|
||||||
|
exit;
|
||||||
|
c := VarArrayHighBound(AValue,1) - VarArrayLowBound(AValue,1) + 1;
|
||||||
|
Result := (c > 0) and VarIsType(AValue[VarArrayLowBound(AValue,1)],varByte);
|
||||||
|
if not Result then
|
||||||
|
exit;
|
||||||
|
p := VarArrayLock(AValue);
|
||||||
|
try
|
||||||
|
Stream.SetSize(c);
|
||||||
|
Move(p^,Stream.Memory^,c);
|
||||||
|
finally
|
||||||
|
VarArrayUnlock(AValue);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TFPReportCustomImage.LoadDBData(AData: TFPReportData);
|
procedure TFPReportCustomImage.LoadDBData(AData: TFPReportData);
|
||||||
var
|
var
|
||||||
|
v : Variant;
|
||||||
s: string;
|
s: string;
|
||||||
lStream: TMemoryStream;
|
lStream: TMemoryStream;
|
||||||
begin
|
begin
|
||||||
s := AData.FieldValues[FFieldName];
|
v := AData.FieldValues[FFieldName];
|
||||||
lStream := TMemoryStream.Create;
|
lStream := TMemoryStream.Create;
|
||||||
try
|
try
|
||||||
FPReportMIMEEncodeStringToStream(s, lStream);
|
if not TryVarByteArrayToStream(v,lStream) then
|
||||||
|
begin
|
||||||
|
s := v;
|
||||||
|
FPReportMIMEEncodeStringToStream(s, lStream);
|
||||||
|
end;
|
||||||
LoadPNGFromStream(lStream)
|
LoadPNGFromStream(lStream)
|
||||||
finally
|
finally
|
||||||
lStream.Free;
|
lStream.Free;
|
||||||
@ -5402,15 +5428,25 @@ function TFPReportCustomImage.PrepareObject(aRTParent: TFPReportElement): TFPRep
|
|||||||
Var
|
Var
|
||||||
Img : TFPReportCustomImage;
|
Img : TFPReportCustomImage;
|
||||||
B : TFPReportCustomBand;
|
B : TFPReportCustomBand;
|
||||||
|
D : TFPReportData;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Result:=inherited PrepareObject(aRTParent);
|
Result:=inherited PrepareObject(aRTParent);
|
||||||
if Result=Nil then
|
if Result=Nil then
|
||||||
exit;
|
exit;
|
||||||
img := TFPReportCustomImage(Result);
|
img := TFPReportCustomImage(Result);
|
||||||
B:=artParent as TFPReportCustomBand;
|
if Assigned(Band) then
|
||||||
if (img.FieldName <> '') and Assigned(B.GetData) then
|
B := Band
|
||||||
img.LoadDBData(B.GetData);
|
else
|
||||||
|
B := artParent as TFPReportCustomBand;
|
||||||
|
if (img.FieldName <> '') then
|
||||||
|
begin
|
||||||
|
D := B.GetData;
|
||||||
|
if not(Assigned(D)) and Assigned(B.Page.Data) then
|
||||||
|
D := B.Page.Data;
|
||||||
|
if Assigned(D) then
|
||||||
|
img.LoadDBData(D);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TFPReportCustomImage.Create(AOwner: TComponent);
|
constructor TFPReportCustomImage.Create(AOwner: TComponent);
|
||||||
|
@ -1691,8 +1691,6 @@ ResourceString
|
|||||||
SWarnStartCompilingPackage = 'Start compiling package %s for target %s.';
|
SWarnStartCompilingPackage = 'Start compiling package %s for target %s.';
|
||||||
SWarnCompilingPackagecompleteProgress = '[%3.0f%%] Compiled package %s';
|
SWarnCompilingPackagecompleteProgress = '[%3.0f%%] Compiled package %s';
|
||||||
SWarnCompilingPackagecomplete = 'Compiled package %s';
|
SWarnCompilingPackagecomplete = 'Compiled package %s';
|
||||||
SWarnSkipPackageTargetProgress = '[%3.0f%%] Skipped package %s which has been disabled for target %s';
|
|
||||||
SWarnSkipPackageTarget = 'Skipped package %s which has been disabled for target %s';
|
|
||||||
SWarnInstallationPackagecomplete = 'Installation package %s for target %s succeeded';
|
SWarnInstallationPackagecomplete = 'Installation package %s for target %s succeeded';
|
||||||
SWarnCanNotGetAccessRights = 'Warning: Failed to copy access-rights from file %s';
|
SWarnCanNotGetAccessRights = 'Warning: Failed to copy access-rights from file %s';
|
||||||
SWarnCanNotSetAccessRights = 'Warning: Failed to copy access-rights to file %s';
|
SWarnCanNotSetAccessRights = 'Warning: Failed to copy access-rights to file %s';
|
||||||
@ -1708,6 +1706,8 @@ ResourceString
|
|||||||
SWarnRemovedNonEmptyDirectory = 'Warning: Removed non empty directory "%s"';
|
SWarnRemovedNonEmptyDirectory = 'Warning: Removed non empty directory "%s"';
|
||||||
|
|
||||||
SInfoPackageAlreadyProcessed = 'Package %s is already processed';
|
SInfoPackageAlreadyProcessed = 'Package %s is already processed';
|
||||||
|
SInfoSkipPackageTargetProgress = '[%3.0f%%] Skipped package %s which has been disabled for target %s';
|
||||||
|
SInfoSkipPackageTarget = 'Skipped package %s which has been disabled for target %s';
|
||||||
SInfoCompilingTarget = 'Compiling target %s';
|
SInfoCompilingTarget = 'Compiling target %s';
|
||||||
SInfoExecutingCommand = 'Executing command "%s %s"';
|
SInfoExecutingCommand = 'Executing command "%s %s"';
|
||||||
SInfoCreatingOutputDir = 'Creating output dir "%s"';
|
SInfoCreatingOutputDir = 'Creating output dir "%s"';
|
||||||
@ -8195,7 +8195,7 @@ procedure TBuildEngine.Compile(Packages: TPackages);
|
|||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
inc(FProgressCount);
|
inc(FProgressCount);
|
||||||
log(vlWarning,SWarnSkipPackageTargetProgress,[(FProgressCount)/FProgressMax * 100, APackage.Name, Defaults.Target]);
|
log(vlInfo,SInfoSkipPackageTargetProgress,[(FProgressCount)/FProgressMax * 100, APackage.Name, Defaults.Target]);
|
||||||
APackage.FTargetState:=tsNoCompile;
|
APackage.FTargetState:=tsNoCompile;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -8288,7 +8288,7 @@ begin
|
|||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
inc(FProgressCount);
|
inc(FProgressCount);
|
||||||
log(vlWarning,SWarnSkipPackageTargetProgress,[(FProgressCount)/FProgressMax * 100, P.Name, Defaults.Target]);
|
log(vlInfo,SInfoSkipPackageTargetProgress,[(FProgressCount)/FProgressMax * 100, P.Name, Defaults.Target]);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
@ -8388,7 +8388,7 @@ begin
|
|||||||
log(vlWarning, SWarnInstallationPackagecomplete, [P.Name, Defaults.Target]);
|
log(vlWarning, SWarnInstallationPackagecomplete, [P.Name, Defaults.Target]);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
log(vlWarning,SWarnSkipPackageTarget,[P.Name, Defaults.Target]);
|
log(vlInfo,SInfoSkipPackageTarget,[P.Name, Defaults.Target]);
|
||||||
end;
|
end;
|
||||||
NotifyEventCollection.CallEvents(neaAfterInstall, Self);
|
NotifyEventCollection.CallEvents(neaAfterInstall, Self);
|
||||||
end;
|
end;
|
||||||
@ -8417,7 +8417,7 @@ begin
|
|||||||
log(vlWarning, SWarnInstallationPackagecomplete, [P.Name, Defaults.Target]);
|
log(vlWarning, SWarnInstallationPackagecomplete, [P.Name, Defaults.Target]);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
log(vlWarning,SWarnSkipPackageTarget,[P.Name, Defaults.Target]);
|
log(vlInfo,SInfoSkipPackageTarget,[P.Name, Defaults.Target]);
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
FinishArchive(P);
|
FinishArchive(P);
|
||||||
|
@ -249,7 +249,7 @@ begin
|
|||||||
Result:=Result+Delimiter;
|
Result:=Result+Delimiter;
|
||||||
end;
|
end;
|
||||||
// Quote empty string:
|
// Quote empty string:
|
||||||
If (Length(Result)=0) and (Count=1) then
|
If (Length(Result)=0) and (Count=1) and (QuoteChar<>#0) then
|
||||||
Result:=QuoteChar+QuoteChar;
|
Result:=QuoteChar+QuoteChar;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user