1) Delphi Ansi Compiler:
OracleTypes.pas
procedure TVariables.WriteBinaryData(Stream: TStream);
...
{+}
//WriteBuffer(PChar(Name)^, Temp); // OLD
WriteBuffer(PWideChar(WideString(Name))^, Temp); // NEW
{+.}
2) Oracle Monitor:
OracleMonitorIntf.pas
function TClientDirectory.AddClient(ClientID: Integer; const AName: string): Integer;
...
ApplicationHandle := Application.Handle;
{+}
//StrPLCopy(Name, PAnsiChar(AnsiString(AName)), SizeOf(AnsiString(Name)) - 1); // OLD
StrPLCopy(Name, PAnsiChar(AnsiString(AName)), SizeOf(Name) - 1); // NEW
{+.}
3) Minimize memory allocation when BLOB compression:
{+}
type
TMemoryStreamAccess = class(TMemoryStream);
{+.}
OracleData.pas
function TOracleDataSet.DoBLOBCompress(...
...
try
// Set the input stream data
{+}
//InStream.Write(Buffer^, Size);
TMemoryStreamAccess(InStream).SetPointer(Buffer, Size);
{+.}
InStream.Seek(0, soFrombeginning);
...
finally
{+}
TMemoryStreamAccess(InStream).SetPointer(nil, 0);
{+.}
InStream.Free;
OutStream.Free;
...
OracleTypes.pas
procedure TVariables.WriteBinaryData(Stream: TStream);
...
{+}
//WriteBuffer(PChar(Name)^, Temp); // OLD
WriteBuffer(PWideChar(WideString(Name))^, Temp); // NEW
{+.}
2) Oracle Monitor:
OracleMonitorIntf.pas
function TClientDirectory.AddClient(ClientID: Integer; const AName: string): Integer;
...
ApplicationHandle := Application.Handle;
{+}
//StrPLCopy(Name, PAnsiChar(AnsiString(AName)), SizeOf(AnsiString(Name)) - 1); // OLD
StrPLCopy(Name, PAnsiChar(AnsiString(AName)), SizeOf(Name) - 1); // NEW
{+.}
3) Minimize memory allocation when BLOB compression:
{+}
type
TMemoryStreamAccess = class(TMemoryStream);
{+.}
OracleData.pas
function TOracleDataSet.DoBLOBCompress(...
...
try
// Set the input stream data
{+}
//InStream.Write(Buffer^, Size);
TMemoryStreamAccess(InStream).SetPointer(Buffer, Size);
{+.}
InStream.Seek(0, soFrombeginning);
...
finally
{+}
TMemoryStreamAccess(InStream).SetPointer(nil, 0);
{+.}
InStream.Free;
OutStream.Free;
...
Last edited: