![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Exception [D7, Win95/98, WinME, WinXP]
kblc © (2005-09-05 15:32:00)Уважаемы мастера, у меня возникает Runtime error 216 и ещё что-то про borlandmm.dll . Работаю с COM-серверами.
Во всех проектах (только .dpr) подключена ShareMem (!!!) первым.
Из-за чего такое возможно?
DesWind (2005-09-06 17:46:00) [1]про ошибку 216
DesWind (2005-09-06 17:43:00) [2]Такая ошибка может возникать если com-сервер незарегистрирован
kblc (2005-09-06 14:41:00) [3]Это не интерфейс, это просто класс, когторый использует СЯинтерфейсом
kblc (2005-09-06 09:51:00) [4]Это не интерфейс, это просто класс, когторый использует интерфейс
Digitman (2005-09-06 08:57:00) [5]покажи соответствующую интерфейсную декларацию ..
kblc (2005-09-05 21:23:00) [6]Вот на этом моменте случается:
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
Из-за чего это может случатся?
debuger (2005-09-05 20:22:00) [7]ну тут или справку почитать по ошибочке, или дебагом занятся или код приоткрыть, тут хоть и мастера, но далеко не телепаты.
debuger (2005-09-05 20:22:00) [8]ну тут или справку почитать по ошибочке, или дебагом занятся или код приоткрыть, тут хоть и мастера, но далеко не телепаты.
kblc (2005-09-05 19:24:00) [9]И что толку?
Что WideString что string - одно и тоже (Из всех проектов убрал ShareMem). Но всё так же ничего не работает(!!!)
Помогите плиииз...
kblc (2005-09-05 18:49:00) [10]Хорошо, я изменю всё на WideString;
Исчезнет ли ошибка - напишу позже
Digitman (2005-09-05 18:38:00) [11]
> 2) другиепрограммы могут использовать часть этих "кусочков"
другие- ключевой момент.
это означает, что ты не вправе использовать специфичные для борландовских сред разработки типы данных, передаваемых параметрами в СОМ-вызовы и получаемых как результаты этих вызовов.
для того СОМ и была придумана, чтобы обеспечить легкую сопрягаемость и взаимодействие между программами, написанными в разных средах с разной спецификой
kblc (2005-09-05 18:37:00) [12]Хорошо, я не пользуюсь объектами OLE автоматизации, т.к. возможно
программа будет устанавливаться на Win95 и потому что это просто не нужно в данны момент.
Джо (2005-09-05 18:35:00) [13]
> Я не пользуюсь объектами OLE автоматизации, т.к. возможно
> программа будет устанавливаться на Win95.
Ну, есть же официальный Windows 95 OLE 32 Update.
kblc (2005-09-05 18:30:00) [14]> Digitman © (05.09.05 16:26) [14]
Выбор технологи обосновам тем что:
1) программа собирается из маленьких кусочков, каждый из которых может взаимодействовать с любым другим.
2) другие программы могут использовать часть этих "кусочков"
И ещё. Я не пользуюсь объектами OLE автоматизации, т.к. возможно программа будет устанавливаться на Win95. Вот.
Сейчас попробую совет на счёт WideString; О результатах сообшу.
Может у кого ещё идеи есть?
kblc (2005-09-05 16:29:00) [15]Напишу через час - поехал домой после работы... :(
Erik1 (2005-09-05 16:28:00) [16]Одним словом Runtime error 216 скорее всего никак неотносится к ShareMem. ShareMem надо выкинуть из проектов, в TLB определить параметры в BSTR, при вызовах просто передовать в них обычные стриги.
Digitman (2005-09-05 16:26:00) [17]
> kblc © (05.09.05 16:17) [11]
расскажи лучше, зачем тебе вообще СОМ-сервер понадобился ...
чем обоснован выбор технологии ?
Anatoly Podgoretsky (2005-09-05 16:22:00) [18]kblc © (05.09.05 16:17) [11]
Ты просто не умеешь их готовить.
GLFox (2005-09-05 16:22:00) [19]Рекомендую прислушаться к следующему заявлению:
>wal © (05.09.05 16:10) [7]
А также почитать все таки спецификацию COM и возможно вот это: http://www.delphiplus.org/downloads/articles/interfacesrevisited.zip
kblc (2005-09-05 16:17:00) [20]Anatoly Podgoretsky: смешно ;) про их "совместимость" я знаю. Не раз уже с талкивался по молодости при работе с PChar "память не может быть read".