Здравствуйте, коллеги. Столкнулся вот сегодня с такой ерундой. Обычно DLL пишу на C++. Сейчас вот понадобилось на Delphi написать. Но такая вот хрень - не могу обработать DLL_PROCESS_ATTACH, DLL_PROCESS_DETACH, DLL_THREAD_ATTACH и т.п. В приложении - простенький пример, но и он не работает. Даже и не думает (проверено вставкой "asm int 3 end;" в начало процедуры).
Добрый день, Marouder! А ты соблюдал языковые соглашения по вызовам процедур из dll? Я не вижу...
*** E-Man 1.5 (edition 04) - life is just a game...if you a student:) ***
Ответ отправлен: 19.09.2003, 20:18 Отправитель: _vt Отвечает sir henry
Добрый день, Marouder! Чтобы использовать процедуру или функцию из DLL, ее надо экспортировать (см. приложение).
Приложение: Ответ отправлен: 22.09.2003, 06:40 Отправитель: sir henry
Вопрос № 938
Повторяю вопрос : Как, программно, на низком уровне (интересует теория, типа : 1) Понизить Data Strobe(C0), дождаться отклика подтверждения S6, допустим, затем повышаем бит в C0 и т.д.) Прошу, не молчите, как вы обычно делаете в последнее время. И бросьте вы ответы типа сходи : xxx.xxx.com и т.д., ведь анекдот лучше звучит если рассказать его заново, а не упоминать его порядковый номер. Заранее благодарен Назойливый Jiny
Доброе время суток, Кирилл! Неважно :). Ответ отправлен: 22.09.2003, 04:39 Отправитель: sir henry Отвечает Bob Johnson
Добрый день, Кирилл! А причем здесь это? Кстати, я давал тебе ссылку на свою страницу, где описано, как создавать файл манифеста.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 19.09.2003, 19:42 Отправитель: Bob Johnson Отвечает Cybernetic Creature
Добрый день, Кирилл! Отвечаю еще раз скопируйте ниже следующий код: 1 24 { '3C 3F 78 6D 6C 20 76 65 72 73 69 6F 6E 3D 22 31' '2E 30 22 20 65 6E 63 6F 64 69 6E 67 3D 22 55 54' '46 2D 38 22 20 73 74 61 6E 64 61 6C 6F 6E 65 3D' '22 79 65 73 22 3F 3E 0D 0A 0D 0A 3C 61 73 73 65' '6D 62 6C 79 20 78 6D 6C 6E 73 3D 22 75 72 6E 3A' '73 63 68 65 6D 61 73 2D 6D 69 63 72 6F 73 6F 66' '74 2D 63 6F 6D 3A 61 73 6D 2E 76 31 22 20 6D 61' '6E 69 66 65 73 74 56 65 72 73 69 6F 6E 3D 22 31' '2E 30 22 3E 0D 0A 20 20 3C 61 73 73 65 6D 62 6C' '79 49 64 65 6E 74 69 74 79 0D 0A 20 20 09 74 79' '70 65 3D 22 77 69 6E 33 32 22 0D 0A 20 20 20 20' '6E 61 6D 65 3D 22 44 65 6C 70 68 69 41 70 70 6C' '69 63 61 74 69 6F 6E 22 0D 0A 20 20 20 20 76 65' '72 73 69 6F 6E 3D 22 31 2E 30 2E 30 2E 30 22 20' '0D 0A 20 20 09 70 72 6F 63 65
73 73 6F 72 41 72' '63 68 69 74 65 63 74 75 72 65 3D 22 2A 22 2F 3E' '0D 0A 20 20 3C 64 65 70 65 6E 64 65 6E 63 79 3E' '0D 0A 20 20 20 20 3C 64 65 70 65 6E 64 65 6E 74' '41 73 73 65 6D 62 6C 79 3E 0D 0A 20 20 20 20 20' '20 3C 61 73 73 65 6D 62 6C 79 49 64 65 6E 74 69' '74 79 0D 0A 20 20 20 20 20 20 20 20 74 79 70 65' '3D 22 77 69 6E 33 32 22 0D 0A 20 20 20 20 20 20' '20 20 6E 61 6D 65 3D 22 4D 69 63 72 6F 73 6F 66' '74 2E 57 69 6E 64 6F 77 73 2E 43 6F 6D 6D 6F 6E' '2D 43 6F 6E 74 72 6F 6C 73 22 0D 0A 20 20 20 20' '20 20 20 20 76 65 72 73 69 6F 6E 3D 22 36 2E 30' '2E 30 2E 30 22 0D 0A 20 20 20 20 20 20 20 20 70' '75 62 6C 69 63 4B 65 79 54 6F 6B 65 6E 3D 22 36' '35 39 35 62 36 34 31 34 34 63 63 66 31 64 66 22' '0D 0A 20 20 20 20 20 20 20 20 6C 61 6E 67 75 61' '67 65 3D 22 2A 22 0D 0A 20 20 20 20 20 20 20 20' '70 72 6F 63 65
73 73 6F 72 41 72 63 68 69 74 65' '63 74 75 72 65 3D 22 2A 22 2F 3E 0D 0A 20 20 20' '20 3C 2F 64 65 70 65 6E 64 65 6E 74 41 73 73 65' '6D 62 6C 79 3E 0D 0A 20 20 3C 2F 64 65 70 65 6E' '64 65 6E 63 79 3E 0D 0A 3C 2F 61 73 73 65 6D 62' '6C 79 3E 0D 0A' } вставте в любом текстовом редакторе, сохраните получившийся файл под названием "XPMAN.RC" скомпилируйте этот скрипт в коммандной строке напишите (путь к папке ДелфиБИН)rcc32 xpman.rc у вас получится файл XPMAN.res скопируйте этот файл в папку lib Делфи в любой программе в файле проекта после строки {$R *.res} впишите {$R XPMAN.res}. и все у вас программа будет работать с ресурсами ХР. если что-то не поймешь напиши ё-мейл я тебе вышлю примеры и ты сразу поймешь Ответ отправлен: 20.09.2003, 08:47 Отправитель: Cybernetic Creature Отвечает THE_PRO
Доброе время суток, Кирилл! Mojesh vospolzovatsya XPManovskim "*.res"-om. Ved XPMan sostoit lish iz odnoqo "*.res" fayla! Poprosi u znakomix i problema reshena... a luchshe kupi D7 Ответ отправлен: 22.09.2003, 09:31 Отправитель: THE_PRO
Вопрос № 940
Здравствуйте. Вопрос по программированию OpenGL-объектов в Delphi. Надо нарисовать цилиндр от точки до точки. Как нарисовать цилиндр, я разобрался. Но, насколько я понял, его можно располагать только вдоль оси координат, а чтобы нарисовать от точки до точки, необходимо поворачивать этот цилиндр относительно осей на определенные углы. Но сколько я ни пытался поворачивать, ничего не получалось. Может, кто-нибудь расскажет, в чем тут секрет? Может у кого-нибудь есть процедура для рисования цилиндра от точки до точки? Извиняюсь, если вопрос глупый или не по теме рассылки - я в OpenGl новичок. P.S. Для работы с OpenGL я использую компоненты SignSoft VisIT 3.0
Доброе время суток, Ivan! Ты можешь мысленно создать новую систему координат, одна из осей которой будет совпадать с направлением "от точки до точки", как тебе надо нарисовать цилиндр. После чего тебе остается только нарисовать цилиндр в обычной системе координат вдоль этой оси, а затем повернуть его так, чтобы эта ось совпала с требуемой. Поворот осуществляется матрицей трансформации, сформированной из координат осей новой системы в старой.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 21.09.2003, 20:51 Отправитель: Bob Johnson
Вопрос № 941
Hello!!! Как можно программно пределить скорость вращения шпинделя в HD. Спасибо
Здравствуйте, Serg! С помощью программы Internet Explorer :)). Набрать в поисковике название своего HD и любоваться результатом :)). Ответ отправлен: 22.09.2003, 04:43 Отправитель: sir henry Отвечает CJ
Доброе время суток, Serg! Через API! Ответ отправлен: 19.09.2003, 21:53 Отправитель: CJ Отвечает Bob Johnson
Здравствуйте, Serg! Возможно, что в IDE есть какая-либо команда, которая это делает. Но я сомниваюсь, поэтому остается только читать один и тот же сектор несколько раз подряд и смотреть, как часто это происходит. Правда в этом случае возникнут проблемы с кэшем винта, т.к. прочитанный сектор он поместит туда. Точного ответа дать не могу, но раз никто все равно не ответил... Еще была такая программка под дос - HDDSPEED, которая (кроме всего прочего) показывала скорость вращения шпинделя (но не на всех винтах). Она делала это не мгновенно, а за секунду. При этом светодиод занятости IDE канала светился непрерывно - видимо что-то последовательно читала.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 21.09.2003, 20:53 Отправитель: Bob Johnson
Вопрос № 942
Hi Experts! Следующая трабла: В одной проге используются IO routines функции( AssignFile,Reset,Rewrite и тд ). Возмлжно ли, не прибегая к использованию File management routines, прочитать, например с болванки, файл с атрибутом Только чтение? Заранее благодарен!
Приветствую Вас, Кирилл! определяешь какую-нибудь переменную, которую видать и из цикла и из обработчика на кнопке. Перед началом цикла обнуляешь ее, в теле цикла прописываешь Application.ProcessMessages, в обработчике кнопки присваиваешь переменной другое значение, в условии цикла смотришь равна переменная исходному значению или нет Ответ отправлен: 22.09.2003, 14:07 Отправитель: ART_43 Отвечает Cybernetic Creature
Приветствую Вас, Кирилл! ..................... var BreakCycle:Boolean=False; procedure Cycle; begin Repeat .............. Until BreakCycle; end; procedure Button1Click(Sender: TObject); begin BreakCycle:=True end; procedure Form1FormCreate(Sender: TObject); begin Cycle; ....................... end; Ответ отправлен: 20.09.2003, 17:53 Отправитель: Cybernetic Creature Отвечает Marouder
Добрый день, Кирилл! Цикл надо создавать в отдельном потоке. Затем создать переменную типа Boolean и присвоить ей FALSE. А при нажатии на кнопку присваивать ей TRUE. а в теле цикла написать что-то типа if ButtonClicked then break; где ButtonClicked - имя созданной переменной. Простой пример - в приложении.
Приложение: Ответ отправлен: 21.09.2003, 13:17 Отправитель: Marouder Отвечает URiS
Добрый день, Кирилл! Делаешь так: ABC:=false; repeat //код твой... Application.ProcessMessages; until ABC; А в OnKeyDown пишешь: If key=27 then ABC:=true; Таким образом, при нажатии ESC цикл прекратится. С тебя 5 баксов. :)
Ответ отправлен: 21.09.2003, 19:53 Отправитель: URiS Отвечает Bob Johnson
Приветствую Вас, Кирилл! Остановить - break или goto за пределы циклы. Только второй вариант считается неприличным в структурном программировании, т.к. нарушает эту самую структуру. Получить статус клавиши можно по GetKeyState.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 21.09.2003, 20:54 Отправитель: Bob Johnson Отвечает THE_PRO
Добрый день, Кирилл! napisal na skoruyu ruku: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } a:boolean; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin repeat inc(i); Label1.Caption:=inttostr(i); until a=false end; procedure TForm1.Button2Click(Sender: TObject); begin a:=true end; procedure TForm1.FormCreate(Sender:
TObject); begin a:=true end; end.
Ответ отправлен: 24.09.2003, 10:15 Отправитель: THE_PRO
Вопрос № 946
Здравствуйте эксперты! Я перехожу с VB на Delphi и у меня возник вопрос. Нужны ли какие нибудь жополнительные файлы (типа msvbvm), который требуется для исполнения программ написанных на Delphi. Прогрмма не использует базы данных, COM-объекты, содержит несколько форм.
Здравствуйте, davr! в основном vcl.dcp, rtl.dcp Это только в том случае если вы выбрали Buld with runtime packages В меню ProjectOptionsPackages Если вы не выбрали эту опцию то никаких других файлов кроме .exe вам не понадобятся
Ответ отправлен: 22.09.2003, 15:29 Отправитель: Cybernetic Creature Отвечает ART_43
Приветствую Вас, davr! Скорее всего нет, но лучше проверить, т.к. некотрые компоненты используют специфические библиотеки которых может не оказаться на другом компьютере. Ответ отправлен: 22.09.2003, 14:08 Отправитель: ART_43 Отвечает Marouder
Доброе время суток, davr! Нет, не ненужны. Ответ отправлен: 21.09.2003, 13:18 Отправитель: Marouder Отвечает _vt
Доброе время суток, davr! Там это выставляется в настройках: если стоит галочка "Build with runtime packages", то будет нужен файл vclXX.bpl и в зависимости от использования другие... Лучше собирать программы без этой галочки, тогда им не будет надо ничего...
*** E-Man 1.5 (edition 04) - life is just a game...if you a student:) ***
Ответ отправлен: 21.09.2003, 22:57 Отправитель: _vt Отвечает Bob Johnson
Добрый день, davr! Да, если не укажешь обратного в свойствах проекта. Первый файл - это vcl60.bpl (для 6-й версии дельфи, ессно). Чтобы отключить, надо в свойствах убрать флажок "build with run time packages".
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 21.09.2003, 20:56 Отправитель: Bob Johnson Отвечает sir henry
Приветствую Вас, davr! Если не делаешь ничего экстраординарного, то экзешники Дельфи компилируются по принципу "Все свое ношу с собой". Но и величина при этом получается соответствующая :)). Ответ отправлен: 22.09.2003, 05:54 Отправитель: sir henry Отвечает URiS
Добрый день, davr! Нет. У Delphi таких файлов нет. Непривычным после "барсика" может показаться строгое определение типов (например, строчку нужно самостоятельно переводить в цифру), а также отсутствие default-параметров у компонентов (например, в Delphi ты не напишешь Edit1:='TEXT';, надо Edit1.Text:='TEXT';). Кстати, когда я раньше(давным давно) переходил с VB на Delphi, то факт отсутствия 1-мегабайтового файла-проводника для меня был ключевым... :) Смешно, конечно, я просто хотел делать "дискетные" программы. Как потом я понял, вместо микрософтского дерьма я получил очень даже мощный компилятор, сейчас юзаю только Delphi. Следующий на очереди - VC.
Ответ отправлен: 22.09.2003, 23:02 Отправитель: URiS Отвечает CJ
Доброе время суток, davr! Нет, не надо!
Ответ отправлен: 23.09.2003, 15:37 Отправитель: CJ Отвечает THE_PRO
Добрый день, davr! Pozdravlyayu, ti zdelal odin iz pravilnix viborov v svoyey jizni! Poskolku tebe bolshe ne predyotsya dumat o tom chto tvoya proqa mojet ne zarabotat na kompe jertvi... To yest tvoyey proge napisannoy na delphi ne nujni nikakiye lishniye dll fayli (yesli ti rabotayesh bez baz i otchetov)! Ответ отправлен: 24.09.2003, 09:54 Отправитель: THE_PRO
Вопрос № 947
Доброе время суток мужчины. Давно с вами не общался, надеюсь вы все живы и здоровы. Как и прежде есть один вопрос к вам. Поставил я себе операционную систему windows server 2003. Поставил все драйвера устройств (правда, ни на одном дистрибутиве нет драйверов для этой операционной системы). Все дивайсы работают нормально, операционка работает- как сволочь быстро. Но, есть одна проблема. Моя графическая карта ( nvidia geforce 2 mx 400)отказывается строить 3D графику. Пишет:no 3d devices was found. Может кто из вас сталкивался с такой проблемой? Помогите если есть желание.
Добрый день, alex! Ну, это скорее не ответ, а описание своей ситуации... Я тоже поставил 2k3 server и сразу обрадовался, что он сам нашел и поставил все дрова сам, даже на видео и на звук. Ну, настроив все, решил поставить CS и поиграть, но столкнулся с ошибкой "Your Video Don't Support This OpenGL Mode". Пошел на nvidia и скачал последний детонатор для 2000XP, поставил и о чудо, игра запустилась, но даже при 640х480 как пошаговая стратегия. Все настройки винды облазил, все настройки видюхи, биоса, матери... Закачал все новое, свеженькое - но "телега и поныне там". Пошел у людей спросить (программисты на OpenGL и 3D модельеры), так они уже давно извелись - винда хороша, а видео хромает... Пришли к одному выводу - данная ОС изначально позиционировалась для обработки данных и всего такого, так что нормального final release'а дров для видео
под эту ось ждать придётся долговато. P.S. Одна трабла, меня на windows update не пускают - говорят левый серийник, может там что есть. P.P.S. Если вдруг тебя пускают, брось на мэйл свой серийник или "активацию". Да, если у тебя лицензионка, то не надо :)))) Ответ отправлен: 21.09.2003, 02:27 Отправитель: Илья Отвечает _vt
Доброе время суток, alex! Это конечно очень отдаленно связано с VCL-программированием, но попробуй поменять драйвера на видеокарту... Кроме того, в серверных ОС это(3d-ускорение) вообще может быть запрещено...
*** E-Man 1.5 (edition 04) - life is just a game...if you a student:) ***
Ответ отправлен: 21.09.2003, 22:57 Отправитель: _vt
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.