Форум: "Начинающим";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
ВнизException Найти похожие ветки
← →
kblc © (2005-09-05 15:32) [0]Уважаемы мастера, у меня возникает Runtime error 216 и ещё что-то про borlandmm.dll . Работаю с COM-серверами.
Во всех проектах (только .dpr) подключена ShareMem (!!!) первым.
Из-за чего такое возможно?
← →
Digitman © (2005-09-05 15:47) [1]
> Во всех проектах (только .dpr) подключена ShareMem (!!!)
> первым
а зачем тебе понадобился ShareMem при такой ситуации ?
← →
kblc © (2005-09-05 15:48) [2]Потому что внутри COM-серверов идёт обмен большими строками и используються обшие ресурсы.
← →
Digitman © (2005-09-05 15:56) [3]
> kblc © (05.09.05 15:48) [2]
что значит "внутри" ?
и кому нужен такой СОМ-сервер, который требует borlandmm.dll ?
что, разве СОМ-сервер будет использоваться искл-но в хост-приложениях, написанных в Делфи/ВСВ ?
← →
kblc © (2005-09-05 16:05) [4]Я прошу прощения, но я честно говоря не в курсе где именно используется borlandmm.dll :(
Тогда такой вопрос:
Можно ли передавать большие строки не использую ShareMem?
Нужен ли он вообще?
_______
И всё же: как решить эту проблему?
← →
Джо © (2005-09-05 16:07) [5]
> [4] kblc © (05.09.05 16:05)
Может, использовать WideString?
Впрочем, не уверен.
← →
kblc © (2005-09-05 16:10) [6]offtopic: Конечно луше использовать PChar, но я не хочу слишком усложнять себе жизнь, всё-таки не просто же так string придумали
← →
wal © (2005-09-05 16:10) [7]
> Может, использовать WideString?
В СОМ-е есть спец. тип для строк. BSTR. Для Делфи он в WideString преобразуется.
С уважением.
← →
kblc © (2005-09-05 16:12) [8]т.е. мне необходимо все string и COM-сервере и клиенте перевести на WideString?
← →
Anatoly Podgoretsky © (2005-09-05 16:14) [9]kblc © (05.09.05 16:10) [6]
Не чтение документации не освобождает от ответственности.
string полностью совместим с PChar
← →
kblc © (2005-09-05 16:14) [10]Я ЗАПУТАЛСЯ(!!!).
У меня сейчас весит Runtime error 216(!) и я не знаю что с этим делать. И я очень хочу услышать от вас хоть какие-нибудь советы.
помогите пожалуйста.
← →
kblc © (2005-09-05 16:17) [11]Anatoly Podgoretsky: смешно ;) про их "совместимость" я знаю. Не раз уже с талкивался по молодости при работе с PChar "память не может быть read".
← →
GLFox © (2005-09-05 16:22) [12]Рекомендую прислушаться к следующему заявлению:
>wal © (05.09.05 16:10) [7]
А также почитать все таки спецификацию COM и возможно вот это: http://www.delphiplus.org/downloads/articles/interfacesrevisited.zip
← →
Anatoly Podgoretsky © (2005-09-05 16:22) [13]kblc © (05.09.05 16:17) [11]
Ты просто не умеешь их готовить.
← →
Digitman © (2005-09-05 16:26) [14]
> kblc © (05.09.05 16:17) [11]
расскажи лучше, зачем тебе вообще СОМ-сервер понадобился ...
чем обоснован выбор технологии ?
← →
Erik1 © (2005-09-05 16:28) [15]Одним словом Runtime error 216 скорее всего никак неотносится к ShareMem. ShareMem надо выкинуть из проектов, в TLB определить параметры в BSTR, при вызовах просто передовать в них обычные стриги.
← →
kblc © (2005-09-05 16:29) [16]Напишу через час - поехал домой после работы... :(
← →
kblc © (2005-09-05 18:30) [17]> Digitman © (05.09.05 16:26) [14]
Выбор технологи обосновам тем что:
1) программа собирается из маленьких кусочков, каждый из которых может взаимодействовать с любым другим.
2) другие программы могут использовать часть этих "кусочков"
И ещё. Я не пользуюсь объектами OLE автоматизации, т.к. возможно программа будет устанавливаться на Win95. Вот.
Сейчас попробую совет на счёт WideString; О результатах сообшу.
Может у кого ещё идеи есть?
← →
Джо © (2005-09-05 18:35) [18]
> Я не пользуюсь объектами OLE автоматизации, т.к. возможно
> программа будет устанавливаться на Win95.
Ну, есть же официальный Windows 95 OLE 32 Update.
← →
kblc © (2005-09-05 18:37) [19]Хорошо, я не пользуюсь объектами OLE автоматизации, т.к. возможно
программа будет устанавливаться на Win95 и потому что это просто не нужно в данны момент.
← →
Digitman © (2005-09-05 18:38) [20]
> 2) другие программы могут использовать часть этих "кусочков"
другие - ключевой момент.
это означает, что ты не вправе использовать специфичные для борландовских сред разработки типы данных, передаваемых параметрами в СОМ-вызовы и получаемых как результаты этих вызовов.
для того СОМ и была придумана, чтобы обеспечить легкую сопрягаемость и взаимодействие между программами, написанными в разных средах с разной спецификой
← →
kblc © (2005-09-05 18:49) [21]Хорошо, я изменю всё на WideString;
Исчезнет ли ошибка - напишу позже
← →
kblc © (2005-09-05 19:24) [22]И что толку?
Что WideString что string - одно и тоже (Из всех проектов убрал ShareMem). Но всё так же ничего не работает(!!!)
Помогите плиииз...
← →
debuger © (2005-09-05 20:22) [23]ну тут или справку почитать по ошибочке, или дебагом занятся или код приоткрыть, тут хоть и мастера, но далеко не телепаты.
← →
debuger © (2005-09-05 20:22) [24]ну тут или справку почитать по ошибочке, или дебагом занятся или код приоткрыть, тут хоть и мастера, но далеко не телепаты.
← →
kblc © (2005-09-05 21:23) [25]Вот на этом моменте случается:
procedure TStrParameters.DevideStrings(const sString: string; var arStrings: array of string);
procedure DelFirstSpaces(var sString: string);
var
i: Integer;
begin
if length(sString)>0 then
for i:=0 to length(sString)-1 do
if sString[i+1]<>" " then
break else
delete(sString,1,i+1);
end;
var
nParam: string;
i: WORD;
arrStrings: array of string;
begin
i:=0;
System.SetLength(arrStrings,MAX_PATH);
nParam:=sString;
DelFirstSpaces(nParam);
while (nParam>"") do
begin
if (nParam[1]=""") and (Pos(""",Copy(nParam,2,length(nParam)-1))>0) then
begin
arrStrings[i]:=Copy(nParam,2,Pos(""",Copy(nParam,2,length(nParam)-1))-1); <<- ошибка
Delete(nParam,1,length(arrStrings[i])+2); <<- ошибка
end else
if (Pos(" ",nParam)>0) then
begin
arrStrings[i]:=Copy(nParam,1,Pos(" ",nParam)-1);
Delete(nParam,1,Pos(" ",nParam)); <<- ошибка
end else
begin
arrStrings[i]:=nParam;
nParam:="";
end;
inc(i);
DelFirstSpaces(nParam);
end;
prParamCount:=i;
SetLength(arString,i);
if i>0 then
for i:=0 to prParamCount-1 do
arString[i]:=arrStrings[i];
SetLength(arrStrings,0);
end;
Ошибки типа : Invalid pointer operation || Access violation
Из-за чего это может случатся?
← →
Digitman © (2005-09-06 08:57) [26]покажи соответствующую интерфейсную декларацию ..
← →
kblc © (2005-09-06 09:51) [27]Это не интерфейс, это просто класс, когторый использует интерфейс
← →
kblc © (2005-09-06 14:41) [28]Это не интерфейс, это просто класс, когторый используетСЯ интерфейсом
← →
DesWind © (2005-09-06 17:43) [29]Такая ошибка может возникать если com-сервер незарегистрирован
← →
DesWind © (2005-09-06 17:46) [30]про ошибку 216
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.039 c