Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.36 c
14-1127710725
Ega23
2005-09-26 08:58
2005.10.16
С днем рождения! 26 сентября


2-1124890165
NikNet
2005-08-24 17:29
2005.10.16
Если ли в DELPHI трех байтовй тип ?


1-1127349466
френк
2005-09-22 04:37
2005.10.16
Посоветуйте: Plugins...


1-1127320220
JJ
2005-09-21 20:30
2005.10.16
Размер программы в памяти


2-1126849897
worldmen
2005-09-16 09:51
2005.10.16
Полноэкранный режим





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский