Здравствуйте, Sergey Merkuriev, Вы писали:
SM>Есть процедура:
SM>procedure TZIbSql.SetParameter(SqlVar: PXSQLVAR; Value: variant);
SM>....
SM>case SqlVar.sqltype and (not 1) of
SM> SQL_TEXT, SQL_VARYING:
SM> begin
SM> TempStr := VarToStr(Value);
SM> SqlVar^.sqllen := Length(TempStr);
SM> ReallocMem(SqlVar^.sqldata, SqlVar^.sqllen + 1);
SM> if Length(TempStr) > 0 then
SM> Move(TempStr[1], SqlVar^.sqldata^, SqlVar^.sqllen);
Для начала, что касается
SQL_VARYING
Нужно выделять память sqlvar.sqllen+sizeof(short)
В первых двух байтах (short) указывается длина строки.
Сама строка идет после этих двух байт.
Нулевой символ не обязателен.
В sqlvar.sqllen указывается длина буфера
-- Пользователи не приняли программу. Всех пришлось уничтожить. --