Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.18;
Скачать: CL | DM;

Вниз

Как из библиотеки передать списки (TList)?   Найти похожие ветки 

 
sutyt   (2006-12-27 16:05) [0]

Доброго дня мастера. Прежде всего - ВСЕХ с наступающим Новым Годом!!!  Желаю крепкого здоровья, много счастья и любви, и побольше творчесских успехов!!!
Вызываю функцию из длл, которая показывает окно прогресса, но главное - это передача выходных параметров типа TList.
ДЛЛ:
 function CompileTGStatistic(AHandle:THandle;AFileName:PChar;
   var MainList:TList;var DetailList:TList;var Done:boolean):LongInt;stdcall;

impl-ion
function CompileTGStatistic(AHandle:THandle;AFileName:PChar;
 var MainList:TList;var DetailList:TList;var Done:boolean):LongInt;
{var
 PostProcFm:TPostProcFm;}

begin
Application.Handle:=AHandle;
PostProcFm:=TPostProcFm.Create(Application);
Result:=LongInt(PostProcFm);
with PostProcFm do
begin
 GlobalCancel:=false;
 Button2.Enabled:=false;
end;
 MainList:=TList.Create;
 DetailList:=TList.Create;
 PostProcFm.Show;
 PostProcFm.TGCompiling(StrPas(AFileName));
 with PostProcFm do begin
   if ResultMasterList<>nil then
   begin
     MainList.Capacity:=ResultMasterList.Count;
     MainList.Assign(ResultMasterList);
   end else
       MainList:=nil;
   if ResultDetailList<>nil then
   begin
     DetailList.Capacity:=ResultDetailList.Capacity;
     DetailList.Assign(ResultDetailList);
   end else
       DetailList:=nil;
   if (DetailList.Count=0)or(MasterList.Count=0) then Done:=false
     else
       Done:=true;
 end;
end;
Проверял по брекпоинтам - списки заполнены (MasterList=38, DetailList=1296)

главная прога:
type
 TCompileTGStatistic=function(AHandle:THandle;AFileName:PChar;
   var MainList:TList;var DetailList:TList;var Done:boolean):LongInt;stdcall;
...
procedure TMainFm.Button2Click(Sender: TObject);
var
 CompileTGStatistic:TCompileTGStatistic;
 LibHandle:THandle;
 MasterList:TList;
 RDetailList:TList;
 FFileName:string;
 FormRef:LongInt;
 ADone:boolean;
begin
if Opn1.Execute then
begin
FFileName:=Opn1.FileName;
LibHandle:=LoadLibrary("TgcompProc.dll");
try
 if LibHandle=0 then
   begin
     Raise Exception.Create("Unable to load TgcompProc.dll");
     exit;
   end;
 @CompileTGStatistic:=GetProcAddress(LibHandle,"CompileTGStatistic");
 if not(@CompileTGStatistic=nil)then
 begin
   MasterList:=TList.Create;
   RDetailList:=TList.Create;
   FormRef:=CompileTGStatistic(Application.Handle,PChar(FFileName),MasterList,RDeta ilList,ADone);
   if ADone then
   begin
     ShowMessage("MasterList:"+IntToStr(MasterList.Count)+#13#10+
       "DetailList:"+IntToStr(RDetailList.Count))
   end else
       ShowMessage("Fatal Error");
 end else
   RaiseLastWin32Error;
finally
 FreeLibrary(LibHandle);
end;
end;//if Opn1.execute;
end;
Так вот - MasterList=38 а RDetailList=0!!!!
Что я не так делаю???


 
Джо ©   (2006-12-27 18:30) [1]

ShareMem используешь, как дедушка Борланд завещал?


 
sutyt   (2006-12-27 18:38) [2]

>Джо[1]
Нет. Но первый то передается!


 
Джо ©   (2006-12-27 18:39) [3]

> [2] sutyt   (27.12.06 18:38)
> >Джо[1]
> Нет.


А нужно.


 
sutyt   (2006-12-27 18:47) [4]

>[3]Джо ©   (27.12.06 18:39)
Не помогло, а при закрытии формы из длл - вообще заглючило...


 
Германн ©   (2006-12-27 19:05) [5]


> Не помогло

А как делал?


 
sutyt   (2006-12-28 09:41) [6]

>All
у меня в приватах длл-ки и в описании ф-ии были одинаковые имена.
 private
   { Private declarations }
   MasterData:PGeneralData;
   DetailData:PDetailData;
   Addon:PAdditionalData;
   ResultMasterData:PResultMasterData;
   FindList:TList;
   FindData:PFindData;
   ResultMasterList:TList;
   ResultDetailList:TList;
   MasterList:TList;
   DetailList:TList;    
  AddonList:TList;
   ComposeData:PComposeData;

 function CompileTGStatistic(AHandle:THandle;AFileName:PChar;
   var MainList:TList;var DetalList:TList;var Done:boolean):LongInt;stdcall;

теперь все ОК, и без глючного ШареМем!


 
sutyt   (2006-12-28 09:42) [7]

в [6] уже исправлено, но было одинаково.


 
Сергей М. ©   (2006-12-28 10:13) [8]


> function CompileTGStatistic(AHandle:THandle;AFileName:PChar;
>
>    var MainList:TList;var DetalList:TList;var Done:boolean):
> LongInt;stdcall;
>


Выделенное жирным - лишнее.



Страницы: 1 вся ветка

Текущий архив: 2007.02.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.041 c
15-1169918975
Zeqfreed
2007-01-27 20:29
2007.02.18
Кто желал голосовой поисковик музыки?


15-1169970657
$Pl@Sh
2007-01-28 10:50
2007.02.18
Прога для создания EMS


15-1169636647
RebroFF
2007-01-24 14:04
2007.02.18
Хочу всё знать!


2-1170236693
Lera
2007-01-31 12:44
2007.02.18
Отключение от сети


15-1169709149
Ega23
2007-01-25 10:12
2007.02.18
Что может выбить систему до BSOD?