Помогите ПлиЗ! неделю бьюсь над проблемой, ситуация такая:
на sql в некой таблице , в определённом поле лежат стринговые данные, а тип поля: image.
задача такова, что надо вытаскивать данные из sql при помощи asp, а asp должен эти данные передовать в Com объект(перекодировщик mime), а com в свою очередь передаёт обратно в asp который и отображает режультат на странице, сложность в следующем я не знаю как передать вданные из asp com обекту? Точнее кокой тип данных надо использовать в com.
Выглядит это примерно так
COM
interface
Idecod
decod(метод)
procedure Tdecod.decod(const Str: WideString(здесь как я понимаю загвоздка));
Size:integer;
begin
end;
какой тип выбрать? далее внутри я на основе STR должен сделать TStringstream(SremMY:=TStringstream.create(STR)) и рабоботать с ним.
подскажите ктонить плиЗЗЗЗ!
Re: SQL server + asp+COM(delphi) что то не получается
Здравствуйте, Аноним, Вы писали:
А>...сложность в следующем я не знаю как передать вданные из asp com обекту? Точнее кокой тип данных надо использовать в com.
ASP — он, в сущности, VBScript (ну, или Jscript). Все данные там — VARIANT. Внутри кода COM-сервера ты должен завпаковывать данные в VARIANT и распаковывать их оттуда.
GS
Re[2]: SQL server + asp+COM(delphi) что то не получается
От:
Аноним
Дата:
25.03.03 15:24
Оценка:
Здравствуйте, George Seryakov, Вы писали:
GS>Здравствуйте, Аноним, Вы писали:
А>>...сложность в следующем я не знаю как передать вданные из asp com обекту? Точнее кокой тип данных надо использовать в com.
GS>ASP — он, в сущности, VBScript (ну, или Jscript). Все данные там — VARIANT. Внутри кода COM-сервера ты должен завпаковывать данные в VARIANT и распаковывать их оттуда.
легко сказать а хоть примерчик? ПлЗ
Re[3]: SQL server + asp+COM(delphi) что то не получается
Здравствуйте, Аноним, Вы писали:
GS>>ASP — он, в сущности, VBScript (ну, или Jscript). Все данные там — VARIANT. Внутри кода COM-сервера ты должен завпаковывать данные в VARIANT и распаковывать их оттуда.
А>легко сказать а хоть примерчик? ПлЗ
Но компилировать и проверять мне лень. Примерно так:
ASP:
set o = CreateObject("<твой ProgId>")
o.SendString("STRING")
s = o.ReceiveString
o.SendLong(1234567)
l = o.ReceiveLong
o.SendObject(o)
set o2 = o.ReceiveObject
IDL выглядит так:
[id(1)] HRESULT SendString([in] VARIANT v);
[id(2)] HRESULT ReceiveString([out, retval] VARIANT *pv);
.. и все методы имеют такую сигнатуру, т.е. через VARIANT.
С++:
STDMETHODIMP CCoClass::SendString(VARIANT v)
{
if (v.vt == VT_BSTR) {
CComBSTR s = v.bstr;
// делаешь со строкой что надо
} else {
// ...
}
return S_OK;
}
STDMETHODIMP CCoClass::ReceiveString(VARIANT *pv)
{
CComVariant v;
v = CcomVariant("твоя строка");
v.Detach(*pv);
return S_OK;
}
GS
Re[4]: SQL server + asp+COM(delphi) что то не получается
Да, только TstringStream.create(v) должно возвращать вариант.
GS
Re[6]: SQL server + asp+COM(delphi) что то не получается
От:
Аноним
Дата:
25.03.03 16:29
Оценка:
Здравствуйте, George Seryakov, Вы писали:
GS>Здравствуйте, Аноним, Вы писали: А>>Прикольно Спасибо за ответ, получается мне можно работать с v как всёравно с чем, GS>Именно. Article 4. The Ultimate Data Type.
Спасибо буду читать!
А>>значит я могу просто сделать temp:=TstringStream.create(v)? или ? GS>Да, только TstringStream.create(v) должно возвращать вариант.
я не собираюсь ничего возвращить зачем? и кому возвращать? я просто создаю паток работаю с ним и прямо в com объекте делаю response.write('')
Re: SQL server + asp+COM(delphi) что то не получается
Здравствуйте, Аноним, Вы писали:
А>HI ALL!!!
А>Помогите ПлиЗ! неделю бьюсь над проблемой, ситуация такая:
А>на sql в некой таблице , в определённом поле лежат стринговые данные, а тип поля: image.
А>задача такова, что надо вытаскивать данные из sql при помощи asp, а asp должен эти данные передовать в Com объект(перекодировщик mime), а com в свою очередь передаёт обратно в asp который и отображает режультат на странице, сложность в следующем я не знаю как передать вданные из asp com обекту? Точнее кокой тип данных надо использовать в com. А>Выглядит это примерно так
VARIANT или _OLE-совместимые_ типы данных. Раз уж ты напропалую работаешь со строками, имеет смысл юзать юсключительно BSTR (в делфевой ипостаси — WideString), а VARIANT вредная штука.
D:
function Decode(const Data: WideString): WideString;
я наверно уже совсем заработался , дело в том что мне надо передать из asp в com данные уже в нормальном виде. Это означает то, что когда я данные вытаcкиваю из sql то они как я понимаю в бинармно виде(может и нет), так как когда я делаю response.write(s), где s это эти данные в страничке отображается поная ерунда(набор нечетабельных символов), а когда я делаю response.BinaryWrite только тогада всё нормально отображается, но меня не устравивает формат этих данных их ещё надо разобрать maim декодером(заголовки,текст,аттач,) который и исполнен в виде com объекта. Наверное надо оговориться, что в sql данные записываются так ParamByName('S').AsBlob:=mess1.Body.GetText, а Body: TstringList. Если я провельно понимаю(ПОПРАВИТЬ мне надо в com передовать или нормальные данные и делать в come STRLIST1.assigned('STR(то что я передал)'), или передовать как то в com объект уже нормальные данные типа(просто предположение) <%Binary(Maimdecod.decod(str))%>? посоветуйте плиззз!
Здравствуйте, George Seryakov, Вы писали:
GS>Здравствуйте, Аноним, Вы писали:
GS>>ASP — он, в сущности, VBScript (ну, или Jscript). Все данные там — VARIANT. Внутри кода COM-сервера ты должен завпаковывать данные в VARIANT и распаковывать их оттуда.
А>легко сказать а хоть примерчик? ПлЗ
GS>Но компилировать и проверять мне лень. Примерно так:
GS>ASP: GS>