Форум: "Начинающим";
Текущий архив: 2007.07.08;
Скачать: [xml.tar.bz2];
ВнизЗапись и чтение Найти похожие ветки
← →
fd979 © (2007-06-14 09:23) [0]Товарищи..
Проблема заключается в следующем:
Строка преобразуется с помощью некой функции в набор всяких непонятных символов и записывается в базу. Потом считывая с этого поля преобразую обратно. Странно, что когда записываю в базу преобразованную строку сам, то есть обыкновенным копи-пейстом, при считывании обратно преобразуется правильно, а вот когда записываю с помощью запроса (не важно программно или из Куери Аналайзера), то при преобразовании обратно строка получается не правильной.
тип поля nvarchar.
← →
Anatoly Podgoretsky © (2007-06-14 09:31) [1]У тебя наверно ошибка в программе
← →
StriderMan © (2007-06-14 09:35) [2]типа шифрование?
покажи как пишешь
← →
fd979 © (2007-06-14 09:43) [3]
> Anatoly Podgoretsky © (14.06.07 09:31) [1]
> У тебя наверно ошибка в программе
Я тоже так думал. Но проверено - если не записывать в базу работает нормально. я думаю может при преобразовании получаются какие-то юникод символы.
← →
fd979 © (2007-06-14 09:44) [4]
> StriderMan © (14.06.07 09:35) [2]
> типа шифрование?
>
> покажи как пишешь
Ну в общем и целом с некоторыми изменениями базировано на стандартном алгоритме Борланда:function Encrypt(const InString:string; StartKey,MultKey,AddKey:Integer): string;
var
I : Integer;
begin
Result := "";
for I := 1 to Length(InString) do
begin
Result := Result + CHAR(Byte(InString[I]) xor (StartKey shr 8));
StartKey := (Byte(Result[I]) + StartKey) * MultKey + AddKey;
end;
end;
function Decrypt(const InString:string; StartKey,MultKey,AddKey:Integer): string;
var
I : Integer;
begin
Result := "";
for I := 1 to Length(InString) do
begin
Result := Result + CHAR(Byte(InString[I]) xor (StartKey shr 8));
StartKey := (Byte(InString[I]) + StartKey) * MultKey + AddKey;
end;
end;
← →
ЮЮ © (2007-06-14 10:11) [5]> Ну в общем и целом с некоторыми изменениями базировано на
> стандартном алгоритме Борланда:
> когда записываю с помощью запроса (не важно программно или
> из Куери Аналайзера),
Ну и как этот код применяется при использовании Куери Аналайзера? :)
> покажи как пишешь означает где и как ты эти функции используешь? Как понимаещь, Куери Аналайзеру пофиг на твои функции.
← →
fd979 © (2007-06-14 10:51) [6]Покажи как пишешь означает, по моему, покажи как преобразуешь строку, а не то как я записываю в базу. Обыкновенный инсерт. А аналайзер я упомянул, только из-за того, что попробовал вставить данные не только с помощью программы.
Insert INTO USR (UserName, PWD, LinkedUser, R1, R2, R3, SITES, email, mobile, phone) VALUES(
"хххххх",
"F3h2%6oOUU??",
"000008",
"F3u2b6i;#ЏЈH",
"F3u2b6i;#ЏЈH",
"F3u2b6i;#ЏЈH",
"SED;ERT;FFFG;TGHR",
Null,
Null,
Null)
← →
fd979 © (2007-06-14 10:52) [7]проблема в выделенном тексте...
← →
Плохиш © (2007-06-14 10:57) [8]
> fd979 © (14.06.07 10:51) [6]
Используй параметры.
← →
Desdechado © (2007-06-14 11:07) [9]> я думаю может при преобразовании получаются какие-то юникод символы
Как вариант - неверный чарсет у поля, куда азписываешь.
Но параметры использовать - без вариантов.
← →
ЮЮ © (2007-06-14 11:10) [10]> когда записываю в базу преобразованную строку сам, то есть
> обыкновенным копи-пейстом,
ты сервер, что ли? сам - это как?
> а вот когда записываю с помощью запроса
Insert INTO USR (UserName, PWD, LinkedUser, R1, R2, R3, SITES, email, mobile, phone) VALUES(
"хххххх",
"F3h2%6oOUU??",
"000008",
Encrypt("строка, подлежащая кодированию"),
> или из Куери Аналайзера
Измени алгоритм, чтобы после кодирования получались "печатные" символы, или используй CHAR() + CHAR() + ... для создания строк из непечатных символов, как если бы на делфи "ab"#10"cd"
← →
ЮЮ © (2007-06-14 11:13) [11]>
> Encrypt("строка, подлежащая кодированию"),
Перестарался. Естественно, параметр в самом запросе, а ему уже присваивать Encrypt()
← →
sniknik © (2007-06-14 11:16) [12]> получаются какие-то юникод символы.
обязательно получаются... ты же используешь
> тип поля nvarchar.
что означает юникод строку, и неявно означает что оно может и преобразовать к нему, если вдруг строка не в нем.
а она у тебя явно не в нем
> function Encrypt(const InString:string; StartKey,MultKey,AddKey:Integer): string;
> CHAR(Byte(InString[I]) xor (StartKey shr 8))
не боишься нулей, или др. управляющих НЕ символов? и что с ними думаешь будет при передаче в строку символов?
если уж делаешь так, что данные получаются не строковые, а бинарные то и пиши их в масив байт (varbinary), или блоб (image).
← →
fd979 © (2007-06-14 11:58) [13]Спасибо всем!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.07.08;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.041 c