Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2011, 19:32   #51
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Попытка выложить превьюху статьи №2: http://dl.dropbox.com/u/201788/Article/Public.zip

Кому охота, можно пока вникать в уже написанное, пока я дописываю.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 25.12.2011, 22:34   #52
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

хм,
Цитата:
Например, вот три примера эквивалентных объявлений (т.е. они написаны по-разному, но представляют собой одно и то же):
procedure DoSomething; safecall;
function DoSomething: HRESULT; stdcall;
т.е. я объявляю procedure Test; safecall; а delphi переведёт это как function Test:HRESULT; stdcall; ?

Цитата:
Правило номер пять - все строки должны иметь тип WideString.
Я не сразу заметил эту строку =) Мб как-то выделить..
И дописать, что нужно подключить модуль менеджера памяти(при передаче строк).

А что делать, если плугинизация строится.... эмм, на delphi 5 или 7? Там есть WideString?
Человек_Борща вне форума Ответить с цитированием
Старый 25.12.2011, 23:01   #53
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Там есть WideString?
в шестерке есть, думаю и там есть.
Цитата:
И дописать, что нужно подключить модуль менеджера памяти(при передаче строк).
WideString<>string(никогда)
Цитата:
т.е. я объявляю procedure Test; safecall; а delphi переведёт это как function Test:HRESULT; stdcall; ?
да.
читать
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.12.2011, 03:09   #54
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

GunSmoker, Вдумчиво изучил пре-версию статьи =) С нетерпением ожидаю продолжения.
При компиляции примера из статьи(PluginAPI_1). при помощи xe2, выпадает
"Точка входа в процедуру GetErrorMode не найдена в библиотеке kernel32.dll"

Сабж происходит из конструктора Гл. формы:
Код:
procedure TMainForm.FormCreate(Sender: TObject);
begin
  SetErrorMode(GetErrorMode or SEM_NOOPENFILEERRORBOX or
    SEM_FAILCRITICALERRORS);
а Delphi 7 вообще лесом посылает т.к. понятия не имеет об этом GetErrorMode.

Delphi 7 не знает и об:
Код:
procedure TPluginManager.LoadPlugins(const AFolder, AFileExt: String);

var
  Path: String;
  SR: TSearchRec;
  Failures: TStringList;
  FailedPlugins: TStringList;
begin
  Path := IncludeTrailingPathDelimiter(AFolder);

  Failures := TStringList.Create;
  FailedPlugins := TStringList.Create;
  try
    if FindFirst(Path + '*.*', faNormal, SR) = 0 then

Последний раз редактировалось Человек_Борща; 26.12.2011 в 03:29.
Человек_Борща вне форума Ответить с цитированием
Старый 26.12.2011, 06:47   #55
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Попробуйте вместо faNormal использовать $00000080; Если пройдет, то скорее всего какой-то юнит не подключен.
Цитата:

GetErrorMode
Вроде винАпишная, также как и SetErrorMode. Может там скобки расставить?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 26.12.2011 в 06:51.
Utkin вне форума Ответить с цитированием
Старый 26.12.2011, 07:28   #56
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
я объявляю procedure Test; safecall; а delphi переведёт это как function Test:HRESULT; stdcall; ?
Не совсем.

Эти два куска кода генерируют один и тот же машинный код (в точке вызова).

Но safecall также автоматически обрабатывает ошибки, хотя это уже не имеет отношения к коду соглашения вызова.

Поэтому эти две конструкции эквивалентны, если ты говоришь о соглашении вызова (т.е. если функция объявлена по первому варианту, её можно вызвать, объявив по второму, и наоборот). Но эти две конструкции не эквивалентны, если ты говоришь про обработку ошибок - у них разное поведение: safecall обрабатывает ошибки самостоятельно, stdcall - вручную.

Цитата:
И дописать, что нужно подключить модуль менеджера памяти(при передаче строк).
Он не нужен - в этом весь смысл. В других языках нет никаких дельфийских модулей памяти.

Цитата:
эмм, на delphi 5 или 7? Там есть WideString?
WideString - это системный тип BSTR, часть COM. Поддержка COM в современном виде появилась в Delphi 3. Т.е. WideString как строка есть в D3+. Но даже в D2 вполне можно использовать системные функции по работе с BSTR - никто это не запрещает.

faNormal в D7 нет, но туда можно спокойно 0 передавать, т.к. faNormal и так по умолчанию включён. Я его явно написал, т.к. это с ним нагляднее.

С GetErrorMode подправлю. См. http://www.transl-gunsmoker.ru/2009/...post_7756.html
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 26.12.2011, 07:30   #57
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

P.S. Update 3 на XE2 стоит? Это к вопросу кривого объявления GetErrorMode.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 26.12.2011, 12:40   #58
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Плюх: http://www.gunsmoker.ru/2011/12/delphi.html

Вторая часть - где-нибудь в районе следующих выходных.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 26.12.2011, 15:06   #59
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Update 3 ещё не скачивал т.к. небыло нужды.
GunSmoker, благодарен за труд. Жду продолжения =)
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание программы на Delphi (возможно за вознаграждение) pr9n9 Фриланс 10 14.03.2011 13:17
Плагины для gta-vc? VintProg Gamedev - cоздание игр: Unity, OpenGL, DirectX 16 27.06.2010 10:18
подключение к Excel из delphi через ODBC.возможно ли это без глюков? betirsolt БД в Delphi 0 13.06.2010 01:05
Автосохранение исходников в Delphi. Это возможно? Kottik Софт 16 20.09.2009 17:36