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

Вниз

Глюк или руки?   Найти похожие ветки 

 
AVL1   (2003-02-13 02:17) [0]

Исходные данные:
Таблица Dbase III
ID Numeric 10 0
STR1 Character 60
APX Memo 10 0


Пишу:
procedure SaveArrayToStream(a: array of double; F:TBlobField);
var
Stream: TStream;
begin
Stream := TMemoryStream.Create;
try
Stream.Write(a[0],Length(a)*SizeOf(Double));
Stream.Seek(0,0);
F.LoadFromStream(Stream);
finally
Stream.Free;
end;
end;

function ReadArrayFromStream(F:TBlobField; L: integer): variant;
var
Stream: TStream;
a: array of double;
begin
try
Stream := TMemoryStream.Create;
SetLength(a, L);
F.SaveToStream(Stream);
Stream.Seek(0,0);
Stream.Read(a[0],Length(a)*SizeOf(Double));
result:=a;
finally
Stream.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
t: array of double;
begin
SetLength(t, 2);
t[0] := 59913.9481 ;
t[1] := 59913.9487 ;
table1.Edit;
Table1.FieldByName("ID").AsInteger:=1;
Table1.FieldByName("STR1").AsString:="Тест для 59913.9487";
SaveArrayToStream(t, table1.FieldByName("APX") as TMemoField);
.........
end;

Затем, читаю то что запихал в блоб-поле:

procedure TForm1.Button2Click(Sender: TObject);
var
t1: array of double;
begin
SetLength(t1, 2);
t1:= ReadArrayFromStream(table1.FieldByName("APX") as TMemoField, 2);
memo1.Lines.Add(floattostr(t1[0]));
memo1.Lines.Add(floattostr(t1[1]));
...
end;

Получаю результат:
59913,9481
2,71736105212686E-322

Изменяю 59913.9487 ну к примеру на 59913.94871 все Ok .

Меняю DBase III на DBase IV
с 59913.9487 все нормально, глюки выползают из других щелей...

Похоже что данные корежит именно при записи потока в поле BLOB т.е. во время отработки процедуры SaveArrayToStream.

Пожалуйста, подскажите где грабли? Спасибо.


 
AVL1   (2003-02-13 04:28) [1]

Не окунайте в тишину ... please.



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

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

Наверх




Память: 0.47 MB
Время: 0.013 c
1-75917
Vitus
2003-02-14 12:39
2003.02.24
Логины пользователей домена


1-76010
vogus
2003-02-12 19:17
2003.02.24
Почему MDIChild сначала появляется, а потом разворачивается


14-76171
Cosmic
2003-02-08 14:49
2003.02.24
О работе форума


3-75818
Larisa
2003-02-06 21:36
2003.02.24
При распечатке счетов через QuickReport печатается около 15


14-76134
korvin
2003-02-07 09:19
2003.02.24
Виртуальные диски - чтоб их черти ...