Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.05;
Скачать: CL | DM;

Вниз

Delphi7 + SQL   Найти похожие ветки 

 
Nikolas_Spock   (2003-12-10 01:42) [0]

Задача:
Имееются 2 программы, написанные на Delphi 7 и Microsoft SQL Server 7.0
Первая программа должна помещать в таблицу сервера строку, длиной 1024, каждый элемент которой может принимать всего 256 значений.

Вот кусок кода ПЕРВОЙ программы, где это должно делаться:

..........
var sSQL:string;
FileArray: array [0..1023] of integer;
........
With MainForm.Query1 do
begin
SQL.Clear;
sSQL:="Insert into OscillogramsDATA (DATA1) Values ("

for k:=0 to 1023 do
begin
sSQL:=sSQL+"CHAR("+IntToStr(FileArray[k])+")+";
end;
sSQL:=sSQL+"CHAR("+IntToStr(FileArray[1056])+"),";
Sql.Add(sSql);
execSQL;
close;
end;

В таблице эта строка хранится в виде char(1024)

Теперь вторая программа должна наоборот - считывать эти char"ы и возвращать численные значения формата integer:

..........
for k:=1 to 1024 do
begin
DataArray[k-1]:=Ord(OscDataSource.DataSet.Fields[7].asString[k]);
end;
..........
Как все это дело работает: Неправильно. Вернее SQL - заппрс посылается правильно и возвращаются данные, но они СОВЕРШЕННО не те, вернее наблюдается такая картина: из этих 1024-х чисел всего около 200 верные.
Если понадобятся дополнительные уточнения - пишите сюда...


 
ЮЮ ©   (2003-12-10 02:41) [1]

а ты уверен, что length(OscDataSource.DataSet.Fields[7].asString) = 255 ? При записи ведь может и Сhar(0) закрасться


 
Nikolas_Spock   (2003-12-10 03:27) [2]

символа Char(0) там почти не встречается. К тому же часть данных (где-то посередине) правильна...
так и непойму что делать


 
Кщд   (2003-12-10 06:16) [3]

"CHAR("+IntToStr(FileArray[k])+")+";
и это "CHAR("+IntToStr(FileArray[1056])+"),";

и почему не сделать просто chr(FileArray[k])?


 
Danilka ©   (2003-12-10 08:53) [4]

во-первых, зачем вообще: array of integer, если нужны байты? integer - в 4 раза больше..

во-вторых, неужеле в МС-Скуле нет бинарного типа данных? Тебе-ведь нужнен именно он, а не char. Честно говоря, с МС-Скулем не работал, но с чаром у тебя может-быть всякие преобразования идут, перекодировка из одной кодовой таблицы в другую.

[3] Кщд (10.12.03 06:16)
будет ошибка, когда встретится символ кавычки, например.


 
Ega23 ©   (2003-12-10 09:15) [5]


> во-вторых, неужеле в МС-Скуле нет бинарного типа данных?
>

Канэшна эст! BLOB это. С ним и надо работать. Хотя и со стокой можно, но это поездка из Москвы в Питер через Токио.



Страницы: 1 вся ветка

Текущий архив: 2004.01.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
1-11916
Крутыш
2003-12-21 13:24
2004.01.05
Как отменить нажатие определённой клавиши в DbGrid?


14-12047
Denis_Ac
2003-12-11 10:08
2004.01.05
Компонент


1-11920
k_len
2003-12-22 09:31
2004.01.05
непечатные символы


3-11813
vlgrig1961
2003-12-10 08:17
2004.01.05
Вопрос по TSession.GetTableNames в Oracle8


1-11877
SashaTihonov
2003-12-18 15:19
2004.01.05
Пржалуйста можно пример с TerminateProcess