Показать сообщение отдельно
  #27  
Старый 02.11.2012, 17:27
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от helgboy
Все это сделал, все функции успешно вызываются, но опять облом... внутри keyctrl опять все переменные равны нулю... конечно я не объявлял их в аргументах и не тянул все 35 переменных в dll и обратно в exe хотябы из соображения безопасности. Почему переменные обнуляются.. ведь они используются внутри одного PASа в главной программе...
Сами по себе переменные не обнуляться. Ты явно делаешь что-то не то.
Цитата:
Сообщение от helgboy
А ну да я вернулся туда откуда начал... переменные не будут обнуляться если присвоить keyctrl к классу формы main, потому что все остальные функции где используються необходимые переменные присвоены к этому классу, а если присвой keyctrl к классу формы то он не запуститься из dll вот опять замкнулся круг,
По моему ты всё усложняешь на пустом месте. Похоже что у тебя неверно спроектирована структура приложения.
Цитата:
Сообщение от helgboy
выход один, тянуть все 35 переменных в dll и обратно через аргументы или есть какой нибудь фокус в работе с классами????
А разве при работе с классами тебе не пришлось бы тянуть все 35 переменных? Если тебе обязательно нужны классы с которыми можно было бы работать через библиотеки, то используй bpl-ки вместо dll-ок. Но предупреждаю, что это довольно хлопотно. Лучше работать через традиционные структуры - записи (record) или массивы.
Цитата:
Сообщение от helgboy
И вообще че то не заметил я толку от подключенного FastShareMem ...
Смысл в том, что если не использовать borlndmm.dll, то у exe и у dll будет у каждого личный диспетчер памяти, из-за чего нужно строго следить чтобы память зарезервированная под переменную в одном диспетчере памяти в нём же потом и освобождалась. А автоматические типы (строки, динамические массивы и т.п.) и вовсе использовать нельзя. Если же использовать borlndmm.dll, то будет один единственный диспетчер памяти, поэтому переменная зарезервировавшая память в exe-шнике, может преспокойно освободить её в dll-ке и наоборот.
Цитата:
Сообщение от helgboy
думаю может плюнуть на все и использовать запись в обычный файл или это очень медленно будет?
А разве это не будет тасканием 35 переменных в dll и обратно?
Ответить с цитированием