Вверх ↑
Ответов: 2125
Рейтинг: 159
#1: 2008-03-11 15:50:12 ЛС | профиль | цитата
Galkov писал(а):
tsdima, признавайся
KOLEdb.StringToOleStr - твоя работа ?

Никогда не трогал KOLEdb.
Когда я дорабатывал VBJScript, я вносил какие-то изменения в KOLComObj. Судя по подчерку, я изменил OleStrToStrVar, т.к. системная функция WideCharToStrVar (которая там была использована, наверное) в FPC глючная. А вот рядышком есть StringToOleStr, я её переделывать не стал. Она, кстати, использует системную функуцию FPC StringToWideChar, которая, возможно, работает нормально.
------------ Дoбавленo:

tsdima писал(а):
которая, возможно, работает нормально

Нифига, блин, не работает.
А если вот так, то работает:

#pas
function StringToLPOLESTR(const Source: string): POleStr;
var
SourceLen: Integer; Buffer: array of WideChar;
begin
SourceLen := Length(Source);
SetLength(Buffer, SourceLen+1);
//StringToWideChar(Source, Buffer, SourceLen); Buffer[SourceLen] := #0;
MultiByteToWideChar(0,0,@Source[1],SourceLen,Buffer,(SourceLen+1)*2);
Result := SysAllocString(Buffer);
end;

И ещё бага, вот исправленный вариант:

#pas
procedure THIVBJScript.SetScript;
var
Result: OleVariant;
ExcepInfo: TEXCEPINFO;
begin
CreateScriptEngine(TScriptLanguage(_prop_Language));
Me := TMe.Create(Self);
AddNamedItem('sys', SCRIPTITEM_ISVISIBLE, Me);
FParser.ParseScriptText(StringToOleStr(Value), nil, nil, nil, 0, 0, 0, Result, ExcepInfo);
end;
карма: 1

0