Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не выполняется условие 
V
    Опции темы
RomanEEP
Дата 5.7.2010, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 18.5.2006
Где: Коломна

Репутация: 1
Всего: 8



Скомпилил dll заменив
if (Pos(stFunction, st) = 1) and (Length(stFunction) = Length(st)) then
на
 if st = stFunction then
Создал тестовый проект:
Код

program RunTest;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  PIClasses;

function PgiCheckMenuItem(stFunction: ansistring; RunMethod: TRunMethod;
  ParentVersion, ChildVersion: TVersion;
  stLinkName, DataBaseName, stCheckOut: ansistring): boolean; stdcall;
    external 'PgiExample.pgi';

begin
    PgiCheckMenuItem('menu_GetAttrList', nil, nil, nil, '', '', '')
end.

Усё работает идеально, условие проходит, что надо выполняет!

ЗЫ: Все компилил под D2010
ЗЗЫ: Для сравнения компилятор подставляет LStrEqual

Это сообщение отредактировал(а) RomanEEP - 5.7.2010, 08:47
PM MAIL   Вверх
Ptica_Oz
Дата 5.7.2010, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 1.3.2007

Репутация: нет
Всего: нет



Во вложении скриншот пошаговой отладки.

Цитата(bems @  3.7.2010,  21:30 Найти цитируемый пост)
апдейты среды (у меня 4/5)

у меня тоже

может настройки компилятора изменить?...


Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  ___.PNG 109,69 Kb
PM MAIL   Вверх
bems
Дата 5.7.2010, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Как это вы передаете AnsiString в dll без ShareMem?
А вызывающий код в чем склмпилирован? Не в доюникодной версии ли?

Это сообщение отредактировал(а) bems - 5.7.2010, 14:43


--------------------
Обижено школьников: 8
PM MAIL   Вверх
CodeMonkey
Дата 5.7.2010, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89



PgiCheckMenuItem - это не Лоцман-ли? Он же в ANSI версии Delphi собран. Забудьте про Unicode и Delphi 2009/2010 - там такой кривой интерфейс с плагинами, что по-другому никак.

Добавлено через 2 минуты и 37 секунд
P.S. Во-первых, внутреннее устройство AnsiString в D2009/2010 <> устройства AnsiString в D2007 и ниже. Во-вторых, там исключения передаются через границы модулей - т.е. ваш код в D2009/2010 ловит исключение-объект из D2007 или ниже - это не будет работать, ибо структура объектов у этих Delphi разная.

Добавлено через 3 минуты и 28 секунд
P.P.S. Вот, что получается, когда экономят деньги на нормальных программистах и сажают студентов писать софт.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Ptica_Oz
Дата 5.7.2010, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 1.3.2007

Репутация: нет
Всего: нет



Цитата(bems @  5.7.2010,  14:41 Найти цитируемый пост)
А вызывающий код в чем склмпилирован? Не в доюникодной версии ли?

угу, кажется в Delphi 7

Цитата(CodeMonkey @  5.7.2010,  15:00 Найти цитируемый пост)
PgiCheckMenuItem - это не Лоцман-ли?

он самый... через COM интерфейс на Delphi с ним не доводилось работать?
PM MAIL   Вверх
CodeMonkey
Дата 5.7.2010, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89



Цитата(Ptica_Oz @  5.7.2010,  17:17 Найти цитируемый пост)
через COM интерфейс на Delphi с ним не доводилось работать? 

А в чём вопрос-то?

Добавлено через 8 минут и 10 секунд
P.S. А это случайно я не с вами пересекался на DelphiKingdom по вопросу Компаса и печати на виртуальном принтере? smile


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Ptica_Oz
Дата 16.7.2010, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 1.3.2007

Репутация: нет
Всего: нет



сделала так:

Код

function Function(AFunction: PAnsiChar; ...): Boolean;
var
    LFuncName: String;
begin
        ...
        LFuncName := String(AFunction);
        if LFuncName = 'ProjectList' then
             ...


Это сообщение отредактировал(а) Ptica_Oz - 16.7.2010, 15:10
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0492 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.