| |
| | | RomanRom2, здравствуйте.
Хотел бы задать вопрос, как специалисту по оbject Pascal. Сам пишу на паскале всего две недели :)
Мне нужно создать свой класс в WMI. Но, но я столкнулся с проблемой. Проблема в следующем - у объекта SWbemObjectPath по мимо прочих есть свойство Class и если его вызвать понятное дело получаю синтаксическую ошибку, остальные Ок. Методов типа GetProperty у этого объекта нет.
Следует так же отметить, что ипользую OLE технологию и переменные OLEVariant. Приложил файлик с кодом. Ошибка тут: FWbemObjectPath.Class;
Возможно, решение в использовании правильных типов данных а не var. Тогда пойду гуглить на тему реализации типов WMI :)
Спасибо. |
| | | | | ну, разумеется, слово class является ключевым. ключевые слова (такие как function, begin, then) использовать нельзя в коде. к примеру в вов тоже есть класс на ряду с расой, уровнем, хелсами, статами и т.п., я эту проблему раньше решал как то глупо, называл поле _Class, Clas, Klass и т.п., но в результате я подсмотрел как сделано в коде у самих близзов:
int health; int power[4]; int maxHealth; int maxPower[4]; int level; int factionTemplate; char race; char classId; char sex; char displayPower; int stats[5]; int baseStats[5];
так я и поступил:
TCharEnumInfo = record GUID: uInt64; name: string; raceID: byte; classID: byte; sexID: byte; skinID: byte; faceID: byte;
предлагаю вам поступить так же :)
ЗЫ. если честно, я не очень понял вопроса :) вы импортируете сишный код или пишите обертку для dll? насколько я знаю при написании враперов не обязательно точно следовать названиям функций. |
| | | | | Я бы не назвал это обёрткой потому что всё уже реализовано. После подключения ActiveX, Variants, ComObj можно обращаться к WMI и создавать любые объекты и вызывать их свойства, вот только майкрософт не для синтаксиса паскаля код делали и свойства с именем Class явление нормальное - вот этот объект http://msdn.microsoft.com/en-us/library/aa393746%28v=vs.85%29.aspx
Погуглив обнаружил готовую реализацию классов WMI: http://code.google.com/p/delphi-wmi-class-generator/wiki/WbemScripting_TLB
Вопрос был скорее, да, как при импорте сишного кода обойти ситуацию с именами полей класса являющихся ключевыми для паскаля. |
| | | | | RomanRom2, а возможно ли создать приложение без формы, т.е. вообще не используя forms. Объясню, написал программу (не сервис) которая время от времени запускается неким сервисом для синхронизации данных. Форму я конечно скрыл Application.ShowMainForm:= False, но хочется пойти дальше и выкинуть forms вообще, для уменьшения размера .exe Попробовал создать проект программы всё равно консоль появляется (использую Lazarus, по сути тоже Delphi)...
И еще вопрос, как правильно в дельфи RetCode делать. Попробовал в эксепшен поставить ExitCode := 777; но вернулся 0, возможно из-за того, что я делаю Application.Terminate; |
| | | | | ну первая же ссылка в гугле :) http://delphi.about.com/od/delphitips2008/qt/no_main_form.htm
насчет выхода сделай следующее: halt(777); |
| |
|
| |