SQL server + asp+COM(delphi) что то не получается
От: Аноним  
Дата: 25.03.03 13:02
Оценка:
HI ALL!!!

Помогите ПлиЗ! неделю бьюсь над проблемой, ситуация такая:

на 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) что то не получается
От: George Seryakov Россия  
Дата: 25.03.03 14:47
Оценка:
Здравствуйте, Аноним, Вы писали:

А>...сложность в следующем я не знаю как передать вданные из 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) что то не получается
От: George Seryakov Россия  
Дата: 25.03.03 15:39
Оценка:
Здравствуйте, Аноним, Вы писали:

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) что то не получается
От: Аноним  
Дата: 25.03.03 15:47
Оценка:
GS>ASP:
GS>
GS>set o = CreateObject("<твой ProgId>")

GS>o.SendString("STRING")
GS>s = o.ReceiveString

GS>o.SendLong(1234567)
GS>l = o.ReceiveLong

GS>o.SendObject(o)
GS>set o2 = o.ReceiveObject
GS>


GS>IDL выглядит так:


GS>[midl]

GS>[id(1)] HRESULT SendString([in] VARIANT v);
GS>[id(2)] HRESULT ReceiveString([out, retval] VARIANT *pv);

Прикольно Спасибо за ответ, получается мне можно работать с v как всёравно с чем, значит я могу просто сделать temp:=TstringStream.create(v)? или ?
Re[5]: SQL server + asp+COM(delphi) что то не получается
От: George Seryakov Россия  
Дата: 25.03.03 15:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Прикольно Спасибо за ответ, получается мне можно работать с v как всёравно с чем,


Именно. Article 4. The Ultimate Data Type.

А>значит я могу просто сделать temp:=TstringStream.create(v)? или ?


Да, только 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) что то не получается
От: Dmitry Baranov  
Дата: 25.03.03 21:39
Оценка:
Здравствуйте, Аноним, Вы писали:

А>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;

IDL:
HRESULT Decode([in] BSTR Data, [out, retval] *pResult);
Re: и опять я вернулся
От: Аноним  
Дата: 27.03.03 18:23
Оценка:
HI ALL!!! сновоа

я наверно уже совсем заработался , дело в том что мне надо передать из 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))%>? посоветуйте плиззз!
Re[2]: и опять я вернулся
От: Shile Россия www.ctinet.ru
Дата: 28.03.03 12:23
Оценка:
Здравствуйте, Аноним, Вы писали:

А>HI ALL!!! сновоа


нунунунунунун подскажите
Re[4]: SQL server + asp+COM(delphi) что то не получается
От: Shile Россия www.ctinet.ru
Дата: 09.04.03 13:21
Оценка:
Здравствуйте, George Seryakov, Вы писали:

GS>Здравствуйте, Аноним, Вы писали:


GS>>ASP — он, в сущности, VBScript (ну, или Jscript). Все данные там — VARIANT. Внутри кода COM-сервера ты должен завпаковывать данные в VARIANT и распаковывать их оттуда.


А>легко сказать а хоть примерчик? ПлЗ


GS>Но компилировать и проверять мне лень. Примерно так:


GS>ASP:

GS>
GS>set o = CreateObject("<твой ProgId>")

GS>o.SendString("STRING")
GS>s = o.ReceiveString

GS>o.SendLong(1234567)
GS>l = o.ReceiveLong

GS>o.SendObject(o)
GS>set o2 = o.ReceiveObject
GS>


Это всё хорошо а внутри объекта что мне сделать? если это мне надо привети к TStringList&
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.