Additional
dbCAP
AnyDAC
ThinDAC
NCOCI8
Topic: Ошибка в определении каталога с oci.dll
Ошибка в определении каталога с oci.dll
Posted: 2007/05/17 07:05
 
WIndows 2000, Delphi 5, Oracle Instant clinent 10.2

В модуле daADPhysOraclWrapper процедура
procedure TOCILib.GetOCIPaths(const AVendorHome, AVendorLib: String);
на строчке 1232 происходит path := ADExtractFieldName(path, i);
При этом перезаписывается переменая path и происходит поиск только в первой подстраке пути. Вся остальная подстрока отбрасывается. У меня путь к Oracle клиенту находится в самом конце пути. Предлагаю заменить
while i <= Length(path) do begin
на
type
TAStr = Array of String;
...
ArrStr: TAStr;
...
StrToList(Path, ';', ArrStr);
for i := 0 to Length(ArrStr)-1 do
begin
....
end;

procedure StrToList(const S, Separator: string; var Strs: TAStr; i: Integer = 0);
var
Posit, Size, j: Integer;
Buf: String;
begin
Posit := 1;
SetLength(Strs, 5);
j := 0;

while (Posit > 0) do
begin
Posit := TailPos(S, Separator, i+1);
if Posit = 0 then
Size := Length(S)
else
Size := Posit-i-1;

Buf := Trim(Copy(S, i+1, Size));
i := Posit;
if Buf <> '' then
begin
if j > Length(Strs)-1 then
SetLength(Strs, j+5);
Strs[j] := Buf;
Inc(j);
end;
end;
SetLength(Strs, j);
end;


Post edited by: Erik, at: 2007/05/17 13:05