Форум: "Начинающим";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];
ВнизСтруктура из DLL Найти похожие ветки
← →
9899100 (2008-08-08 12:12) [0]описана структура
загружаю DLL
вызываю процедуру параметром которой передаеться указатель на переменную типа структура
все намана структура заполняеться и все хорошо
но когда выгружаеться DLL
то переменная теряет все значения причем становиться вообще Inacessible Value
как передать структуру из DLL так чтобы данные сохранились после того как DLL будет выгружена????
← →
DVM © (2008-08-08 12:16) [1]Структуру покажи, там что есть поля-указатели что ли?
← →
9899100 (2008-08-08 12:16) [2]попробовал командой MOVE переписать переданную структуру в другую переменную..... переписывает но все равно когда выгружаю DLL теряеться её значение :(
← →
Сергей М. © (2008-08-08 12:17) [3]
> Inacessible Value
Это отказ, характерный для отладчика, когда контролируемое тобой значение выходит из текущей области видимости. Не более того.
К сохранению каких-то ьтам данных это сообщение не имеет отношения.
← →
9899100 (2008-08-08 12:18) [4]вот такая вот структура
передаеться перменная типа PProgramm
Type PProgramm=^TProgramm
TProgramm=record
name:String;
Version:String;
end;
← →
Сергей М. © (2008-08-08 12:19) [5]Я же тебе уже указал на грабли в
http://delphimaster.net/view/2-1218102039/
А ты не внемлешь)
← →
9899100 (2008-08-08 12:19) [6]>>Сергей М. ©
это в отладчике ессесно
так программа выдет ессесно ошбку
← →
Medbe}I{onok XML © (2008-08-08 12:20) [7]строки остались в длл, мувом переносятся указатели, которые протухают после выгрузки длл.
← →
Сергей М. © (2008-08-08 12:21) [8]
> 9899100 (08.08.08 12:19) [6]
> программа выдет ессесно ошбку
Ты в [5] вник ?
← →
9899100 (2008-08-08 12:23) [9]>> Сергей М. ©
ессесно
и я вижу где теряеться значение
оно теряеться когда я делаю Freelibrary
и это тоже понятно
отсюда и вопрос
"как передать структуру из DLL так чтобы данные сохранились после того как DLL будет выгружена????"
← →
9899100 (2008-08-08 12:25) [10]>>Medbe}I{onok XML
тупо копировать каждую строку??
это не красиво :)
может както изменить структуру чтобы это были не указатели а именно данные
← →
Сергей М. © (2008-08-08 12:29) [11]
> это не красиво
А красиво разве рубить сук, на котором сидишь ?
Именно это ты и делаешь)
Давай уже показывай код..
← →
tesseract © (2008-08-08 12:29) [12]
> может както изменить структуру чтобы это были не указатели
> а именно данные
string[255]
← →
tesseract © (2008-08-08 12:29) [13]Хотя наверно лучше array[255] of char - красивее будет.
← →
DVM © (2008-08-08 12:29) [14]
> 9899100 (08.08.08 12:25) [10]
TProgramm=record
Name: Pchar;
NameLen: integer;
Version: PChar;
VersionLen: integer;
end;
Память под строки надо выделять НЕ В ДЛЛ. Если функция длл видит, что выделенной памяти недостаточно, то пусть возвращает ошибку или заполняет какое поле в структуре требуемыми значениями.
← →
Medbe}I{onok XML © (2008-08-08 12:30) [15]структуру ты уже благополучно передал без потерь.
← →
DVM © (2008-08-08 12:31) [16]
> 9899100 (08.08.08 12:25) [10]
Короче, смотри как WinAPI сделано везде.
← →
9899100 (2008-08-08 12:51) [17]Да уж :)
застрелиться и не встать
интересно всетаки
ну стоит String а не String[255]
как то читал что
по идее Delphi пользует тип стринг сходно с PChar
если явно не указать что он String[255]
ладно
но ведь переменная масив то тоже на самом деле указатель
хотя может я путаю с С++
← →
Dennis I. Komarov © (2008-08-08 12:56) [18]Когда создаешь новую DLL почитай внимательно, что в коментариях написано...
← →
Сергей М. © (2008-08-08 12:57) [19]
> переменная масив то тоже на самом деле указатель
Смотря какой массив ..
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c