Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 486
от 28.05.2006, 21:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 339, Экспертов: 64
В номере:Вопросов: 3, Ответов: 4


Вопрос № 43902: Привет всем. Помогите, кто может, плз. Это актуально до 26 числа. прога - бакалаврская.... уже все готово и загвоздка за этой "мелочью" (( Есть много ДЛЛ - плагины. каждая из них хранит процедуру типа procedure getval(var s: TMyTyp...
Вопрос № 43912: Здравствуйте эксперты ! Я опять про Excel из Дельфи. В хелпе нашел описание как открывать вордовый документ через OLEAutomation и вставлять туда строки. Но и то только строки целиком. А как вставить кусок текста в нужную позицию посреди стр...
Вопрос № 43915: Здравсвуйте! Подскажите как очистить Chart от графиков...чтобы очищать не по одной серии chart1.Series1.Claer, а сразу весь Chart&...

Вопрос № 43.902
Привет всем. Помогите, кто может, плз. Это актуально до 26 числа. прога - бакалаврская.... уже все готово и загвоздка за этой "мелочью" ((
Есть много ДЛЛ - плагины. каждая из них хранит процедуру типа
procedure getval(var s: TMyType);
type Тmytype=record
a: pchar;
b: pchar;
..
end;
процедура эта при вызове выдает ошибку на выходе.
При этом:
1 как я прочитал, у ДЛЛ и ЕХЕ разные менеждеры памяти (для Делфи...), поэтому динамические структуры (а-ля PChar) некорректно передаются. Я поставил по рекомендациям автора статьи FastShareMem и в ДЛЛ и в ЕХЕ. - не помогло
2. варианты с TStringList и подобными не подходят...
3.я пробовал передавать без выделения памяти и вот таким способом:

procedure GetAnswer(var aa: RAnswer);
var i, j: longint;
result: RAnswer;
begin
в проедуре заполнял локальную структуру, а потом выделял память под аргумент:
getmem(aa.а, length(result.а));
CopyMemory(aa.а, result.а, length(result.а));

4. и чего я только не пробовал.
Отправлен: 22.05.2006, 22:30
Вопрос задал: Решетник Д (статус: 6-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Решетник Д!
Если Вы передаете в функцию какие-то сложные структуры, то передавайте туда указатель, а не саму структуру. Т.е. фактически Вы будете передавать адрес в памяти, по которому расположена Ваша структура. Вот пример:
Type
TMyType
a: PChar;
b: PChar;
end;
...
procedure getval(s: Pointer);
Begin
{Здесь Вы делаете то, что собирались делать с s, только с учетом, что s это теперь указатель}
End;
{Вызов}
Var
tt: ^TMyType;
Begin
...
getval(tt);
...
End;
Ну и для PChar не забывайте память выделять. :)
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 23.05.2006, 07:29
Оценка за ответ: 5

Отвечает: Лукьяненко Алексей Валериевич
Здравствуйте, Решетник Д!

Еще можно компилировать и Dll, и EXE с использованием run-time пакетов. Тогда менеджер памяти будет общим. Также для строк можно использовать WideString - под них память выделяется не менеджером памяти Delphi, а Windows
Ответ отправил: Лукьяненко Алексей Валериевич (статус: 3-ий класс)
Ответ отправлен: 23.05.2006, 10:05
Оценка за ответ: 5


Вопрос № 43.912
Здравствуйте эксперты !

Я опять про Excel из Дельфи. В хелпе нашел описание как открывать вордовый документ через OLEAutomation и вставлять туда строки. Но и то только строки целиком. А как вставить кусок текста в нужную позицию посреди строки ? По аналогии решил открыть Excel, но когда привязываю Sheet к Bookу выдает ошибку. Объясните что не так ? Или дайте ссылку где почитать, чтобы Вас не напрягать. Текст в приложении.

Приложение:

Отправлен: 23.05.2006, 00:15
Вопрос задал: Муратов Радик Анатольевич/Мустафа (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gh0stik
Здравствуйте, Муратов Радик Анатольевич/Мустафа!

Вот привожу пример по открытию файла, и связи с таблицей, так как в Вашем примере я так и не понял почему происходит не соответствие типов. Я Вам рекомендую в ручную создавать нужные объекты.

Более подробно советую глянуть в книге "Василий Корняков Программирование документов и приложений MS Office в Delphi"
http://c-books.info/books/load.php?ty=delphi&lng=RU

Также посмотрите мои ответы в вопросах №43320 и №42227

Смотрите пример в приложении:

Приложение:

---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаються события на земле. Генератор случайных чисел - и только.

Ответ отправил: Gh0stik (статус: 8-ой класс)
Ответ отправлен: 23.05.2006, 11:15


Вопрос № 43.915
Здравсвуйте!
Подскажите как очистить Chart от графиков...чтобы очищать не по одной серии chart1.Series1.Claer, а сразу весь Chart&
Отправлен: 23.05.2006, 00:40
Вопрос задала: Артемова Марина (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gh0stik
Здравствуйте, Артемова Марина!

Поробуйте такой метод:

Удаляем все данные из SeriesList, далее обновляем Chart:

Chart1.SeriesList.Clear;
Chart1.Refresh;
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаються события на земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: 8-ой класс)
Ответ отправлен: 23.05.2006, 11:52


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.33 от 25.05.2006
Яндекс Rambler's Top100

В избранное