Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по DLL   Найти похожие ветки 

 
_sulent   (2004-11-30 09:02) [0]

Приветсвую, может быть вопрос не по конференции, но решил обратиться сюда.
Возникла такая проблема, что-то не могу понять. создаю DLL из программы гружу ее, вроде загружается, но стоит мне только убить ее, все хана... выдает ошибку, что мол что-то с памятью моей не то! В общем ошибка обращения к памяти. Что может быть такое?
причем если я его не убиваю этот Handle, то при закрытии программы опять такая ошибка появляется!
делаю так:

   
LibHandle := LoadLibrary(pChar(ExtractFilePath(Application.ExeName)+"DLL\Reports\"+SR.Name));
   index := FindNext(SR);
   if LibHandle > 32 then begin
     SetLength(LibHandles, length(LibHandles)+1);
     @Tproc := getProcAddress(LibHandles[length(LibHandles)-1], "describe_report");
     Tproc(List);
     RepList.Items.Add(List.Strings[1]);
   end;
   FreeLibrary(LibHandle);


 
Digitman ©   (2004-11-30 09:09) [1]

у тебя ошибка в самой DLL


 
KSergey ©   (2004-11-30 09:13) [2]

SahreMem, похоже, как всегда отсутствует


 
_sulent   (2004-11-30 09:26) [3]

ShareMem у меня как раз присутсвует, а сама DLL нормально работает, никаких проблем нет... проверял запуская саму программу, работает нормально...


 
TUser ©   (2004-11-30 09:35) [4]

И все-таки, код dll"ки покажи.


 
Verg ©   (2004-11-30 09:44) [5]

Несколько вопросиков:


> LibHandle := LoadLibrary(pChar(ExtractFilePath(Application.ExeName)+"DLL\Reports\"+SR.Name));
>    index := FindNext(SR);
>    if LibHandle > 32 then begin // В чем смысл сравнения ?
>      SetLength(LibHandles, length(LibHandles)+1); // Массив расширен, но LibHandle  туда не вписан
>      @Tproc := getProcAddress(LibHandles[length(LibHandles)-1], // В какой библиотеке ты ищешь процедуру ?
> "describe_report");
>      Tproc(List);
>      RepList.Items.Add(List.Strings[1]);
>    end;
>    FreeLibrary(LibHandle);


 
_sulent   (2004-11-30 10:50) [6]

Там это я просто экспериментировал, а по-идее у меня все было так:

index := FindFirst(pChar(ExtractFilePath(Application.ExeName)+"DLL\Reports\*.dll",faAnyFile, SR);
while index=0 do begin
LibHandle := LoadLibrary(pChar(ExtractFilePath(Application.ExeName)+"DLL\Reports\"+SR.Name));
if LibHandle > 32 then begin
 @Tproc := getProcAddress(LibHandle, "describe_report");
 TProc(List);
end;
end;

Что-то типа того



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

Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.033 c
6-1096821871
Agent-Smith
2004-10-03 20:44
2004.12.12
Реализация работы между сегментами сети


3-1100531559
Dionnis
2004-11-15 18:12
2004.12.12
Использование индексов


10-1070985161
lionson
2003-12-09 18:52
2004.12.12
утечка памяти в корба-сервере


3-1100521248
SAndre
2004-11-15 15:20
2004.12.12
SQLOLE Как получить наименование столбцов запроса ?


1-1101733181
denis24
2004-11-29 15:59
2004.12.12
wordApplication





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский